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.

6678 EMIF NOR BOOT 失败

各位大神好,小弟最近在弄6678的EMIF NOR flash的 boot。 情况如下:

我在0X70000000i这写了一个二级加载程序,目的是把我的放在0X70020000地址CORE0的应用程序加载到L2 RAM 和DDR3中去执行,然后通过CORE0去加载其他CORE程序。烧录进去发现BOOT不成功,通过调试发现问题如下:

1.用TI转换工具 hex6x bin2css css2bin 生成的.bin文件BOOT TABLE 中.cinit的长度后面的数据段长度不一致,少了4个字节.

2.由于项目需求,我把.text段放在DDR3上,问题是在二次加载时,我的DDR3未初始化,无法使用.

求各路大神指点迷津,谢谢!

  • 1. 先试一下简单的代码烧录后能否加载?步骤可以参考下面的帖子。
    e2e.ti.com/.../367102

    2. 要在二次bootloader程序中在搬代码前初始化DDR3寄存器。
  • Miss zhang;
    很感谢您的回复,对于您回复第一条 ,我想说明一下,我是想在0X70000000 这写一个二级加载程序,加载我放在后面的app.bin到DDR上去执行, 而不是直接在0X70000000处直接执行我的应用程序。问题是要在我的second -lever boot loader 里初始化DDR,请问有没有例子可以参考一下的,谢谢!


    补充说明:我之前说的boot table 中 段的长度和该段的代码长度不匹配是因为4K对齐的问题,我已经解决。特此说明,希望能帮到有遇到类似问题的人。
  • 之前建议先用简单的代码测试是先看一下总体步骤流程是否正确,是因为您说“用TI转换工具 hex6x bin2css css2bin ”转换出来的数据有问题。

    DDR初始化的操作可以通过配置ddr configuration table实现。
    C6657 EVM SPI boot example with DDR initialization
    processors.wiki.ti.com/.../KeystoneI_Bootloader_Resources_and_FAQ
  • Miss zhang:
    感谢您的帮助!

    我编译生成的app.out 转换为boot table 格式的app.bin的过程是这样的:1. 用hex6x.exe 转换成app.hex 2.用b2ccs.exe 将app.hex 转换为app.dat 3.用ccs2bin.exe 将app.dat转换为app.bin 。
    转换后我发现其他有个段的长度和后面的代码长度不一致, 后经人指点在 secondary level boot loader 里加了一行代码

    seg_len = ((seg_len +3) & 0xFFFFFFFC); 然后就可以正确搬移我的app.bin 代码到 L2中了 ,程序也运行OK。不过这是个小程序 ,代码都是放在L2中的,我现在的实际项目中app.bin 代码很大,有一部必须放在DDR3中,所以我想在secondary level boot loader 加上初始化DDR3的代码,请问有没有可以参考的?谢谢!
  • Miss zhang;

    对于将app.out 转换成BOOT TABLE 格式的 app.bin 中 段的长度与段的代码不对应,是不是我使用TI工具转换过程中参数没设置正确,或者是我本身app在编译的时候有些先选要设置的?谢谢!
  • 直接使用c6xhex成成的hex文件,格式也很简单的,然后自己写个小工具转bin就可以了。可以参考我的活动里面分享的一个hex转bin的实现,我先吃饭啦,有空再帮你翻翻。