This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

6657 nand boot



Allen 您好:

我们在开发6657  nand boot 存在以下问题:

附件是在TI外文论坛下载的.dat文件,将此文件烧写到NAND中,上电,按复位键后可以成功boot

但是问题是我们现在不太清楚这个.dat文件时如何生成的,麻烦您看一下这个文件,提供以下生成的方法

(目前实验结果boottable烧写到nand中boot不成功)

e2e.ti.com/.../240145.aspx  此链接为先前实验参考的帖子

多谢~

2311.nandboot_arun_dump.dat
  • 这个文件只是save出来的DDR memory,实际上你做的时候是把这段数据load到DDR里,然后把里面的boot table拷贝到nand里面

    boot tale是由hex6x生成的,需要注意的是你需要转换字节序

    以这个文件举例,有效的字段只有

     

    1651 1 80000000 0 21000  <---CCS里把数据load到DDR3的头,跟boot没什么关系

    0x00000081  <---boot入口地址,0x00810000注意字节序

    0x00400000 <---第一段的长度0x40

    0x00000081 <---第一段的地址0x00810000

    0xA2280099 <---第一段的数据

    0x91680088

    0x00A80101

    0x40E80100

    0x02260108

    0x08280181

    0x40E80180

    0x3626018C

    0x0226020C

    0xA1200001

    0x00000000

    0x00000000

    0x00000000

    0x00000000

    0x00000000

    0x00000000

    0x00010000  <---第二段的长度0x1

    0x02010081 <---第二段的地址0x00810102

    0x00120000 <---第二段的数据0x12

    0x00020000 <---第三段的长度0x2

    0x02100081 <---第三段的地址

    0x34120000 <---第三段的数据

    0x00000000 <---boot table 结束

     

    后面的都是无效的填充数据

     

  • ALLEN :

    谢谢,看了您的回答,但是实验的结果是  :

    后面的无效数据填充部分与boot是有关系的

    现象是在boottable结束后的无效填充数据中,如果人为修改两个或者多个数据,依然可以导致boot失败,所以感觉后面的无效数据也是有关系的,不知道这个是怎么回事

  • ALLEN:

    后来仔细看了以下,入口地址是0x00810000,应该不是0x81000000,所以是将boottable经过16位转换,这个是什么原因,再有一个问题就是后续的填充部分确实是有影响的,这个是什么原因,多谢~

  • 嗯,入口地址是我写错了,填充部分应该是没有影响的,我无法回答你这个问题

  • 你可以连上JTAG看一看boot 不起来的时候boot table是否从NAND里拷贝到了对应的地方,是否拷贝了正确的值,与正确boot的情况对比看看

    我不认为填充的部分会有影响,你说的这个现象我无法理解,只能先从boot table的部分找答案

  • Allen:

    谢谢~

    boot不起来的时候没有拷贝任何的代码,RBL没有执行完

    还有一个疑问是有没有可能是后面的填充部分是boot configuration table ,因此产生了影响

  • 肯定没有boot configuration table

    不过我看了一下数据是528word,那么应该是带有OOB信息,我觉得原因应该是你改了数据之后,nand的校验就不对了,导致RBL认为nand读取数据有问题

  • Allen :

    我看了一下,确实是因为ECC的问题,导致RBL读取错误。

    原因是MCSDK中那个NANDwriter的ECC和RBL的ECC是不一样的,那如何知道RBL的ECC呢,在哪个文件可以看到?

    如何在MCSDK中的nandwriter中修改ECC就可以和RBL中的一样?

  • 对ECC校验这一块我不太熟悉,MCSDK里是给IBL写的NandWriter,可能和6657不同;

    这个可以看看nand ecc的资料验证一下看看