TI中文支持网
TI专业的中文技术问题搜集分享网站

SD卡启动时,spl_load_image_fat_buf error Can't read partition table on 0:0 spl: no partition table found

在移植的过程中遇到问题,SD卡的启动时ROMCODE 从SD卡中读取MLO执行进入SPL阶段。但是SPL阶段读取u-boot.img时出错,测试时候使用2GB的sd卡  fat32一个分区 放了MLO 和 u-boot.img 两个文件。启动打印如下图所示。 板子参考bbb实际 sd卡部分未做改动。考虑到软件问题,因为同样的SD卡在替换了已有旧版本的MLO 和 u-boot.img,可正常加载u-boot.img 启动。 

使用版本为ti-SDK 

u-boot 2018.01 u-boot-2018.01+gitAUTOINC+313dcd69c2-g9d984f4548 

linux-4.14.79+gitAUTOINC+e669d52447-ge669d52447

U-Boot SPL 2018.01-00569-g7b4e473842-dirty (Aug 13 2019 – 15:18:11)
Trying to boot from MMC1
spl_load_image_fat_buf: error reading image u-boot.img, err – -2
** Can't read partition table on 0:0 **
spl: no partition table found
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

问题1:Trying to boot from MMC1     里面的 MMC1 实际指的是mmc0 么(uboot的设备树好像在mmc1 的节点里面 pim_mux了 mmc0 的引脚)?

问题2:uboot阶段的设备树最后是部分合并到u-boot.img了么?

问题3:上面的这个SD卡读取错误问题要怎么解决,请给与指点。(mmc 在 board.c 里面的pin_mux 以及 uboot下面的设备树确认过了,应该没问题,本来和bbb的sd卡就保持一致)

呼唤  ———————>>>>>>>>>>     TI – 小姐姐

Shine:

1. MMC1实际指的是mmc0。 2. 没有合并,设备树是由uboot加载到内存。 3. 请问时要从mmc1启动吗? 请看一下设备树里有没有配置mmc1 pinmux管脚,添加mmc1节点?

hui wang1:

回复 Shine:

335板子去掉了BBB板的EMMC 改用NANDFLASH

SD部分电路参照原BBB电路制作 硬件上一致 ,软件上想去掉CS脚以供下一次改板的时候去掉CS脚,因为SD卡只是用来作为备用更新的接口 (当然我也尝试加CS脚的pinmux 以及设备树里面的配置 情况一样)

 

1 , NAND 无数据 在00100  UART0 >>XIP>>MMC0 >>NAND  此种启动方式下ROM code可以从SD card中起来证明SD 卡在ROMcode中位于MMC0  看电路确实也在MMC0 的接口上

卡板上 MMC1的接口上没有物理MMC的外设

下面是一段在该卡板上SD卡

启动偶尔正常的一段启动打印

可以加载MLO 并在SPL阶段加载u-boot.img 并跳转,按下按键使执行停在u-boot命令行 证明u-boot正常,打印如下:

 

 

=>

=>

=> nand erase.chip

 

NAND erase.chip: device 0 whole chip

Erasing at 0xffe0000 — 100% complete.

OK

=> CCCCCCCC

U-Boot SPL 2018.01-00569-g7b4e473842-dirty (Aug 14 2019 – 11:40:08)

Trying to boot from MMC1

U-Boot 2018.01-00569-g7b4e473842-dirty (Aug 14 2019 – 11:40:08 +0800)

CPU  : AM335X-GP rev 2.1

Model: TI AM335x BeagleBone Black

DRAM:  512 MiB

NAND:  256 MiB

MMC:   OMAP SD/MMC: 0

Using default environment

<ethaddr> not set. Validating first E-fuse MAC

Net:   Into Ti CPSW initialization !!!

mac_addr = 20 0 0 0 a9 5aInto Ti CPSW  use  bbb mii !!!

cpsw

Hit any key to stop autoboot:  0

=>

 

 

疑惑一 :启动打印:Trying to boot from MMC1

首先uboot阶段正常启动了说明SD卡的内容MLO 和 u-boot.Img

可以正常启动并且可以被加载执行:

但是:

前面提及的sysboot配置中启动项没有MMC1 只有MMC0。

,并且启动前 NAND的数据也已经清空 那么该处打印的MMC1 由哪里决定???

该处打印的MMC1 指的是sysboot中MMC0???

疑惑二 :u-boot阶段是将设备树 内核 加载到ddr再跳转到内核执行。这个确实是,但是有个疑问:我之前在使用uboot目录下的设备树作为linux的启动设备树会出问题(不确定是否版本问题,仔细对比了一下两者,基本内容是一致的,感觉只是写法稍微不同。改用linux目录下的内核启动即正常)

 

board-support/u-boot-2018.01+gitAUTOINC+313dcd69c2-g9d984f4548/arch/arm/dts

board-support/linux-4.14.79+gitAUTOINC+e669d52447-ge669d52447/arch/arm/boot/dts

 

那么两者有什么区别 ?

 

 

疑惑三 :  SD卡只是用来启动 RomCode可以从我手里的3张SD(2G 2G 8G)可均可正常加载MLO ,可否证明至少我的SD卡电路中 CMD CLK DATA0 DATA1 DATA2 DATA3  均正常,

 

但是正常加载u-boot.img只是少数时候大多如下

 

U-Boot SPL 2018.01-00569-g7b4e473842-dirty (Aug 14 2019 – 11:40:08)

Trying to boot from MMC1

** Partition 1 not valid on device 0 **

spl_register_fat_device: fat register err – -1

spl_load_image_fat_buf: error reading image u-boot.img, err – -1

spl: no partition table found

SPL: failed to boot from all boot devices

### ERROR ### Please RESET the board ###

 

我的理解是tty0 可以打印上面一段内容证明335到sd的物理连接正常(因为每一次都可以正常加载MLO)

但是MLO再去加载u-boot.img 则常常会出现如上错误。

因为我只是在SD中放了MLO 和 u-boot.img

所以在您说的修改设备树,我的理解是   目的可以在linux里面使用这个外设

我只需要在启动是uboot阶段去更新nandflash的固件

 

所以现在能影响我的只有board.c 里面的pin_mux  和 uboot中 make menuconfig 里面相关mmc的外设的启用 ??? 或者说u-boot阶段还是需要设备树的信息??

void enable_board_pin_mux(void)

{

         configure_module_pin_mux(mii1_pin_mux);

         configure_module_pin_mux(mmc0_no_cd_pin_mux);

         configure_module_pin_mux(nand_pin_mux);

}

 

static struct module_pin_mux mmc0_no_cd_pin_mux[] = {

         {OFFSET(mmc0_dat3), (MODE(0) | RXACTIVE | PULLUP_EN)},       /* MMC0_DAT3 */

         {OFFSET(mmc0_dat2), (MODE(0) | RXACTIVE | PULLUP_EN)},       /* MMC0_DAT2 */

         {OFFSET(mmc0_dat1), (MODE(0) | RXACTIVE | PULLUP_EN)},       /* MMC0_DAT1 */

         {OFFSET(mmc0_dat0), (MODE(0) | RXACTIVE | PULLUP_EN)},       /* MMC0_DAT0 */

         {OFFSET(mmc0_clk), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_CLK */

         {OFFSET(mmc0_cmd), (MODE(0) | RXACTIVE | PULLUP_EN)},       /* MMC0_CMD */

         {-1},

};

 

 

u-boot:下mmc 设备树:

sdcard_pins_default: sdcard_pins_default {

pinctrl-single,pins = <

                            0xf0 (PIN_INPUT_PULLUP | MUX_MODE0)             /* mmc0_dat0.mmc0_dat0 */

                            0xf4 (PIN_INPUT_PULLUP | MUX_MODE0)             /* mmc0_dat1.mmc0_dat1 */

                            0xf8 (PIN_INPUT_PULLUP | MUX_MODE0)             /* mmc0_dat2.mmc0_dat2 */

                            0xfc (PIN_INPUT_PULLUP | MUX_MODE0)              /* mmc0_dat3.mmc0_dat3 */

                            0x100 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_clk.mmc0_clk */

                            0x104 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */

                   >;

         };

};

&mmc1 {

         status = "okay";

         vmmc-supply = <&vmmc_reg>;

         bus-width = <4>;

         pinctrl-names = "default";

         pinctrl-0 = <&sdcard_pins_default>;

         ti,broken-cd;

};

Shine:

回复 hui wang1:

请问可以运行的旧版本是哪个版本?新版本的SDK具体是哪个版本?

有没有试过启动第一顺序从sd卡启动?

hui wang1:

回复 Shine:

尝试过第一启动方式,现象一致Romcode 均可以加载MLO但是加载不了u-boot.img贴装的几块板都有这样的现象.
旧版本指的是
linux-3.14.26 和u-boot-2011.09

新版本为TI SDKam335x-evm-linux-sdk-src-05.03.00.07

u-boot 2018.01 u-boot-2018.01+gitAUTOINC+313dcd69c2-g9d984f4548
linux-4.14.79+gitAUTOINC+e669d52447-ge669d52447

我只需要uboot阶段的SD卡 可操作即可。

请问 MLO阶段如何去掉MMC的WP 和 CD脚的相关功能,即不需要检测CD脚
不知道到我去CD脚WP脚的方式是否有问题
而无法读取u-boot.img是否由于该引脚引起的??

Shine:

回复 hui wang1:

1. 抱歉,更正一下Trying to boot from MMC1是从mmc0启动,所以您的启动管脚配置是正确的。

2. 在设备树里mmc node属性里添加 broken-cd;disable-wp; 可以去掉WP, CD脚的相关功能

3. 关于spl_load_image_fat_buf: error reading image u-boot.img, err – -2这个错误信息,请检查一下/board-support/u-boot-<version>/board/ti/am335x/mux.c里的Pinmux设置是否不正确?电路设计中是否错误地使用了22ohm的电阻而不是10K电阻?SD卡没有正确的格式化?u-boot.img是否丢失?

hui wang1:

回复 Shine:

这个问题还没有解决 ,重打了底板测试有结果再更贴。

yongqing wang:

回复 hui wang1:

新底板改了啥

赞(0)
未经允许不得转载:TI中文支持网 » SD卡启动时,spl_load_image_fat_buf error Can't read partition table on 0:0 spl: no partition table found
分享到: 更多 (0)