Part Number:AM3352
AM3352从NAND_FLASH启动,sysboot9=0 ECC by ROM.
在NAND_FLASH的BLOCK0,和BLOCK1,放置了BOOT代码。 在ROM_CODE读取BLOCK0的数据时,如果ECC检验错误,应该会从BLOCK1启动。
目前问题是,我故意将BLOCK0中的数据写错(更改写入nand的文件,只更改了数据区,更改了多个BIT,理论上ECC无法修复,没有更改ECC校验数据部分,所以理论上校验会失败),但是AM3352依然从BLOCK0启动,没有从BLOCK1启动。
我目前验证的部分,因为目前ROM_CODE加载BLOCK0的数据采用的ECC校验方式为BCH16,然后我在给BLOCK0写入数据时故意采用BCH8的方式写入ECC校验码,这样理论上BLOCK0的ECC校验就会失败,就会从BLOCK1启动,这样验证是可行的,AM成功的从BLOCK1启动了。
所以我很疑惑。
FENG MENGDONG:
我和提出问题是同一人,上面是公司账号,这个是我私人账号。
我遇到这个问题,而且我调试写代码读取BLOCK0数据,代码显示读取状态错误,数据错误无法修正,ROM_CODE没有道理会检查不出来错误。
nand的page=2K, AM3352读取是512byte算一个扇区,我的错误数据放在第四个扇区,难道ROM_CODE只检查第1个扇区?但是这样感觉不合理。
AM3352从NAND启动就是意味着ECC校验OK的,但是数据明显是错误的,很是奇怪。
,
Shine:
如果把第一个扇区写错数据,也还是从第一个blocK启动吗?
,
MENGDONG FENG:
是的,我目前认为是这样的,我从CCS的memory browser中看0X402F0400部分的数据,和BLOCK0的数据是相同的,调试能看到AM运行到了0X2008C,我在0X2008C和0X40240400分别打了硬件断点,发现直接停在了0X2008C , 也就是没有执行0X402F0400部分的代码,难道ROM_CODE在读取数据的时候直接跳到了0x2008C
,
MENGDONG FENG:
补充一下:第一个扇区写错我自己没有试过。我现在比较倾向于没有代码没有从ROM_CODE跳转到0X402F0400处执行。
,
Shine:
我升级到e2e了,请关注下面帖子的回复。https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1063379/am3352-failed-to-validate-rom-bootloader-ecc
,
MENGDONG FENG:
hello,一周了,这个帖子没人回复。。。。。。
,
Shine:
由于圣诞及新年假期,英文论坛的回复比较慢。敬请谅解!