前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CC1310空中升级笔记05 BIM适配工程处理

CC1310空中升级笔记05 BIM适配工程处理

作者头像
twowinter
发布2020-04-17 12:32:23
7970
发布2020-04-17 12:32:23
举报
文章被收录于专栏:twowintertwowinter

前言

在学习OAD例程时,才真正明白CC1350 project0的用处。对一个待增加OAD的工程,需要学习它的操作方法。另外我还结合自己淌过的几个坑,总结了这个操作记录。希望能对一些做CC1310 OAD的朋友们有所帮助。

本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/

1.增加宏

In project option -> ARM Compiler -> Advanced Options -> predefined symbols add ‘USE_BIM’ define // 我在例程中没看到有使用这个宏,貌似没关系

2.使能HEX生成

In project option -> ARM Hex Utility -> check Enable ARM Hex Utility

感觉这样还不够,我找到了个帖子,在e2e论坛还发了个帖子。 http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/562492

我在帖子中问CC1310应该怎么做:–intel and –memwidth=8, and – romwidth=8.

3.cmd处理

CC1310_LAUNCHXL_TIRTOS.cmd 和 CC1310_LAUNCHXL_TIRTOS-bim.cmd 的主要区别在这里:

代码语言:javascript
复制
/* 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之后,应用程序从4K开始。在第一步中还使能了USE_BIM的宏。

ifdef USE_BIM

代码语言:javascript
复制
#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_SIZE

endif

研究了下CC1350的两个boot程序,一个是片内的,一个是片外的,分别研究了下他们的跳转地址。目前这个APP工程是跳转到了0x1010,采用的是extflash的工程。为什么片外OAD的BIM要4K的flash,大概是片内的判断比较简单,片外则要加入SPI,所以代码量大一些。

this is on chip:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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 ,默认多了如下两个设置:

代码语言:javascript
复制
/*
 * Assign an address for the reset vector.
 *
 * Default is 0x0, which is the start of Flash. Ordinarily this setting should
 * not be changed.
 */
m3Hwi.resetVectorAddress = 0x1010;

/*
 * Assign an address for the vector table in RAM.
 *
 * The default is the start of RAM. This table is placed in RAM so interrupts
 * can be added at runtime.
 *
 * Note: To change, verify address in the device specific datasheets'
 *     memory map.
 */
m3Hwi.vectorTableAddress = 0x20000000;

5.RTOS子工程的替换

指南中没体现,自己摸索了出来。

从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排除在外

指南中没体现,自己摸索了出来。

因为实际生成的hex,仍保留CCFG区域。我之前深深吃了这个亏。如果瞎搞的话,CC1310可是会brick哦,这样只能返厂了。

7.编译完后处理各个bin

合成即将运行的hex,版本号v3_01

hexmerge.py将应用层hex和BIM的hex合成一个文件,这个是在intelhex-2.1中。

代码语言:javascript
复制
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.hex

rfWsnNodeOadClient_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 将应用层hex处理成bin

代码语言:javascript
复制
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 0x1000

rfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs-v3_02.hex rfWsnNodeOadClient_CC1310_LAUNCHXL_tirtos_ccs_app-v3_02.bin

End


iotisan 博客专家

发布了251 篇原创文章 · 获赞 253 · 访问量 84万+

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1.增加宏
  • 2.使能HEX生成
  • 3.cmd处理
  • ifdef USE_BIM
  • endif
    • 4.release.cfg
      • 5.RTOS子工程的替换
        • 6.把ccfg.c排除在外
          • 7.编译完后处理各个bin
            • 合成即将运行的hex,版本号v3_01
            • 准备空中升级的bin,版本号v3_02
          • End
          相关产品与服务
          智能推荐平台
          智能推荐平台(Intelligent Recommendation Platform,IRP)是集生态、技术、场景于一体,采用业界领先的AI学习技术和智能推荐算法,基于腾讯多年在超大型场景中积累的最佳实践方法论,助力客户业务实现增长的企业级应用产品。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档