打印

被编译器使用的区域和不需要被系统记住的区域,如何知晓

[复制链接]
1675|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jpg4151|  楼主 | 2012-7-17 14:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2012-7-17 14:36 | 只看该作者
KEIL没有办法知晓,只能自己分配,比如绝对定位

IAR可以,使用__no_init修饰即可

使用特权

评论回复
板凳
dlyt_test001| | 2012-7-17 15:05 | 只看该作者
通过资源分配文件,分配RAM为上电后清0的区域和需要初始化的区域。再把需要初始化的数据放在ROM中。就可以了!

使用特权

评论回复
地板
jpg4151|  楼主 | 2012-7-17 15:50 | 只看该作者
就以这个为例,哪些空间是在看门狗复位后要清零的         
* * * * * * * D A T A M E M O R Y * * * * * * *
REG   0000H   0008H   ABSOLUTE   "REG BANK 0"
DATA  0008H   0012H   UNIT       ?DT?VARS
DATA  001AH   0001H   UNIT       ?DT?PUTCHAR
001BH 0005H                      *** GAP ***
DATA  0020H   0001H   BIT_ADDR   ?C_LIB_DBIT
BIT   0021H.0 0000H.5 UNIT       ?BI?COINOP
BIT   0021H.5 0001H.2 UNIT       "BIT_GROUP"
      0022H.7 0000H.1            *** GAP ***
DATA  0023H   001BH   UNIT       ?DT?COINOP
DATA  003EH   000FH   UNIT       ?C_LIB_DATA
DATA  004DH   0029H   UNIT      "DATA_GROUP"
IDATA 0076H   001EH   UNIT       ?ID?COINOP
IDATA 0094H   0001H   UNIT       ?STACK

使用特权

评论回复
5
jpg4151|  楼主 | 2012-7-17 15:50 | 只看该作者
就以这个为例,哪些空间是在看门狗复位后要清零的         
* * * * * * * D A T A M E M O R Y * * * * * * *
REG   0000H   0008H   ABSOLUTE   "REG BANK 0"
DATA  0008H   0012H   UNIT       ?DT?VARS
DATA  001AH   0001H   UNIT       ?DT?PUTCHAR
001BH 0005H                      *** GAP ***
DATA  0020H   0001H   BIT_ADDR   ?C_LIB_DBIT
BIT   0021H.0 0000H.5 UNIT       ?BI?COINOP
BIT   0021H.5 0001H.2 UNIT       "BIT_GROUP"
      0022H.7 0000H.1            *** GAP ***
DATA  0023H   001BH   UNIT       ?DT?COINOP
DATA  003EH   000FH   UNIT       ?C_LIB_DATA
DATA  004DH   0029H   UNIT      "DATA_GROUP"
IDATA 0076H   001EH   UNIT       ?ID?COINOP
IDATA 0094H   0001H   UNIT       ?STACK

使用特权

评论回复
6
ayb_ice| | 2012-7-17 16:45 | 只看该作者
本帖最后由 ayb_ice 于 2012-7-17 16:49 编辑

一个最简单的方法是用绝对定位,然后修改起动文件,跳过即可

或者从后面分配(char idata my_data _at_ 0xe0;)



比如将RAM的最后32个字节用于分配,修改起文件

IDATALEN  EQU   0E0H   ;// 100H-32

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

46

帖子

0

粉丝