请教一个问题。关于CC1350使用433M空中升级。
目前公司的产品需要增加空中升级功能,通过学习TI提供的例程,已经学会了如何生成HEX文件以及进行合并与转BIN。
现在碰到的问题是:
TI提供的OAD Client例程中是没有独立的RTOS工程的,而我们之前开发工程都有独立RTOS的例程。如何配置现有工程来生成可以OAD的HEX?
主要是OAD需要给BIM程序预留FLASH空间,我们之前写的程序都是默认从地址0开始的,并没有预留BIM空间。
已经尝试过在CMD文件中修改FLASH的起始地址,
#define FLASH_BASE 0x1010
#define FLASH_SIZE 0x1EFF0
但是编译时会报错,原因是RTOS分配了一些变量在FLASH地址范围之外。
"D:/WORK/OAD_TEST/stdandproject/tirtos_builds_CC1350_LAUNCHXL_433_release_ccs/Debug/configPkg/linker.cmd", line 581: warning #10096-D: specified address lies outside memory map
error #10264: DEFAULT memory range overlaps existing memory range FLASH
error #10264: DEFAULT memory range overlaps existing memory range SRAM
"D:/WORK/OAD_TEST/stdandproject/tirtos_builds_CC1350_LAUNCHXL_433_release_ccs/Debug/configPkg/linker.cmd", line 699: warning #10096-D: specified address lies outside memory map
error #10263: DEFAULT memory range has already been specified
error #10264: DEFAULT memory range overlaps existing memory range DEFAULT
error #10264: DEFAULT memory range overlaps existing memory range FLASH
error #10264: DEFAULT memory range overlaps existing memory range SRAM
error #10010: errors encountered during linking; "empty_CC1350_LAUNCHXL_433_tirtos_ccs.out" not built
在网上查找资料时,发现有人提到用tirtos-bim_builds_CC1310_LAUNCHXL_release_ccs来替代tirtos_builds_CC1310_LAUNCHXL_release_ccs可以解决
但一直找不到tirtos-bim_builds_CC1310_LAUNCHXL_release_ccs的获取途径。
请问这种情况下,我应该如何配置CCS的现有工程来生成符合OAD要求的HEX文件。谢谢。
Viki Shi:
请参考这边的OAD guide: dev.ti.com/…/node
RUOHAN LIU:
回复 Viki Shi:
您好,感谢你的回复,这个文档中的配置方法我已经尝试过了,但并没有解决我的问题。
我们现有的项目工程都是在例程中的empty_CC1350_LAUNCHXL_433_tirtos_ccs基础上完成的。
用这个工程生成的HEX文件与BIM工程的HEX文件无法成功合并,提示地址有冲突。
请问empty工程如何配置可以实现与BIM的HEX文件合并,谢谢。
RUOHAN LIU:
回复 Alvin Chen:
你好,我在阅读rfWsnNodeExtFlashOadClient 里的代码时,发现有这样一个函数,不知道是不是一个BUG。
这里面的status 变量在函数开头定义以后,在整个函数过程中没有使用到,函数最后直接返回了这个值。
按照我的理解,函数的返回值应该总是OADProtocol_Failed,请问这是否正确?static OADProtocol_Status_t oadRadioAccessPacketSend(void* pDstAddr, uint8_t *pMsgPayload, uint32_t msgLen)
{OADProtocol_Status_t status = OADProtocol_Failed;uint8_t* pMsg;uint8_t dstAddr = (uint8_t) *((uint8_t*)pDstAddr);/** buffer should have been allocated with oadRadioAccessAllocMsg,* so 2 byte before the oad msg buffer was allocated for the source* addr and Packet ID. Source addr will be filled in by* NodeRadioTask_sendOadMsg*/pMsg = pMsgPayload – 2;pMsg[RADIO_PACKET_PKTTYPE_OFFSET] = RADIO_PACKET_TYPE_OAD_PACKET;
NodeRadioTask_sendOadMsg( dstAddr, pMsg, msgLen + 2);
//free the memory allocated in oadRadioAccessAllocMsgfree(pMsg);
return status;
}这段位于rfWsnNodeExtFlashOadClient 工程的 oad_client.c的最后一个函数
Alvin Chen:
回复 RUOHAN LIU:
Radio access function for OAD module to send messages
这是用来处理OAD module to send messages。
此外这个函数有用的啊,只是你没有发现;
void OADClient_open(OADClient_Params_t *params)
{OADProtocol_Params_t OADProtocol_params;
memcpy(&oadClientParams, params, sizeof(OADClient_Params_t));
OADProtocol_Params_init(&OADProtocol_params);OADProtocol_params.pRadioAccessFxns = &oadRadioAccessFxns;OADProtocol_params.pProtocolMsgCallbacks = &oadMsgCallbacks;
OADProtocol_open(&OADProtocol_params);
oadClockInitialize();
}
oadRadioAccessFxns包含了oadRadioAccessPacketSend
你用的什么板子要有外部flash芯片。 此外你要先下载BIM和然后再下载这个hex,请你看下面的知道手册按照操作:dev.ti.com/…/node
RUOHAN LIU:
回复 Alvin Chen:
不不不,我不是说这个函数没有用,我是说这个函数的返回值!
这个函数刚开始定义了status 变量并赋值为OADProtocol_Failed,
但是在整个函数过程中没有进行status的使用,
最后又直接返回了status。
因此这个函数无论怎样调用,最后返回值都是OADProtocol_Failed。
请问这是正确的吗?
Alvin Chen:
回复 RUOHAN LIU:
所以你现在不能OAD?这个返回值没有使用,应该不会有影响
RUOHAN LIU:
回复 Alvin Chen:
我们之前的工程由于某些原因没有使用EasyLink无线接口,因此移植程序需要修改OADClient工程中RF操作相关的接口。
然后在修改过程中发现了刚才的情况,不确定这个会不会有影响,所以请教一下确认问题。
RUOHAN LIU:
回复 Alvin Chen:
你好,我还有一个问题请教,在资料上有写道使用 oad_write_bin.py 下载固件,在实际使用时发现速度较慢,每处理64个字节需要半分钟左右,请问这是正常的的吗?还是我使用时的操作有问题?
在操作时我使用的命令如下
E:\oad_py>python oad_write_bin.py COM19 OadClient.hex执行后返回如下信息:
opening file:
<open file 'OadClient.hex', mode 'rb' at 0x0000000002B084B0>
file size: 164162
sending header
Out: 3a
Out: 32
Out: 30
Out: 31
Out: 30
Out: 31
Out: 30
Out: 30
Out: 30
Out: 30
Out: 30
Out: 34
Out: 43
Out: 30
Out: 05
Out: 32
sending blocks
writing block num:
Reading: 64bytes
Blocks sent: 0
writing block num:
Reading: 64bytes
Blocks sent: 1
writing block num:
Reading: 64bytes
Blocks sent: 2
writing block num:
Reading: 64bytes
Blocks sent: 3
writing block num:
Reading: 64bytes
Blocks sent: 4
writing block num:
Reading: 64bytes
Blocks sent: 5
writing block num:
Reading: 64bytes
Blocks sent: 6
writing block num:
Reading: 64bytes
Blocks sent: 7
writing block num:
Reading: 64bytes
Blocks sent: 8
writing block num:
Reading: 64bytes
Blocks sent: 9
writing block num:
Reading: 64bytes
Blocks sent: 10
writing block num:
Reading: 64bytes
Blocks sent: 11
writing block num:
Reading: 64bytes
Blocks sent: 12
writing block num:
Reading: 64bytes
Blocks sent: 13
writing block num:
Reading: 64bytes
Blocks sent: 14
writing block num:
Reading: 64bytes
Blocks sent: 15
writing block num:
Reading: 64bytes
Blocks sent: 16
writing block num:
Reading: 64bytes
Blocks sent: 17
writing block num:
Reading: 64bytes
Blocks sent: 18
writing block num:
Reading: 64bytes
Blocks sent: 19
writing block num:
Reading: 64bytes
Blocks sent: 20
writing block num:
Reading: 64bytes
Blocks sent: 21
writing block num:
Reading: 64bytes
Blocks sent: 22
writing block num:
Reading: 64bytes
Blocks sent: 23
writing block num:
Reading: 64bytes
Blocks sent: 24
writing block num:
Reading: 64bytes
Blocks sent: 25
writing block num:
Reading: 64bytes
Blocks sent: 26
writing block num:
Reading: 64bytes
Blocks sent: 27
writing block num:
Reading: 64bytes
Blocks sent: 28
writing block num:
Reading: 64bytes
Blocks sent: 29
writing block num:
Reading: 64bytes
Blocks sent: 30
writing block num:
Reading: 64bytes
Blocks sent: 31
writing block num:
Reading: 64bytes
Blocks sent: 32
writing block num:
Reading: 64bytes
Blocks sent: 33
writing block num:
Reading: 64bytes
Blocks sent: 34
writing block num:
Reading: 64bytes
Blocks sent: 35
writing block num:
Reading: 64bytes
Blocks sent: 36
writing block num:
Reading: 64bytes
Blocks sent: 37
writing block num:
Reading: 64bytes
Blocks sent: 38
writing block num:
Reading: 64bytes
Blocks sent: 39
writing block num:
Reading: 64bytes
Blocks sent: 40
writing block num:
Reading: 64bytes
Blocks sent: 41
writing block num:
Reading: 64bytes
Blocks sent: 42
writing block num:
Reading: 64bytes
Blocks sent: 43
writing block num:
Reading: 64bytes
Blocks sent: 44
writing block num:
Reading: 64bytes
Blocks sent: 45
writing block num:
Reading: 64bytes
Blocks sent: 46每执行一个Block需要半分钟左右。。。。
TI中文支持网
