Problem using u-boot in iMX53 loco and eMMC

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Problem using u-boot in iMX53 loco and eMMC

1,709 Views
FlavioAlves
Contributor II

Hello,

I'm working on a new design based on iMX53 Quick Start Board.

I'm using u-boot-fslc and linux-fslc from Yocto recipes.

The Linux distribuition is Debian Jessie.

Boths u-boot and kernel were compiled manually, using arm-poky toolchain

I can boot the system from the SD card without any problem.

From the SD card, I was able to access the eMMC partitions and save information in those partitions. I setup the system in the same way as the SD card:

* The 1st partition for u-boot

* The 2nd partition (VFAT) for kernel and device tree

* The 3rd partition for filesystem

When I change the boot in order to boot from the eMMC, u-boot starts, but it doesn't detect the other partitions located in eMMC.

If I maintain the SD card on the board, the u-boot from the eMMC can detect the contents from the SD Card.

I added the CONFIG_SUPPORT_EMMC_BOOT on mx53loco.h, recompiled u-boot. It didn't work.

I checked the schematics, and it is using SD3 bus, with 8 bits data. I checked u-boot source code, and it seems to set ESDHC3 and all 8 bits of data bus. I believe this is correct. Is there any other thing that I should check?

The eMMC is from Sandisk (I don't have the specific part number now). From the specification, it is 4.51, but I saw that there is backward compatibility with the support 4.4 version presented on u-boot. Is that correct?

What should I do in u-boot in order to correctly access Linux Kernel and Device Tree in order to boot Linux from eMMC?

Thanks in advance.

Best regards,

Flavio

Labels (3)
0 Kudos
Reply
2 Replies

1,470 Views
igorpadykov
NXP Employee
NXP Employee

Hi Flavio

one can check if correct mmc number is used, for example it is

/dev/mmcblk0p2 in u-boot-fslc-2016.07 include/configs/mx53loco.h

https://github.com/Freescale/u-boot-fslc/tree/2016.07+fslc

https://github.com/Freescale/linux-fslc/blob/4.1-1.0.x-imx/arch/arm/boot/dts/imx53-qsb.dts

eMMC version 4.51 should work with changes in /drivers/mmc/core/mmc.c  :

card->ext_csd.rev > 7

provided on 0001-With-the-new-eMMC5.1-spec-there-is-a-new-EXT_CSD-reg.patch.zip

https://community.nxp.com/message/435796#435796

Also one can post this to meta-fsl-arm mailing list :

https://lists.yoctoproject.org/listinfo/meta-freescale

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply

1,470 Views
FlavioAlves
Contributor II

Hello,

I checked u-boot source code and I could not find similar validation located on this kernel patch. And, reading the source code, it seams that u-boot has support for newer versions of mmc/emmc standards.

I reset u-boot source code, and made the following changes:

=> added #define DEBUG in include/common.h file

=> added #define CONFIG_SUPPORT_EMMC_BOOT in include/configs/mx53loco.h file

=> added #define CONFIG_SYS_FSL_USDHC_NUM 3 in include/configs/mx53loco.h file

When I recompile e reinstall u-boot.imx file on e-mmc, I am able to see the debug messages. But, it hangs at the moment where ESDHC is being initialized.

U-Boot 2015.10-00058-g03ab68e-dirty (Aug 15 2016 - 10:53:52 -0300)

initcall: 77804d10

U-Boot code: 77800000 -> 77850E80  BSS: -> 7789C6B0

initcall: 77804b1c

initcall: 77805220

Board: MX53 LOCO

initcall: 77804d58

I2C:   ready

initcall: 77804d40

DRAM:  initcall: 77802268

initcall: 77804fc4

Monitor len: 0009C6B0

Ram size: 40000000

Ram top: 90000000

initcall: 77804b44

initcall: 77804cb8

TLB table from 8fff0000 to 8fff4000

initcall: 77804ed8

initcall: 77804c6c

Reserving 625k for U-Boot at: 8ff53000

initcall: 77804c3c

Reserving 10248k for malloc() at: 8f551000

initcall: 77804e74

Reserving 88 Bytes for Board Info at: 8f550fa8

initcall: 77804b5c

initcall: 77804c08

Reserving 224 Bytes for Global Data at: 8f550ec8

initcall: 77804b9c

initcall: 77804ec8

initcall: 77805030

initcall: 77804fa0

initcall: 77804eec

RAM Configuration:

Bank #0: 70000000 512 MiB

Bank #1: b0000000 512 MiB

DRAM:  1 GiB

initcall: 77804b80

New Stack Pointer is: 8f550ea0

initcall: 77804e30

initcall: 77804dc0

Relocation Offset is: 18753000

Relocating to 8ff53000, new gd at 8f550ec8, sp at 8f550ea0

Do you have any idea of what am I doing wrong?

Best regards,

Flavio

0 Kudos
Reply