我现在使用TI的zstack开发CC2530F256,使用IAR7.51A的默认设置编译Sample中的Generic App工程后后生成的map文件中的 提示
XSTACK ISTACK
| Stack used (prev) : 0000126B 000001A6
01 strlen::?relay
| Stack used (prev) : 0000126B 000001A6
| + function block : 00000000 00000000
<-Sub-tree of type: Function tree
| Stack used : 0000126B 000001A6,
但IAR中的Option–General Options–Stack/Heap–Stack sizes中使用:IDATA:0xC0,PDATA:0x80; XDATA:0x300的设置,工程能够编译,按照经验,需要将IAR中的Stack空间设置的大于等于map中生成的stack占用量才能防止堆栈溢出,但如果按照map中的值设置,cc2530的大部分RAM都被Stack占用,整个工程将无法编译通过。请问map文件中的Stack何IAR中的Stack有何关系,TI的zstack是否对这个地方做了特殊的处理,谢谢。
VV:
你在IAR设备的具体芯片型号有选对吗
Zhifeng Bai:
回复 VV:
IAR中选择的就是CC2530,没有选择具体型号的地方就是在IAR的General Options–Target–Device information里选择的。
VV:
回复 Zhifeng Bai:
我IAR里面选的是 CC2530F256
Zhifeng Bai:
回复 VV:
能给截个图吗?这是我的配置截图,Device选择C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation version\8051\config\devices\Texas Instruments\CC2530.i51,我用的IAR版本是7.51A,和这个版本有关系吗?
VV:
回复 Zhifeng Bai:
请换成最新的8.20版本,试下
Zhifeng Bai:
回复 VV:
使用8.20的版本还能使用ZStack-CC2530-2.3.0-1.4.0这个版本的协议栈吗?我们现在就是使用的这个版本的协议栈开发的
Zhifeng Bai:
回复 Zhifeng Bai:
您好:
我用8.20版本的IAR打开原来的工程文件,选择device为CC2530F256后,编译提示一下错误:
Error[e16]: Segment RAM_CODE_FLASH (size: 0x27 align: 0) is too long for segment definition. At least 0x4 more bytes needed. The problem occurred while processing the segment placement command "-Z(CODE)RAM_CODE_FLASH=_RAM_CODE_FLASH_START-_RAM_CODE_FLASH_END", where at the moment of placement the available memory ranges were "CODE:39edd-39eff"
Reserved ranges relevant to this placement:
CODE:39edd-39eff RAM_CODE_FLASH
BIT:0-7 BREG
BIT:80-97 SFR_AN
BIT:a0-af SFR_AN
BIT:b8-c7 SFR_AN
BIT:d8-df SFR_AN
BIT:e8-ef SFR_AN
BIT:f8-ff SFR_AN ,
用原来的IAR7.51A编译配置文件使用cc2530.i51时是没有问题的,我试了TI的其他例程,都提示这个错误,请问这是什么原因啊?
Zhifeng Bai:
回复 Zhifeng Bai:
我使用8.20的IAR打开ZStack-CC2530-2.5.0版本中的例程编译正常,但提示的资源占用也很大,如下:
XSTACK ISTACK
| Stack used (prev) : 0000123A 00000096
01 strlen::?relay
| Stack used (prev) : 0000123A 00000096
| + function block : 00000000 00000000
<-Sub-tree of type: Function tree
| Stack used : 0000123A 00000096,这只是例程,stack占用也是很大的,这里我选择的器件是CC2530F256.
VV:
回复 Zhifeng Bai:
1 你下载的IAR,是不是Code size limit版本的
2 2.5.0版本的协议栈是好几年前release,你去TI网站下载最新的版本试下
Zhifeng Bai:
回复 VV:
我使用的是30天全功能试用版,编译2.5.0的没有问题,编译出来的堆栈占用情况和7.51A编译出来的差不多,我感觉不是编译器的问题,我看了一下现在TI最新的协议栈版本是2.5.1a,版本差距也不大吧,希望您能给一个明确的答复,谢谢支持。