[资料分享] CC2640R2F工程之间相互转换

Jacktang   2020-2-5 10:00 楼主

在使用CC2640R2F的时候发现一个现象,就是在低版本的SDK中有一些工程,到了高版本中SDK就没有了,比如:

simplelink_cc2640r2_sdk_1_40_00_45 中有multi_role

simplelink_cc2640r2_sdk_2_40_00_32 中则没有了multi_role,于是我打算自己动手修改

simple_peripheral + simple_central,其实很简单,无非就是大融合,然后出现了编译过不去的问题,

于是我做了一个小实验

例如在CC2640R2_simple_peripheral从机工程中调用

GapScan_enable(0, DEFAULT_SCAN_DURATION, 0);
函数,怎会出现错误:
undefined             first referenced
  symbol                   in file     
 ---------             ----------------
 GapScan_enable        <whole-program> 
起初以为是头文件没有包含造成的,经过各种搜索以后才发现,原来是工程配置的原因
因为GapScan_enable函数是CC2640R2_simple_central主机工程中的函数,所以需要修改
工程配置文件build_config.opt,
/* BLE Host Build Configurations */
-DHOST_CONFIG=PERIPHERAL_CFG
/* -DHOST_CONFIG=CENTRAL_CFG */
/* -DHOST_CONFIG=BROADCASTER_CFG */
/* -DHOST_CONFIG=OBSERVER_CFG */
/* -DHOST_CONFIG=PERIPHERAL_CFG+OBSERVER_CFG */
/* -DHOST_CONFIG=CENTRAL_CFG+BROADCASTER_CFG */
/* -DHOST_CONFIG=PERIPHERAL_CFG+CENTRAL_CFG */
将-DHOST_CONFIG=PERIPHERAL_CFG修改成
-DHOST_CONFIG=PERIPHERAL_CFG+CENTRAL_CFG即可
此时的蓝牙协议栈就包含了主从机的所有功能函数了,
修改配置以后,需要重新编译rebuild project,

有可能出现这样一个错误:
C:/ti/simplelink_cc2640r2_sdk_2_40_00_32/source/ti/ble5stack/common/cc26xx/ccs/cc26xx_app.cmd", line 259: error #10099-D: program will not fit into available memory.  placement with alignment fails for section ".cinit" size 0x11b7 .  Available memory ranges:
   FLASH        size: 0x1f000      unused: 0x4          max hole: 0x3       
   FLASH_LAST_PAGE   size: 0x1000       unused: 0x30a        max hole: 0x308     
error #10010: errors encountered during linking; "ble5_simple_peripheral_cc2640r2lp_app.out" not built
程序太大导致flash装不下,
原来的
#define FLASH_SIZE 0x00020000
将其修成
#define FLASH_SIZE 0x00040000
编译即可成功
但是CC2640R2f的falsh
275KB 非易失性存储器,包括 128KB 系统内可编程闪存
也就是128*1024=131072,换成16进制就是0x20000,所以
修成
#define FLASH_SIZE 0x00040000
虽然编译通过了,但是无法烧写进入板子当中。

 

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复