CC1310空中升级笔记05 BIM适配工程处理
前言
在學習OAD例程時,才真正明白CC1350 project0的用處。對一個待增加OAD的工程,需要學習它的操作方法。另外我還結(jié)合自己淌過的幾個坑,總結(jié)了這個操作記錄。希望能對一些做CC1310 OAD的朋友們有所幫助。
本文作者twowinter,轉(zhuǎn)載請注明作者:http://blog.csdn.net/iotisan/
1.增加宏
In project option -> ARM Compiler -> Advanced Options -> predefined symbols add ‘USE_BIM’ define
// 我在例程中沒看到有使用這個宏,貌似沒關(guān)系
2.使能HEX生成
In project option -> ARM Hex Utility -> check Enable ARM Hex Utility
感覺這樣還不夠,我找到了個帖子,在e2e論壇還發(fā)了個帖子。
http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/562492
我在帖子中問CC1310應(yīng)該怎么做:–intel and –memwidth=8, and – romwidth=8.
3.cmd處理
CC1310_LAUNCHXL_TIRTOS.cmd 和 CC1310_LAUNCHXL_TIRTOS-bim.cmd 的主要區(qū)別在這里:
/* The starting address of the application. Normally the interrupt vectors */ /* must be located at the beginning of the application. */ #define FLASH_BASE 0x0 #define FLASH_SIZE 0x20000/* The starting address of the application. For a Boot Image Manager */ /* compatible image the Applicaion need to start in the first page. */ #define FLASH_BASE 0x1000 #define FLASH_SIZE 0x1EFF0照這樣來看,增加了BIM之后,應(yīng)用程序從4K開始。在第一步中還使能了USE_BIM的宏。
ifdef USE_BIM
#define FLASH_OAD_IMG_HDR_SIZE 0x10 #define FLASH_OAD_IMG_START FLASH_APP_BASE + FLASH_OAD_IMG_HDR_SIZE #define FLASH_OAD_IMG_MAX_LEN FLASH_LEN - (2 * FLASH_PAGE_LEN) - FLASH_OAD_IMG_HDR_SIZEendif
研究了下CC1350的兩個boot程序,一個是片內(nèi)的,一個是片外的,分別研究了下他們的跳轉(zhuǎn)地址。目前這個APP工程是跳轉(zhuǎn)到了0x1010,采用的是extflash的工程。為什么片外OAD的BIM要4K的flash,大概是片內(nèi)的判斷比較簡單,片外則要加入SPI,所以代碼量大一些。
this is on chip:
asm(" MOV R0, #0x00D0 "); asm(" LDR R1, [R0, #0x4] ");// Reset the stack pointer, asm(" LDR SP, [R0, #0x0] ");// And jump. asm(" BX R1 ");this is extflash:
asm(" MOV R0, #0x1010 "); asm(" LDR R1, [R0, #0x4] ");// Reset the stack pointer, asm(" LDR SP, [R0, #0x0] ");// And jump. asm(" BX R1 ");4.release.cfg
RTOS子工程中還有一個cfg文件。
rfDmExamples-bim.cfg 比 例程的 release.cfg ,默認多了如下兩個設(shè)置:
5.RTOS子工程的替換
指南中沒體現(xiàn),自己摸索了出來。
從CC13X0-SDK開始,每個工程都會帶一個RTOS的子工程。
這塊就直接替換rtos的工程。
右鍵工程 -> Show Build Settings -> CCS Build -> Dependencies
Remove tirtos_builds_CC1310_LAUNCHXL_release_ccs
Add tirtos-bim_builds_CC1310_LAUNCHXL_release_ccs
6.把ccfg.c排除在外
指南中沒體現(xiàn),自己摸索了出來。
因為實際生成的hex,仍保留CCFG區(qū)域。我之前深深吃了這個虧。如果瞎搞的話,CC1310可是會brick哦,這樣只能返廠了。
7.編譯完后處理各個bin
合成即將運行的hex,版本號v3_01
hexmerge.py將應(yīng)用層hex和BIM的hex合成一個文件,這個是在intelhex-2.1中。
python /usr/bin/hexmerge.py -o bin/rfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs_all-v3_01.hex "--overlap=error" bin/rfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs-v3_01.hex bin/bim_extflash_cc1350lp_bim.hexrfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs_all-v3_01.hex rfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs-v3_01.hex bim_extflash_cc1350lp_bim.hex準備空中升級的bin,版本號v3_02
oad_image_tool.py 將應(yīng)用層hex處理成bin
python tools/oad_image_tool.py -v 0x0302 -i remoteapp bin/rfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs-v3_02.hex -ob bin/rfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs_app-v3_02.bin -m 0x1000rfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs-v3_02.hex
rfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs_app-v3_02.bin
End
總結(jié)
以上是生活随笔為你收集整理的CC1310空中升级笔记05 BIM适配工程处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java】构造器的作用是什么?使用中有
- 下一篇: matlab仿真三相短路电路,同步发电机