Hardware: AM3352+NAND Flash(MT29F16G08ABACA)
Software:ti-sdk-am335x-evm-08.00.00.00
sysboot pins[0:15] = 0010 0000 0000 0000 0010, 设置启动顺序:uart,mmc,nand
1. 编译后使用/bin/create-sdcard.sh制作SD卡,可以正常启动.
2. reset后进入u-boot模式,使用以下命令烧写MLO和u-boot.img到nand flash.
U-boot#mmc rescan
U-boot#nand erase 0x0 0x80000
U-boot#fatload mmc 0 0x82000000 mlo
U-boot#nand write 0x82000000 0x0 0x80000
U-boot#nand erase 0x80000 0x100000
U-boot#fatload mmc 0 0x82000000 u-boot.img
U-boot#nand write 0x82000000 0x8000 0x100000
断电,拔出SD卡重新上电,串口一直输出CCCC,nand启动失败。
请问1:可以从SD卡启动的MLO,是否可以直接烧录到nand?
根据手册,从SD卡启动的MLO可以是raw模式,也可以fat模式,查看MLO内容,发现其头部有TOC结构体,应该是raw模式。
请问2:如果要烧录到nand,MLO必须去掉头部的TOC结构体吗?如果是这样的,编译u-boot的时候如何设置呢?
U-boot#fatload mmc 0 0x82000000 u-boot.img
U-boot#md 0x82000000 600
U-Boot# md 0x82000000 600
82000000: 00000040 0000000c 00000000 00000000 @……………
82000010: 00000000 45534843 4e495454 00005347 ….CHSETTINGS..
82000020: ffffffff ffffffff ffffffff ffffffff …………….
82000030: ffffffff ffffffff ffffffff ffffffff …………….
82000040: c0c0c0c1 00000100 00000000 00000000 …………….
82000050: 00000000 00000000 00000000 00000000 …………….
82000060: 00000000 00000000 00000000 00000000 …………….
82000070: 00000000 00000000 00000000 00000000 …………….
82000080: 00000000 00000000 00000000 00000000 …………….
82000090: 00000000 00000000 00000000 00000000 …………….
820000a0: 00000000 00000000 00000000 00000000 …………….
820000b0: 00000000 00000000 00000000 00000000 …………….
820000c0: 00000000 00000000 00000000 00000000 …………….
820000d0: 00000000 00000000 00000000 00000000 …………….
820000e0: 00000000 00000000 00000000 00000000 …………….
820000f0: 00000000 00000000 00000000 00000000 …………….
82000100: 00000000 00000000 00000000 00000000 …………….
82000110: 00000000 00000000 00000000 00000000 …………….
82000120: 00000000 00000000 00000000 00000000 …………….
82000130: 00000000 00000000 00000000 00000000 …………….
82000140: 00000000 00000000 00000000 00000000 …………….
82000150: 00000000 00000000 00000000 00000000 …………….
82000160: 00000000 00000000 00000000 00000000 …………….
82000170: 00000000 00000000 00000000 00000000 …………….
82000180: 00000000 00000000 00000000 00000000 …………….
82000190: 00000000 00000000 00000000 00000000 …………….
820001a0: 00000000 00000000 00000000 00000000 …………….
820001b0: 00000000 00000000 00000000 00000000 …………….
820001c0: 00000000 00000000 00000000 00000000 …………….
820001d0: 00000000 00000000 00000000 00000000 …………….
820001e0: 00000000 00000000 00000000 00000000 …………….
820001f0: 00000000 00000000 00000000 00000000 …………….
82000200: 00011b9c 402f0400 eb000075 e10f0000 ……/@u…….
82000210: e200101f e331001a 13c0001f 13800013 ……1………
82000220: e38000c0 e129f000 ee110f10 e3c00a02 ……)………
82000230: ee010f10 e59f0064 ee0c0f10 eb000008 ….d………
U-Boot# mtdparts
device nand0 <nand.0>, # parts = 8
#: name size offset mask_flags
0: SPL 0x00080000 0x00000000 0
1: u-boot 0x00100000 0x00080000 0
2: u-boot-env 0x00080000 0x00180000 0
3: dtb 0x00080000 0x00200000 0
4: kernel 0x00a00000 0x00280000 0
5: rootfs 0x04000000 0x00c80000 0
6: rootfs.backup 0x04000000 0x04c80000 0
7: NAND.file-system 0x77380000 0x08c80000 0
active partition: nand0,0 – (SPL) 0x00080000 @ 0x00000000
defaults:
mtdids : nand0=nand.0
mtdparts: mtdparts=nand.0:512k(SPL),1m(u-boot),512k(u-boot-env),512k(dtb),10m(ke
rnel),64m(rootfs),64m(rootfs.backup),-(NAND.file-system)
另外:根据下面这个帖子,我用的nand flash 的device ID不在支持的列表里,
https://e2echina.ti.com/question_answer/dsp_arm/sitara_arm/f/25/t/80766
但我查了nand flash的手册,其支持ONFI接口,根据335x技术手册,ROM CODE首先使用ONFI接口读取nand 信息,如果失败才会通过device ID匹配。
所以可以排除nand flash兼容性的问题。
谢谢
yongqing wang:
如何从SD烧到nand 参考https://blog.csdn.net/qinqin150/article/details/9383471
user6092358:
回复 yongqing wang:
谢谢您的回复,链接中的SDK是05版本的,有些操作在08中已经没有了,比如nandecc命令不支持了,kloadaddr在文件中都没有了。
yongqing wang:
回复 user6092358:
那就看看那这个:processors.wiki.ti.com/…/Sitara_Uniflash_Quick_Start_Guide
Shine:
试试把sysboot设成从nand flash启动。
user6092358:
回复 Shine:
您好,sysboot pins[0:15] = 0010 0000 0000 0000 0010, 设置启动顺序:uart,mmc,nand。先SD卡启动,将MOL,U-boot.img烧录到flash后,把TF卡拔掉再重启,应该就是从nand flash启动了吧?
Nancy Wang:
这个链接参考过吗?
processors.wiki.ti.com/index.php
user6092358:
回复 Nancy Wang:
参考过了,还是启动失败(串口一直输出CCCC)。 请问:(1)从SD卡启动和从nand flash启动的镜像是否需要分别编译?我对比了am335x_evm_config 和am335x_evm_nandboot_config 两个配置,编译出来的MLO完全一样的。(2)如果am335x_evm.h里的配置与实际nand flash不匹配,是否会导致ROM CODE一直停留在输出CCC状态?(3) SDK8.0是否不用设置ECC校验模式了? 谢谢
user6092358:
回复 Nancy Wang:
已解决,谢谢。
Nancy Wang:
回复 user6092358:
可以分享一下您的解决方法吗?