微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于Large Image OAD的异常,请TI 的工程师帮忙确认

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

时间:10-02 整理:3721RD 点击:

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上面

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top