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.

C6424 nand boot

自己制作的6424的板子,已经实现了uart启动和eeprom启动,使用nandflash方式启动时不成功

选用的nandflash型号与开发板不同,型号为mt29f4g08abadah4,其id号为0xdc,page大小和总大小符合“Using the TMS320C642x Bootloader”中table15的条件

现已将应用程序ais格式的文件写到nandflash的block1 page0开始的连续区域内,确认nandflash无坏块

上电前将相应管脚置为BOOTMODE[3:0]=0111 nand boot mode,AEM[2:0]=101为8 bit emifa

上电后能用示波器捕捉到emif接口的通信过程,一段时间(约20s)后,emif接口不再有数据通信,串口打印出BOOTER,未能查到其含义

挂仿真器通过Load Symbols查看寄存器BOOTCMPLT=0,表明启动过程无错误

以上是全部现象,不知道还有哪里的问题没有注意到,请各位大神给予指导,帮助我解决这个困扰了近四个月的问题,不胜感激!

  • 如果确定启动过程没有问题,挂上仿真器去跟踪加载后的代码看运行到哪里出错了,建议先从简单的测试程序开始。
  • 放到nandflash里面的程序很简单,只有点灯和打印的功能,挂仿真器load symbols之后,pc指针停在0x001024A4这里,看不到其他信息
    因为可以查看内存空间里的数据,能够确认的是booloader没有将我烧写进nandflash的程序搬移到相应内存空间,但是为什么没有搬移,是未读到ais数据还是读取的有错误,我无法定位到问题所在
  • 试试用仿真器去跟踪ROM bootloader代码,看看为什么没有搬移。
  • 用仿真器如何追踪BootLoader代码,是ccs使用only load symbol的选项吗
  • 不是,load symbol是针对烧写进去的代码。
    bootloader是在片上ROM里的,上电后,单步执行会从ROM里开始执行bootloader。
  • 那如何进行这种操作呢,有没有什么手册说明的,不胜感激
  • 上电后,连上仿真器,单步执行会从ROM里开始执行bootloader。

  • 恕我不明白,如何“连上仿真器”,正常的仿真是点击debug把程序下载进去之后才可以点击单步执行,现在单步执行那些按钮都是灰色的,不能操作啊?
  • 手动connect, ccs->view->Target Configurations->右键ccxml文件->Launch Selected Configuration

  • 谢谢 按照你说的步骤操作之后 发现 一直在001024a0到001024b0的地方循环

  • 后来仔细看了一下内存空间,写入第一个page的2048字节的数据都被正确处理了,数据都被搬移到对应的地址空间中去了,但是后面的数据就不知所踪了
  • 我的nandflash是4bit的ecc校验,而6424的emif接口是1bit的ecc校验,这里会不会有问题啊
  • 我的nandflash是4bit的ecc校验,而6424的emif接口是1bit的ecc校验,这里会不会有问题啊

    这个没关系。

    问几个问题:

    #1. 请问用的nand flash writer是哪来的?会不会是写有问题?

    #2. 请问这个AIS文件格式对不对?

    把AIS文件打开截个屏上来看一下。跟下面比较一下:

    #3. 把cmd文件贴上来看一下。

  • 最终终于解决这个问题了,原因是ecc不知道放在哪里;

    因为有6424开发板的历程,选用了和开发板一样的nandflash,每个page是512+16,根据历程,后面spare区域的16个字节,
    前4个字节放ecc,后12个字节全填0xFF,最终成功启动,亲测如果ecc错误,是无法启动的;

    之前我的flash的page是2048+64的,完全不知道ecc要怎么放;

    真是欲哭无泪啊,被这一个小问题卡了几个月,以后还是要用比较新的芯片,其他资料比较充足,不容易被这样困着。。。
  • TI的bootloader一直是以512byte算一次ECC的,不管页多大。

    haocheng ding 说:
    亲测如果ecc错误,是无法启动的;

    应该是的,在C6748的早期版本的bootloader也有这个问题。何况C6424这种老芯片的bootloader。 

  • 6748的bootloader文档描述了各种型号的flash,无论页大小是多少,都是512的整数倍,然后可以将页拆成N个512来计算ECC,每个ECC对应放在哪里也讲的很清楚,所以不同型号的falsh我都可以用来启动

    但是6424的相关描述就太少了,除了跟开发板页大小一致的这个nandflash,别的flash应该怎么算ecc,把ecc放哪里就实在是不清楚了
  • EMIF文档里还是提了按512byte计算ECC的。

    http://www.ti.com/lit/ug/spruem7b/spruem7b.pdf

  • 嗯,这个我是清楚的,
    6424的emif接口只能计算少于512字节数据的ecc,
    但是page容量为2048+64的flash是不是拆成4个512分别计算就找不到文档支撑了,另外即使这样计算,那算出来的4个4字节ecc放到flash的spare区域的哪些地址还是不清楚....
x 出现错误。请重试或与管理员联系。