下面的例子,说明了各种段名、PLACEMENT 和SEGMENTS之间的对应关系。
例4 定义非自动清零的数据段
SEGMENTS ……
RAM 0x2FFF;
RAM_NO_INIT 0x3FFF; ?? END
= READ_WRITE = NO_INIT DATA_NEAR 0x2000 TO 0x3000 TO DATA_NEAR
PLACEMENT ??
DATA_PERSISTENT INTO RAM_NO_INIT; ?? END
//源程序编写:
#pragma DATA_SEG DATA_PERSISTENT //定义复位时非自定清零数据段
byte sysState;
#pragma DATA_SEG DEFAULT
4 堆栈的设置
关于堆栈的设置,Codewarrior提供了两种方式:“STACKSIZE”命令方式和“STACKTOP”命令方式。这两种方式在同一个.prm文件中,不能同时存在。当用户只关心堆栈的大小而不关心堆栈的存放位置时,推荐使用STACKSIZE方式。
系统默认的方式为使用STACKSIZE方式。
STACKSIZE命令方式:
当使用STACKSIZE命令方式时,如果在PLACEMENT-END部分声明了“SSTACK INTO RAM”,这样的话,堆栈区就被放在RAM区域的起始部分,下面的例子说明了这种方式: 例5
SEGMENTS ……
RAM = READ_WRITE TO 0x3FFF; ?? END
PLACEMENT ??
SSTACK, PAGED_RAM, DEFAULT_RAM ??
DATA_NEAR RAM; 0x2000 INTO
相关推荐: