和这个贴的情况一模一样
e2echina.ti.com/…/92218
大概是程序超过一个BANK?注释掉一点程序就可以,只要加一点程序都不行,看似乎是空间不够,但整个项目才100多K
YiKai Chen:
你是編譯沒有修改過的源程序看到这樣的問題還是你修改過的程序
Viki Shi:
map文件看一下内存占用情况
user1975381:
回复 YiKai Chen:
程序一直在修改都没事,昨天加了些程序就不行,但把其它没用的删掉一点就可以
user1975381:
回复 Viki Shi:
编译不过,map文件没有信息吧,是看正常的情况下吗?
YiKai Chen:
回复 user1975381:
你用的BLE Stack版本跟原始例程上那一個?
user1975381:
回复 YiKai Chen:
我用的是stack是1.4.2.2 , IAR 9.10.3, 例改自simpleBLEPeripheral例程, MAP文件内容是这样的:
Error[e18]: Range error,
Number out of range
File: C:\Texas Instruments\BLE-CC254x-1.4.2.2\Projects\ble\SolarStreetlight\Source\simpleBLEPeripheral.c, Line: 1857
Source: LJMP ??powerControlTask_2
Where $ = powerControlTask + 0x1B5CD [0x1B5CD]
in module "simpleBLEPeripheral" (C:\Texas Instruments\BLE-CC254x-1.4.2.2\Projects\ble\SolarStreetlight\CC2541DB\CC2541DK-MINI Keyfob\Obj\simpleBLEPeripheral.r51),
offset 0x50 in segment part 124, segment BANKED_CODE
What: (powerControlTask + 0xEF) [0x1B66C]
Allowed range: 0xFFFF8000 – 0xFFFF
Operand: powerControlTask [0x1b66c]
in module simpleBLEPeripheral (C:\Texas Instruments\BLE-CC254x-1.4.2.2\Projects\ble\SolarStreetlight\CC2541DB\CC2541DK-MINI Keyfob\Obj\simpleBLEPeripheral.r51),
Offset 0xef in segment part 124, segment BANKED_CODE
YiKai Chen:
回复 user1975381:
如果你是加了太多自己的應用程序上去導致flash用光了,那就沒什麼好辦法解決
user1975381:
回复 YiKai Chen:
问题是没有用光啊,正常的时候是*******************************************END OF CROSS REFERENCE*******************************************
116 497 bytes of CODEmemory34 bytes of DATAmemory (+ 84 absolute )6 497 bytes of XDATA memory194 bytes of IDATA memory8 bitsof BITmemory561 bytes of CONST memoryErrors: none
Warnings: none然后我加几条代码就变成了上面说的情况,芯片不是256K吗?
YiKai Chen:
回复 user1975381:
你加了哪几条代码?
user1975381:
回复 YiKai Chen:
真的好奇怪,已经排除了空间不足问题,出现得比较随机,偶尔出现,举个例子,只是一种情况,如下 if(condition) { //do something } else { // do something } 这时编译不通过! 当我改成 if(condition) { //do something } //else //注释了else { // do something } 就通过了 还有一种解决办法,当出现不通过时,只要我在程序中特定位置加入nop就能能解决,如改成如下 if(condition) { //do something asm("nop"); } else { // do something } 它又能链接成功了!
TI中文支持网


