请教TI工程师一个问题:
芯片选型:CC2640R2F
SDK版本:simplelink_cc2640r2_sdk_3_20_00_21
DEMO:simple_peripheral
增加代码:在SimplePeripheral_taskFxn函数中,增加一个定时处理事件,比如USER_PERIODIC_EVT,1ms周期反复执行,在处理事件中逐渐增加代码。
编译报错:#10099-D</a> program will not fit into available memory. placement with alignment fails for section ".cinit" size 0x1890 . Available memory ranges: cc26xx_app.cmd
双击报错行,定位到如下该行:
SECTIONS
{
.intvecs : > FLASH_START
.text : >> FLASH | FLASH_LAST_PAGE
.const : >> FLASH | FLASH_LAST_PAGE
.constdata : >> FLASH | FLASH_LAST_PAGE
.rodata : >> FLASH | FLASH_LAST_PAGE
.cinit : > FLASH | FLASH_LAST_PAGE
.pinit : >> FLASH | FLASH_LAST_PAGE
.init_array : > FLASH | FLASH_LAST_PAGE
.emb_text : >> FLASH | FLASH_LAST_PAGE
.ccfg : > FLASH_LAST_PAGE (HIGH)
但将执行代码缩减,编译成功。
换一种思路,新建一个任务,比如user_TASK,使用信号量控制,1ms执行一次,添加同样的执行代码,编译报同样的错误。
在cc26xx_app.cmd中将FLASH_LAST_PAGE由之前的一个PAGE改为两个PAGE,即由之前的4K扩展到8K,相应的用户代码区由之前的128K缩减到124K,编译通过,但烧录提示fail。
疑问:在TASK中添加的执行代码怎么会占用FLASH_LAST_PAGE,开始以为是创建任务时分配的stack太小导致,实际不是,增加的执行代码并没有多少,不会开辟太多的BUF。
请帮忙协助解决,谢谢。
Alvin Chen:
内存不足了,每个task 都需要给TASK 的stackSize进行初始化,你可以自己试着调整你的stackSize大小。如果无法解决建议更换资源更大的CC2652R