lymbgd 发表于 2013-3-20 13:06

.ARM.__at_0x02FC是什么意思

在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 static/image/common/back.gif
at 0x02FC, CRP
代码保护配置。

我也明白是加密设置,我是问.ARM.__at 0x02FC是什么意思

lymbgd 发表于 2013-3-20 15:18

xinzha 发表于 2013-3-20 14:44 static/image/common/back.gif
你看一下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 static/image/common/back.gif
这个我明白,我是问.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      SizeObject(Section)

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

      ......
      
    .ARM.__at_0x02FC                         0x000002fc   Section      4startup_lpc122x.o(.ARM.__at_0x02FC)
    .bss                                              0x10000000   Section       96libspace.o(.bss)
    HEAP                                          0x10000060   Section      0startup_lpc122x.o(HEAP)
    STACK                                          0x10000060   Section      512startup_lpc122x.o(STACK)
    Heap_Mem                                 0x10000060   Data         0startup_lpc122x.o(HEAP)
    Stack_Mem                                 0x10000060   Data         512startup_lpc122x.o(STACK)
    __initial_sp                                 0x10000260   Data         0startup_lpc122x.o(STACK)

standin000 发表于 2015-8-18 14:13

lymbgd 发表于 2013-3-21 15:12
好像有点明白了
Image Symbol Table



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

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

页: [1]
查看完整版本: .ARM.__at_0x02FC是什么意思