OAD 实现过程中遇到的一些问题及解决方法
最近实现oad功能,看了TI的官方文档,怎么也弄不出来。我用的是自己焊的板子,而TI的说明书里是要用开发套件的。这里跟大家分享一下自己遇到的一些问题.
1、 zoad显示“no host device available”。很可能是因为串口配置的流控问题,修改uartConfig.flowControl即可。
2、 生成hex文件的问题。官方文档11.1.2说Remove the comments from the –M option in oad.xcl as shown in hi-light。但不能照做,因为在oad.xcl里说的很清楚:Include these two lines when generating a .hex filefor banked code model,你发现实际情况是 code model是banked,所以这里要保留。
3、 入网后有的节点可能显示不支持oad,这个也很无语,多试几个板子吧
4、 Load image 成功后,restart device失败。官方文档里说了:An off-chip NV device must be used to storethe new OAD image when code size exceeds the available internal flash- themeans by which this occurs is beyond the scope of this document. 但是,提供的代码里用的是有外部flash的情况,所以导致restart device 一直失败。而且必须使用EndDevice类型,Route类型的话太大,照下面的方法修改后,编译会报错:
在boot工程里的hal_oad.h
#defineHAL_OAD_XNV_IS_INT TRUE
在oad.xcl里
// Uncomment when implementing OAD NV by dividing internal flash in half.
-P(CODE)BANKED_CODE=_CODE_START-_CODE_END,0x18000-0x1FFFF,0x28000-0x2FFFF,0x38000-0x3E7FF
// Uncomment whenimplementing OAD NV by external E2PROM AND external
flash is 256 KB orbigger.
// (e.g. when usingSmartRF05 Rev. 1.7 or later.)
//-P(CODE)BANKED_CODE=_CODE_START-_CODE_END,0x18000-0x1FFFF,0x28000-0x2FFFF,0x38000-0x3FFFF,\
//0x48000-0x4FFFF,0x58000-0x5FFFF,0x68000-0x6FFFF,0x78000-0x7C7FF
// Uncomment when implementing OAD NV by dividing internal flash in half.
-J2,crc16,=800-887,88C-3E7FF
// Uncomment whenimplementing OAD NV by external E2PROM AND external flash is 256 KB or bigger.
// (e.g. when usingSmartRF05 Rev. 1.7 or later.)
//-J2,crc16,=800-887,88C-7C7FF
我遇到的主要问题就这些,希望大家有问题解决经验也能拿出来分享下,大家共同进步