我使用的是旺宏的MX25L3206E 32Mbit的spi nor flash芯片。编译了spi的第一阶段u-boot.min.spi,在uboot第二阶段(emmc启动),通过sf write命令烧写到spi nor flash中。flash数据读写都是正常的。但是断电后重启无法从spi启动,还是会跳到emmc启动。下面是我尝试的一些手段。
1、BT_MODE[4:0]启动配置已经从10111改为10110,不成功。
2、尝试把芯片换成旺宏的MX25L25635FZ2I10G 256Mbit芯片,还是一样无法从spi启动。
3、对于spi大小端的问题也尝试分别烧写大端、小端两种不同的uboot,启动还是不成功。
4、对于头部信息的问题,尝试烧写过带头部信息和不带头部信息的uboot,不成功。
请问是什么原因呢?我只烧写了uboot第一阶段和第二阶段,内核、文件系统都没有烧写。这个会影响启动吗?只烧写了第一阶段应该也是能启动的吧。
Chris Meng:
你好,
Xiaojie Hu我只烧写了uboot第一阶段和第二阶段,内核、文件系统都没有烧写。这个会影响启动吗?
不会。正常情况第一级boot是由ROM code引导起来的。
你的板子上有仿真器的接口么?能否参考下面的链接,读取一下trace信息?
processors.wiki.ti.com/…/Debug_Tips_for_DM81xx_Boot_Fail
Xiaojie Hu:
回复 Chris Meng:
因为板子上没有吧jtag引出来,所以没法用仿真器调试。有没有别的调试方法?
Chris Meng:
回复 Xiaojie Hu:
你好,
没有仿真器的话,调试手段就很有限了。
你可以在复位后,测量一下SPI的相关引脚,看是否有电平变化,这是用于判读是否ROM 代码执行了spi引导,bootme引脚是否配置正确。
请问你烧写spi flash是按照下面的命令么?
processors.wiki.ti.com/…/TI81XX_PSP_UBOOT_User_Guide
TI814X and TI813X
Flash U-Boot-MIN for SPI (u-boot.min.spi) to SPI flash by executing the following commands:
TI8148_EVM# tftp 0x81000000 u-boot.min.spi TI8148_EVM# sf probe 0:0TI8148_EVM# sf erase 0x0 0x20000 TI8148_EVM# sf write 0x81000000 0x0 0x20000
Xiaojie Hu:
回复 Chris Meng:
你好。烧写步骤是按你提供的链接来的。我现在换了一个8168的评估板,尝试spi启动,同样遇到无法启动的问题。
这是CCS显示的trace信息
请问这里面能否看出是什么导致的spi启动失败?
感谢!
Chris Meng:
回复 Xiaojie Hu:
你好,
trace信息显示是memory boot启动成功的。具体请参考DM8168 TRM Table 25-33. Tracing Vectors。比特位值为1表示该信息成立。我复制了相关信息如下: