[U-Boot] STM32F7 SD/MMC Card Driver - Testing/Review

Hey everyone,
I'm currently working on a SD / MMC Card driver for the stm32f746g-disco Board. You can find my actual very early work right here on my github repository: [0]
Currently I'm getting errors that are not reproducible:
- Errors on sending different commands (happens somtimes but randomly)
- Errors at CMD 17 & 18 reading procedures
And sometimes works everything without any problems....
Right now I think that my hardware got broken (but I'm not sure). It would be nice if someone could test the driver and send me the log. A small code review would help me also.
Thanks in advance!
Best regards,
Philipp Rossak
[0] https://github.com/embed-3d/stm32_mmc_driver/tree/stm32f7_mmc_hw_testing

Hi Philipp,
On 03/22/2017 09:27 AM, Philipp Rossak wrote:
Hey everyone,
I'm currently working on a SD / MMC Card driver for the stm32f746g-disco Board. You can find my actual very early work right here on my github repository: [0]
Currently I'm getting errors that are not reproducible:
Errors on sending different commands (happens somtimes but randomly)
Errors at CMD 17 & 18 reading procedures
If you can also share the log, it's helpful to check your problem. I don't have board to test yours, but i can check your driver as code level.
Best Regards, Jaehoon Chung
And sometimes works everything without any problems....
Right now I think that my hardware got broken (but I'm not sure). It would be nice if someone could test the driver and send me the log. A small code review would help me also.
Thanks in advance!
Best regards,
Philipp Rossak
[0] https://github.com/embed-3d/stm32_mmc_driver/tree/stm32f7_mmc_hw_testing
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot

Hi Jaehoon,
Thanks for that hint!
I uploaded two logs to pastebin.
Log [1] is a sandisk ultra 32gb sd card. This time I didn't got it work properly.
Log [2] is from an other 2gb sd card where I pressed the reset button until I received data from CMD 17 command.
Right now there are a lot of debug outputs, to make it for me easy for me to find the errors. The most of them will be removed later.
Best Regards,
Philipp Rossak
[1] http://pastebin.com/LcSSmBfp
[2] http://pastebin.com/zRbRMXtE
On 22.03.2017 01:51, Jaehoon Chung wrote:
Hi Philipp,
On 03/22/2017 09:27 AM, Philipp Rossak wrote:
Hey everyone,
I'm currently working on a SD / MMC Card driver for the stm32f746g-disco Board. You can find my actual very early work right here on my github repository: [0]
Currently I'm getting errors that are not reproducible:
Errors on sending different commands (happens somtimes but randomly)
Errors at CMD 17 & 18 reading procedures
If you can also share the log, it's helpful to check your problem. I don't have board to test yours, but i can check your driver as code level.
Best Regards, Jaehoon Chung
And sometimes works everything without any problems....
Right now I think that my hardware got broken (but I'm not sure). It would be nice if someone could test the driver and send me the log. A small code review would help me also.
Thanks in advance!
Best regards,
Philipp Rossak
[0] https://github.com/embed-3d/stm32_mmc_driver/tree/stm32f7_mmc_hw_testing
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot

Hi Philipp,
On 03/22/2017 10:38 AM, Philipp Rossak wrote:
Hi Jaehoon,
Thanks for that hint!
I uploaded two logs to pastebin.
Log [1] is a sandisk ultra 32gb sd card. This time I didn't got it work properly.
Log [2] is from an other 2gb sd card where I pressed the reset button until I received data from CMD 17 command.
Right now there are a lot of debug outputs, to make it for me easy for me to find the errors. The most of them will be removed later.
Best Regards,
Philipp Rossak
In Log [1],
mmc 0, cmd 6(0x00000446), arg 0x00fffff1 START DATA TRANSFER CMD: 6 Timeout STA2: 00202040------------------ END DATA TRANSFER Ret: -110 - STA 00202540
It seems timeout error, right? As i know, CMD6 doesn't have any data.. Even if didn't check your source code..i guess that you need to check whether it's waiting for completing data or not. (or check the register about interrupt e.g, end of data interrupt..?)
In Log [2],
It seems to fail the getting sd status...also timeout.. I need to check your source code..after that, i will review more..
Best Regards, Jaehoon Chung
[2] http://pastebin.com/zRbRMXtE
On 22.03.2017 01:51, Jaehoon Chung wrote:
Hi Philipp,
On 03/22/2017 09:27 AM, Philipp Rossak wrote:
Hey everyone,
I'm currently working on a SD / MMC Card driver for the stm32f746g-disco Board. You can find my actual very early work right here on my github repository: [0]
Currently I'm getting errors that are not reproducible:
Errors on sending different commands (happens somtimes but randomly)
Errors at CMD 17 & 18 reading procedures
If you can also share the log, it's helpful to check your problem. I don't have board to test yours, but i can check your driver as code level.
Best Regards, Jaehoon Chung
And sometimes works everything without any problems....
Right now I think that my hardware got broken (but I'm not sure). It would be nice if someone could test the driver and send me the log. A small code review would help me also.
Thanks in advance!
Best regards,
Philipp Rossak
[0] https://github.com/embed-3d/stm32_mmc_driver/tree/stm32f7_mmc_hw_testing
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot

Hi Jaehoon,
Yes that what you mentioned is a timeout error. That error occurs if I don't get a response from several Hardware/error flags (a counter reaches a limit).
As you mentioned the cmd 6 shoudn't read any data. This is what I'm doing if I'm transfering data:
This is the function called from the upper layers:
stm32_mmc_send_cmd(struct udevice *dev, struct mmc_cmd *cmd, struct mmc_data *data)
If it is necessary to transfer data all the related code for that is placed in if conditions like below.
if(data) { ... }
Something interesting:
Here is are two new logs I just recoreded a few minutes ago after some sleep. The sourcecode is the same i just recompiled it and flashed it again. You can see it on the timestamp in line 4. I used the same card as in Log [1].
Log [3] behaves now different than before, there is no data read from the cmd6
Log [4] behaves similar to log [1].
I made a diff between log [3] and Log [4] and till line 265 is everything the same. @ line 266 & 267 the answer to cmd 51 is different!?
Best Regards,
Philipp Rossak
[3] http://pastebin.com/AK3RB1bH
[4] http://pastebin.com/xk2TkGpd
On 22.03.2017 02:54, Jaehoon Chung wrote:
Hi Philipp,
On 03/22/2017 10:38 AM, Philipp Rossak wrote:
Hi Jaehoon,
Thanks for that hint!
I uploaded two logs to pastebin.
Log [1] is a sandisk ultra 32gb sd card. This time I didn't got it work properly.
Log [2] is from an other 2gb sd card where I pressed the reset button until I received data from CMD 17 command.
Right now there are a lot of debug outputs, to make it for me easy for me to find the errors. The most of them will be removed later.
Best Regards,
Philipp Rossak
In Log [1],
mmc 0, cmd 6(0x00000446), arg 0x00fffff1 START DATA TRANSFER CMD: 6 Timeout STA2: 00202040------------------ END DATA TRANSFER Ret: -110 - STA 00202540
It seems timeout error, right? As i know, CMD6 doesn't have any data.. Even if didn't check your source code..i guess that you need to check whether it's waiting for completing data or not. (or check the register about interrupt e.g, end of data interrupt..?)
In Log [2],
It seems to fail the getting sd status...also timeout.. I need to check your source code..after that, i will review more..
Best Regards, Jaehoon Chung
[2] http://pastebin.com/zRbRMXtE
On 22.03.2017 01:51, Jaehoon Chung wrote:
Hi Philipp,
On 03/22/2017 09:27 AM, Philipp Rossak wrote:
Hey everyone,
I'm currently working on a SD / MMC Card driver for the stm32f746g-disco Board. You can find my actual very early work right here on my github repository: [0]
Currently I'm getting errors that are not reproducible:
Errors on sending different commands (happens somtimes but randomly)
Errors at CMD 17 & 18 reading procedures
If you can also share the log, it's helpful to check your problem. I don't have board to test yours, but i can check your driver as code level.
Best Regards, Jaehoon Chung
And sometimes works everything without any problems....
Right now I think that my hardware got broken (but I'm not sure). It would be nice if someone could test the driver and send me the log. A small code review would help me also.
Thanks in advance!
Best regards,
Philipp Rossak
[0] https://github.com/embed-3d/stm32_mmc_driver/tree/stm32f7_mmc_hw_testing
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot

Hi Jaehoon,
I had a look in the include/mmc.h file and there are different types of cmd 6 command defined:
ACMD6: Sets Bus width --> no data CMD6: Switch Function --> data
But it was the right place to look for the error. I forgot to disable the DMA! Shame on me!!! I updated the code on github. The new log [5] looks now much better!
The log shows the following: reset -> mmc rescan -> mmc info
@ reset I couldn't see any error happen (CMD 17 looks also good!). But it has some error the dos partition table.
@ mmc rescan only CMD 17 at the end fails
@ mmc info looks everything ok
Best Regards,
Philipp Rossak
[5] http://pastebin.com/H8mWTP4C
On 22.03.2017 12:18, Philipp Rossak wrote:
Hi Jaehoon,
Yes that what you mentioned is a timeout error. That error occurs if I don't get a response from several Hardware/error flags (a counter reaches a limit).
As you mentioned the cmd 6 shoudn't read any data. This is what I'm doing if I'm transfering data:
This is the function called from the upper layers:
stm32_mmc_send_cmd(struct udevice *dev, struct mmc_cmd *cmd, struct mmc_data *data)
If it is necessary to transfer data all the related code for that is placed in if conditions like below.
if(data) { ... }
Something interesting:
Here is are two new logs I just recoreded a few minutes ago after some sleep. The sourcecode is the same i just recompiled it and flashed it again. You can see it on the timestamp in line 4. I used the same card as in Log [1].
Log [3] behaves now different than before, there is no data read from the cmd6
Log [4] behaves similar to log [1].
I made a diff between log [3] and Log [4] and till line 265 is everything the same. @ line 266 & 267 the answer to cmd 51 is different!?
Best Regards,
Philipp Rossak
[3] http://pastebin.com/AK3RB1bH
[4] http://pastebin.com/xk2TkGpd
On 22.03.2017 02:54, Jaehoon Chung wrote:
Hi Philipp,
On 03/22/2017 10:38 AM, Philipp Rossak wrote:
Hi Jaehoon,
Thanks for that hint!
I uploaded two logs to pastebin.
Log [1] is a sandisk ultra 32gb sd card. This time I didn't got it work properly.
Log [2] is from an other 2gb sd card where I pressed the reset button until I received data from CMD 17 command.
Right now there are a lot of debug outputs, to make it for me easy for me to find the errors. The most of them will be removed later.
Best Regards,
Philipp Rossak
In Log [1],
mmc 0, cmd 6(0x00000446), arg 0x00fffff1 START DATA TRANSFER CMD: 6 Timeout STA2: 00202040------------------ END DATA TRANSFER Ret: -110 - STA 00202540
It seems timeout error, right? As i know, CMD6 doesn't have any data.. Even if didn't check your source code..i guess that you need to check whether it's waiting for completing data or not. (or check the register about interrupt e.g, end of data interrupt..?)
In Log [2],
It seems to fail the getting sd status...also timeout.. I need to check your source code..after that, i will review more..
Best Regards, Jaehoon Chung
[2] http://pastebin.com/zRbRMXtE
On 22.03.2017 01:51, Jaehoon Chung wrote:
Hi Philipp,
On 03/22/2017 09:27 AM, Philipp Rossak wrote:
Hey everyone,
I'm currently working on a SD / MMC Card driver for the stm32f746g-disco Board. You can find my actual very early work right here on my github repository: [0]
Currently I'm getting errors that are not reproducible:
- Errors on sending different commands (happens somtimes but
randomly)
- Errors at CMD 17 & 18 reading procedures
If you can also share the log, it's helpful to check your problem. I don't have board to test yours, but i can check your driver as code level.
Best Regards, Jaehoon Chung
And sometimes works everything without any problems....
Right now I think that my hardware got broken (but I'm not sure). It would be nice if someone could test the driver and send me the log. A small code review would help me also.
Thanks in advance!
Best regards,
Philipp Rossak
[0] https://github.com/embed-3d/stm32_mmc_driver/tree/stm32f7_mmc_hw_testing
U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
participants (2)
-
Jaehoon Chung
-
Philipp Rossak