CC2640R2F工程之間相互轉換

在使用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
雖然編譯通過了,但是無法燒寫進入板子當中,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章