Testing the SD_card driver in Odroid-X2
Humberto López León
humberto at ...210...
Fri Sep 11 21:58:10 CEST 2015
Hi Jamey,
On 09/03/2015 04:40 PM, Jamey Sharp wrote:
> On Thu, Sep 3, 2015 at 11:21 AM, Humberto López León <humberto at ...210...> wrote:
>> Apparently the test fails to make the comparison between the read and
>> written. Personally I think the problem is in writing, using the FAT32
>> port could read from a file that was on the SD card without problems,
>> but the test failed when trying to create a file.
>>
>> Anyone have any suggestions of what may be affecting writing?
> SD cards can have a physical write-protect switch on them, right? Have
> you checked if your card is write-protected?
I checked the physical write-protect switch and it is not activated.
Also, I tried to write to the SD card with the "dd" command and it
worked properly.
Based on the example "repos/os/src/drivers/sd_card/OMAP4/bench" I
implemented an application to read from the SD Card and one for writing
it. Both applications create an instance of the SDHCI driver and use the
functions read and write respectively.
To check the read operation, I used the tool dd (Linux command: echo "MY
TEXT" | sudo dd of=/dev/sdb bs=512 count=1) to write to the SD card the
string "MY TEXT" which was printed correctly using the application that
I implemented for reading from the SD card. Thus I checked that the
reading operation in SDHCI protocol, implemented for Raspberry Pi, work
properly in the ODROID-X2 (Exynos4412).
This is the serial output for read aplication after writing "MY TEXT"
in the SD card with the tool dd (Linux command):
Genode 15.05-176-g7df72d4 <local changes>
int main(): --- create local services ---
int main(): --- start init ---
int main(): transferred 2027 MB to init
int main(): --- init created, waiting for exit condition ---
[init] Could not open ROM session for module "ld.lib.so"
[init -> platform_drv] --- Odroid-x2 platform driver ---
[init -> sd_card_read] --- Exynos4 SD card read test ---
[init -> platform_drv] Dentro del constructor CMU
[init -> platform_drv] Changing CPU frequency to 1400000000
[init -> platform_drv] End of Changing CPU frequency to 1400000000
[init -> platform_drv] Saliendo del constructor CMU
[init -> platform_drv] Entrando del constructor PMU
[init -> platform_drv] Saliendo del constructor PMU
[init -> platform_drv] --- Odroid-x2 platform driver. Done ---
[init -> sd_card_read] CID: 0x744a4553 0x44432020 0x1033005b 0x8700e100
[init -> sd_card_read] RCA: 0xb368
[init -> sd_card_read] SD card detected
[init -> sd_card_read] capacity: 7695 MiB
[init -> sd_card_read]
[init -> sd_card_read] -- Reading from SD card --
[init -> sd_card_read]
[init -> sd_card_read] Card content:
[init -> sd_card_read] Element 0: M
[init -> sd_card_read] Element 1: Y
[init -> sd_card_read] Element 2:
[init -> sd_card_read] Element 3: T
[init -> sd_card_read] Element 4: E
[init -> sd_card_read] Element 5: X
[init -> sd_card_read] Element 6: T
[init -> sd_card_read]
[init -> sd_card_read] --- Exynos4 SD card Read Test finished ---
To check the write operation, I used the tool dd (Linux command: sudo dd
if=/dev/sdb bs=512 count=1 | od -a) to read the contents of the SD card.
This command starts reading from the beginning of the SD card and the
application that I implemented to write also writes from the beginning.
In this case, the dd command output does not match what the application
should write. Thus I find that the driver does not perform the write
operation correctly.
This is the serial output for write aplication :
Genode 15.05-176-g7df72d4 <local changes>
int main(): --- create local services ---
int main(): --- start init ---
int main(): transferred 2027 MB to init
int main(): --- init created, waiting for exit condition ---
[init] Could not open ROM session for module "ld.lib.so"
[init -> platform_drv] --- Odroid-x2 platform driver ---
[init -> sd_card_write] --- Exynos4 SD card write test ---
[init -> platform_drv] Dentro del constructor CMU
[init -> platform_drv] Changing CPU frequency to 1400000000
[init -> platform_drv] End of Changing CPU frequency to 1400000000
[init -> platform_drv] Saliendo del constructor CMU
[init -> platform_drv] Entrando del constructor PMU
[init -> platform_drv] Saliendo del constructor PMU
[init -> platform_drv] --- Odroid-x2 platform driver. Done ---
[init -> sd_card_write] CID: 0x744a4553 0x44432020 0x1033005b 0x8700e100
[init -> sd_card_write] RCA: 0xb368
[init -> sd_card_write] SD card detected
[init -> sd_card_write] capacity: 7695 MiB
[init -> sd_card_write]
[init -> sd_card_write] -- Writing to SD card --
[init -> sd_card_write]
[init -> sd_card_write] It was written in the SD card:
[init -> sd_card_write] Elements to write 0: a
[init -> sd_card_write] Elements to write 1: b
[init -> sd_card_write] Elements to write 2: c
[init -> sd_card_write] Elements to write 3: d
[init -> sd_card_write]
[init -> sd_card_write] --- Exynos4 SD card Read Test finished ---
This is the result of the tool dd (Linux command) to read from the SD
card after running the write application:
0000000 V f v D nul nul nul nul nul nul nul nul nul nul nul nul
This is the serial output for read aplication after running the write
application:
Genode 15.05-176-g7df72d4 <local changes>
int main(): --- create local services ---
int main(): --- start init ---
int main(): transferred 2027 MB to init
int main(): --- init created, waiting for exit condition ---
[init] Could not open ROM session for module "ld.lib.so"
[init -> platform_drv] --- Odroid-x2 platform driver ---
[init -> sd_card_read] --- Exynos4 SD card read test ---
[init -> platform_drv] Dentro del constructor CMU
[init -> platform_drv] Changing CPU frequency to 1400000000
[init -> platform_drv] End of Changing CPU frequency to 1400000000
[init -> platform_drv] Saliendo del constructor CMU
[init -> platform_drv] Entrando del constructor PMU
[init -> platform_drv] Saliendo del constructor PMU
[init -> platform_drv] --- Odroid-x2 platform driver. Done ---
[init -> sd_card_read] CID: 0x744a4553 0x44432020 0x1033005b 0x8700e100
[init -> sd_card_read] RCA: 0xb368
[init -> sd_card_read] SD card detected
[init -> sd_card_read] capacity: 7695 MiB
[init -> sd_card_read]
[init -> sd_card_read] -- Reading from SD card --
[init -> sd_card_read]
[init -> sd_card_read] It was written in the SD card:
[init -> sd_card_read] Elements to write 0: V
[init -> sd_card_read] Elements to write 1: f
[init -> sd_card_read] Elements to write 2: v
[init -> sd_card_read] Elements to write 3: D
[init -> sd_card_read]
[init -> sd_card_read] --- Exynos4 SD card Read Test finished ---
Any recommendation?
Where I could study in depth the SDHCI controller specification?
The SDHCI controller in Genode was originally implemented for Raspberry
Pi board, but I have not found any section of code that is
platform-dependent, except the memory map. In addition to the memory
map, I need to change something in the implementation of SDHCI?
Regards,
Humberto.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20150911/b87b7a0b/attachment.html>
More information about the users
mailing list