打印

.ARM.__at_0x02FC是什么意思

[复制链接]
6472|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是什么意思

使用特权

评论回复
5
lymbgd|  楼主 | 2013-3-20 15:18 | 只看该作者
xinzha 发表于 2013-3-20 14:44
你看一下map表,应该在0x2fc这个位置放了CRP_Key这个变量。

这个我明白,我是问.ARM.__at_0x02FC是什么意思

使用特权

评论回复
6
lymbgd|  楼主 | 2013-3-20 15:29 | 只看该作者
本帖最后由 lymbgd 于 2013-3-20 15:30 编辑

我只找到这个

使用特权

评论回复
7
xinzha| | 2013-3-20 16:03 | 只看该作者
lymbgd 发表于 2013-3-20 15:18
这个我明白,我是问.ARM.__at_0x02FC是什么意思

如果情况确实是这样的,那就已经很明显了。这句话的意思是0x2fc这个位置的内容是下面那句话,并且是arm语句。这属于汇编范畴的,每种汇编器的规定不一样,你得根据你所使用的汇编器去查找。

使用特权

评论回复
8
aozima| | 2013-3-20 16:06 | 只看该作者
AT直译意思是: “在”
就是在这个位置放一个这样的数据,这个数据的意义刚好是MCU的代码保护配置。

使用特权

评论回复
9
江枫渔火| | 2013-3-20 17:11 | 只看该作者
|.ARM.__at_0x02FC|
这只是一个符号,左右两边各有一个竖,是因为这儿符号不是字母开头。所以符号是:.ARM.__at_0x02FC
里面的点,还有at,都只是一串字符里的字符,没有特殊意义。但能让你初步估计此符号描述的位置是在: 0x02FC,而它在这里的作用仅仅是利于理解,注释
该符号表示下面内容作为一个独立的代码块,直到下一个AREA定义为止。
该代码块的实际位置,与该符号描述的 0x02FC 没有半毛钱关系,而是由MDK中的分散加载脚本定义的。分散加载脚本则是连接器的运行参数。
应该说的比较明白了。

使用特权

评论回复
10
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

使用特权

评论回复
11
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)

使用特权

评论回复
12
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

使用特权

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

本版积分规则

13

主题

82

帖子

0

粉丝