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.

关于Large Image OAD的异常,请TI 的工程师帮忙确认

Hello everyone:论坛上发布的Large Image OAD的示例,我已成功移植到自己代码运行。

但有这样的问题如下:由ImageA升级ImageB后CRC校验异常。复位后BIM也是只能跳到ImageA,因CRC不对。

后面尝试发现,XCL文件中关于CHECKSUM等设置,一定要从0x3000开始,如果改成0x4000开始,就会出现CRC不对。看了下代码实际烧录

的位置仍是从0x4000开始的,只是CRC不对导致运行不起来。

论坛早就有工程师置疑这个0x3000是不是发布代码时出的错误,应该要改成0x4000。这里请TI的工程师及广大坛友帮忙确认澄清一下,到底应该如何更改,

为什么改后CRC总是不对。

-Z(CODE)CHECKSUM=0x3000-0x3001
-Z(CODE)IMAGE_HEADER=0x3002-0x300F
-Z(CODE)AES_HEADER=0x3010-0x302F

谢谢!

  • CHARLIE,

    很多情况下,都是因为IAR的关系导致各种奇怪的错误。

    比如我的1.4版本协议栈的large image OAD 在我的8.30和8.20 IAR上怎么都编译不过, 总是报错,但是代码拷贝到我同事的电脑上,就能编译过,我记得也是8.30,但是版本有点不太一样。(我的1.3.2版本用我的8.30和8.20 IAR就没问题,奇怪的很)

    但是,我用我同事编译好的bin文件进行更新,完全没有问题,不会有最后的CRC校验错误。

    所以,建议你最好试一下最新的1.4版本协议栈,和最新的IAR版本编译一下试试。

  • 谢谢Yan的回复,顺便问下,发布源码里的XCL文件,如下片段:

    -Z(CODE)CHECKSUM=0x3000-0x3001
    -Z(CODE)IMAGE_HEADER=0x3002-0x300F
    -Z(CODE)AES_HEADER=0x3010-0x302F

    是否需要改成如下?

    -Z(CODE)CHECKSUM=0x4000-0x4001
    -Z(CODE)IMAGE_HEADER=0x4002-0x400F
    -Z(CODE)AES_HEADER=0x4010-0x402F

    因为ImageB本来就是从0x4000开始的啊。

    盼复,谢谢!


  • CHARLIE,

    是有点奇怪。

    可以试一下你的修改方式,也可以试一下如下:

    同时修改imageA 和imageB 的代码地址空间,

    A的改成 

    -D_CODE_BEG=0x0830 
    -D_CODE_END=0x2FFF

    B的改成

    -D_CODE_BEG=0x3030 
    -D_CODE_END=0x7FFF

    这样就不需要修改checksum那里。

    除了这些,还需要一些修改,BIM 的引导程序跳转之类,具体可以参考 http://processors.wiki.ti.com/images/8/82/OAD_for_CC254x.pdf

    你先试试,我得和其他同事确认一下,欢迎你试过以后在论坛里给分享:)

  • 是不是最大化ImageB的CODE区域?我参考Maximize the Image-B area (while minimizing the Image-A area)修改是OK的,可以来回升级,你是如何确认是CRC不对呢?不能跳转不一定是CRC不对哦

  • 你好,你说的来回升级,是指再由B升级回A吗?

    如果我的代码有150K,把它作为B;如果以后升级固件,新固件还是150K,是不是就没法升级啊?

  • 可以的,官方给的例程是 毁掉B(相当于把删除了B,系统重新升级),不过,现在我有点疑问的是:B的大小怎么通过XCL文件去修改,如果使用官方的话,即使是比157K小的话,生成的Bin 文件也是157K这个大小,我想咨询一下,B的大小(起始地址终止地址是怎么定下来的?有这方面的参考文献吗)

  • Yan,

    关于这个问题,最终这个方案可以适用么? 现在按照官方的OAD手册,B影像最大能做到多大呢?

  • 你好,你那个问题解决了吗,我现在也是遇到这个问题CRC校验不对,跳不到B上面