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

AM3352: ROM_CODE加载nand_FLASH数据,BLOCK0ECC校验失败,跳转到BLOCK1问题。

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:

由于圣诞及新年假期,英文论坛的回复比较慢。敬请谅解!

赞(0)
未经允许不得转载:TI中文支持网 » AM3352: ROM_CODE加载nand_FLASH数据,BLOCK0ECC校验失败,跳转到BLOCK1问题。
分享到: 更多 (0)