内置Flash的OAD划分
CC2640内置Flash的OAD配置中,对128KB Flash的划分情况如下图:
根据上图,我做了一个表格,表格截图如下:
重新分配地址
如果你的工程默认是没有配置ImageB编译的,那么请先按照如下链接的博文中的方法进行配置,链接如下:
CC2640之OAD固件升级(内置Flash)手动配置ImageB
如果你的工程默认已经配置ImageB的编译了,但是默认的36KB大小并不能满足你的应用开发要求的话,请继续往下看。
为了扩展ImageB的空间,我们需要压缩减少其他部分的空间,参照上表,BIM和OAD Target App的空间是不能动的,所以剩下的我们可以缩减的就是NV Storage Area和BLE Stack的空间了,这两部分的设置都是在编译ImageA的协议栈时定义的。为了达到最大缩减,我们将BLE Stack的绑定相关功能去掉,然后去掉了NV Storage Area(协议栈默认该区域主要存放绑定信息)的空间,这样一共缩减了8KB的空间给ImageB,ImageB的空间就由原来的36KB变成最后的44KB了,具体的配置方式可以参考以下链接的博文:
CC2640之OAD扩充ImageB大小到44KB
正如上面链接的博文最后的“题外话”提到的:绑定功能很多时候还是需要的,而且NV Storage Area有时候也需要用来存放别的数据,所以除非你的ImageB确实需要44KB的空间,否则,个人建议还是保留NV Storage Area区域的空间,然后扩展ImageB到40KB,一般情况下,这个大小足够用了。至于扩展ImageB到40KB的方法,下面我们再一起来看下吧。
下面,我们来看一下具体的操作步骤:
1.BLE Stack的配置
(1)先打开IAR开发工具,然后将
“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\OADTarget\CC26xx\IAR”
目录下的“OADTarget.eww”拖到IAR的左侧工作区,打开“OADTarget”工程,打开之后显示如下:
点击下方的“CC2640Stack”,选择“CC2640Stack”工程配置。
(2)在左侧工作区的工程名“CC2640Stack - FlashROM”上点击鼠标右键,下拉菜单中选择“Options...”,弹出如下对话框:
选择“Linker”---->“Config”,在“Configuration file symbol definitions:”中,将“ICALL_STACK0_ADDR”的值由“0xF000”改为“0x10000”,操作截图如下:
上述配置完成之后点击“OK”,然后重新编译“BLE Stack”。
2.OAD Target App(Image A) project的配置
先打开IAR开发工具,然后将
“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\OADTarget\CC26xx\IAR”
目录下的“OADTarget.eww”拖到IAR的左侧工作区,打开OADTarget工程,切换到“CC2640App”工程配置,操作截图如下:
在左侧工作区工程名“CC2640App-FlashROM”上点击鼠标右键,然后在下拉菜单中选择“Options...”,弹出工程配置对话框。
(1)选择“C/C++ Compiler”---->“Preprocessor”,在下面的“Defined symbols:”修改如下值:
ICALL_STACK0_ADDR=0x10000
OAD_IMG_B_AREA=10
操作截图如下:
然后,选择“Build Actions”,修改“Post-build command line:”下方命令中最后的地址:
:F000:1EFFF
改为:
:10000:1EFFF
操作截图如下:
3.Application(Image B) project
承接之前的博文,我们依然用“Heart Rate”工程为例,用IAR打开该工程。在左侧工作区工程名“CC2640App-FlashOnly_OAD_ImgB”上点击鼠标右键,在下拉菜单中选择“Options...”,然后进行如下配置:
(1)选择“C/C++ Compiler”---->“Preprocessor”,在下面的“Defined symbols:”修改如下值:
ICALL_STACK0_ADDR=0x10000
OAD_IMG_B_AREA=10
操作截图如下:
选择“C/C++ Compiler”---->“Extra Options”,操作截图显示如下:
将上图中框中的“-f $PROJ_DIR$\..\..\Config\IAR-Boundary.bdef”删掉。删掉之后的截图如下:
(2)选择“Linker”---->“Checksum”,修改“End address” 由原来的“0xEFFF”改为“0xFFFF”,操作截图如下:
(3)选择“Build Actions”,修改“Post-build command line:”下方命令中的
"6000:EFFF"
改为
"6000:FFFF"
操作截图如下:
(4)修改编译链接的配置文件“cc26xx_ble_app_oad.icf”,修改下面截图中相应地方:
将上述截图中的“0x8FFF”修改为“0x9FFF”,修改之后的截图如下:
上述步骤都执行完之后,重新编译,即可生成我们需要的扩展到40KB的ImageB的bin文件。