.ARM.__at_0x02FC是什么意思

[复制链接]
7450|11
 楼主| lymbgd 发表于 2013-3-20 13:06 | 显示全部楼层 |阅读模式
在Cortex-M0的启动代码中,有以下几句:

CRP_Level                EQU                0xFFFFFFFF       

                IF      :LNOT::DEF:NO_CRP
                AREA    |.ARM.__at_0x02FC|, CODE, READONLY
CRP_Key         DCD     CRP_Level
                ENDIF

请问|.ARM.__at_0x02FC是什么意思
aozima 发表于 2013-3-20 14:00 | 显示全部楼层
at 0x02FC, CRP
代码保护配置。
xinzha 发表于 2013-3-20 14:44 | 显示全部楼层
你看一下map表,应该在0x2fc这个位置放了CRP_Key这个变量。
 楼主| lymbgd 发表于 2013-3-20 15:16 | 显示全部楼层
aozima 发表于 2013-3-20 14:00
at 0x02FC, CRP
代码保护配置。

我也明白是加密设置,我是问.ARM.__at 0x02FC是什么意思
 楼主| lymbgd 发表于 2013-3-20 15:18 | 显示全部楼层
xinzha 发表于 2013-3-20 14:44
你看一下map表,应该在0x2fc这个位置放了CRP_Key这个变量。

这个我明白,我是问.ARM.__at_0x02FC是什么意思
 楼主| lymbgd 发表于 2013-3-20 15:29 | 显示全部楼层
本帖最后由 lymbgd 于 2013-3-20 15:30 编辑

我只找到这个

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xinzha 发表于 2013-3-20 16:03 | 显示全部楼层
lymbgd 发表于 2013-3-20 15:18
这个我明白,我是问.ARM.__at_0x02FC是什么意思

如果情况确实是这样的,那就已经很明显了。这句话的意思是0x2fc这个位置的内容是下面那句话,并且是arm语句。这属于汇编范畴的,每种汇编器的规定不一样,你得根据你所使用的汇编器去查找。
aozima 发表于 2013-3-20 16:06 | 显示全部楼层
AT直译意思是: “在”
就是在这个位置放一个这样的数据,这个数据的意义刚好是MCU的代码保护配置。
江枫渔火 发表于 2013-3-20 17:11 | 显示全部楼层
|.ARM.__at_0x02FC|
这只是一个符号,左右两边各有一个竖,是因为这儿符号不是字母开头。所以符号是:.ARM.__at_0x02FC
里面的点,还有at,都只是一串字符里的字符,没有特殊意义。但能让你初步估计此符号描述的位置是在: 0x02FC,而它在这里的作用仅仅是利于理解,注释
该符号表示下面内容作为一个独立的代码块,直到下一个AREA定义为止。
该代码块的实际位置,与该符号描述的 0x02FC 没有半毛钱关系,而是由MDK中的分散加载脚本定义的。分散加载脚本则是连接器的运行参数。
应该说的比较明白了。
 楼主| lymbgd 发表于 2013-3-21 13:49 | 显示全部楼层
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x00000000 0x00020000  {    ; load region size_region
  ER_IROM1 0x00000000 0x00020000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x10000000 0x00002000  {  ; RW data
   .ANY (+RW +ZI)
  }
}
这里看不出来啊,为什么可以加载到0x02FC
 楼主| lymbgd 发表于 2013-3-21 15:12 | 显示全部楼层
本帖最后由 lymbgd 于 2013-3-21 15:16 编辑

好像有点明白了
Image Symbol Table

    Local Symbols

    Symbol Name                              Value     Ov Type        Size  Object(Section)

    RESET                                        0x00000000   Section      188  startup_lpc122x.o(RESET)
    ../clib/angel/boardlib.s                 0x00000000   Number         0  boardinit3.o ABSOLUTE
    ../clib/angel/boardlib.s                 0x00000000   Number         0  boardinit2.o ABSOLUTE
    ../clib/angel/boardlib.s                 0x00000000   Number         0  boardinit1.o ABSOLUTE
    ../clib/angel/boardlib.s                 0x00000000   Number         0  boardshut.o ABSOLUTE
    ../clib/angel/handlers.s                 0x00000000   Number         0  __scatter_zi.o ABSOLUTE

        ......
        
    .ARM.__at_0x02FC                         0x000002fc   Section        4  startup_lpc122x.o(.ARM.__at_0x02FC)
    .bss                                              0x10000000   Section       96  libspace.o(.bss)
    HEAP                                            0x10000060   Section        0  startup_lpc122x.o(HEAP)
    STACK                                          0x10000060   Section      512  startup_lpc122x.o(STACK)
    Heap_Mem                                   0x10000060   Data           0  startup_lpc122x.o(HEAP)
    Stack_Mem                                   0x10000060   Data         512  startup_lpc122x.o(STACK)
    __initial_sp                                   0x10000260   Data           0  startup_lpc122x.o(STACK)
standin000 发表于 2015-8-18 14:13 | 显示全部楼层
lymbgd 发表于 2013-3-21 15:12
好像有点明白了
Image Symbol Table

启动代码里类似这样的代码放的,

  1.         IF      :LNOT::DEF:NO_CRP
  2.                  AREA    |.ARM.__at_0x02FC|, CODE, READONLY
  3.                  CRP_Key         DCD     0xFFFFFFFF
  4.                  ENDIF

您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

82

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部