TI论坛
直播中

薛槐敏

7年用户 224经验值
私信 关注

为什么AM335X u-boot.img从SPI FLASH启动不成功?原因是什么?

本帖最后由 一只耳朵怪 于 2018-6-4 17:14 编辑

我把MLO.spi和u-boot.img分别烧写到SPI FLASH的0x0和0x20000,然后设置从SPI启动。结果出现了如下的提示信息,一直卡在这里:
U-Boot SPL 2011.09 (Mar 19 2013 - 15:02:01)
Texas Instruments Revision detection unimplemented
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
read_eeprom() failure. continuing with ddr3
No daughter card present
Did not find a recognized configuration, assuming General purpose EVM in Profile 0 with Daughter board
SF: Detected W25Q64 with page size 4 KiB, total 8 MiB
我跟进去,找到了函数:spi_boot,然后打印出在内存CONFIG_SYS_TEXT_BASE的内容,和u-boot.img的内容是完全一样的,可是u-boot.img为什么就没有被执行呢?(注:我使用的是自己做的板子,用这个u-boot.img放到SD卡中,是可以被正常执行的)
void spi_boot(void)
[
struct spi_flash *flash;
void (*uboot)(void) __noreturn;
/*
* Load U-Boot image from SPI flash into RAM
*/
flash = spi_flash_probe(CONFIG_SPL_SPI_BUS, CONFIG_SPL_SPI_CS,
CONFIG_SF_DEFAULT_SPEED, SPI_MODE_3);
if (!flash) [
puts("failed.n");
hang();
]
spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS,
CONFIG_SYS_SPI_U_BOOT_SIZE,
(void *) CONFIG_SYS_TEXT_BASE);
/*
* Jump to U-Boot image
*/
uboot = (void *) CONFIG_SYS_TEXT_BASE;
(*uboot)();
]

回帖(19)

曹丽娜

2018-6-4 08:22:14
eeprom那部分代码都去掉了么?
                                                                         如果我的回答解决了您的问题,请确认答案,谢谢!:)
举报

王玉宁

2018-6-4 08:38:12
根据你的log信息,ms没有去掉EEPROM。
read_eeprom() failure. continuing with ddr3
你可以在board/ti/arm335x/evm.c中的board_init()函数中去掉EEPROM的相关操作。
举报

薛槐敏

2018-6-4 08:50:09
引用: 林宇宣55 发表于 2018-6-4 08:38
根据你的log信息,ms没有去掉EEPROM。
read_eeprom() failure. continuing with ddr3
你可以在board/ti/arm335x/evm.c中的board_init()函数中去掉EEPROM的相关操作。

我现在去掉了EEPROM的相关操作了,还是一样的。而且我感觉跟EEPROM没什么关系。程序运行到函数:(*uboot)(),也就是u-boot.img,就过不去了。但是当我make am335x_evm产生的MLO和make am335x_evm_spiboot产生的u-boot.img 一起放到MMC卡,这时候可以正常启动,进入到u-boot命令行:
U-Boot SPL 2011.09 (Mar 19 2013 - 10:08:40)
Texas Instruments Revision detection unimplemented
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
read_eeprom() failure. continuing with ddr3
No daughter card present
Did not find a recognized configuration, assuming General purpose EVM in Profile 0 with Daughter board
OMAP SD/MMC: 0
reading u-boot.img
U-Boot 2011.09 (Mar 20 2013 - 10:01:42)
I2C: ready
DRAM: 256 MiB
WARNING: Caches not enabled
NAND: HW ECC Hamming Code selected
No NAND device found!!!
0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
SF: Detected W25Q64 with page size 4 KiB, total 8 MiB
*** Warning - bad CRC, using default environment
Net: cpsw
Hit any key to stop autoboot: 0
U-Boot#
这样的话,应该能表明u-boot.img也没错啊,可是为什么从SPI FLASH读出来后没能正常执行呢?
举报

曹丽娜

2018-6-4 09:09:42
引用: LY90186 发表于 2018-6-4 08:50
我现在去掉了EEPROM的相关操作了,还是一样的。而且我感觉跟EEPROM没什么关系。程序运行到函数:(*uboot)(),也就是u-boot.img,就过不去了。但是当我make am335x_evm产生的MLO和make am335x_evm_spiboot产生的u-boot.img 一起放到MMC卡,这时候可以正常启动,进入到u-boot命令行:
U-Boot SPL 2011.09 (Mar 19 2013 - 10: ...

uboot 烧写的地址对么?
                                                                         如果我的回答解决了您的问题,请确认答案,谢谢!:)
举报

更多回帖

发帖
×
20
完善资料,
赚取积分