Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6518
  • 博文数量: 6
  • 博客积分: 150
  • 博客等级: 入伍新兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-22 00:13
文章分类

全部博文(6)

文章存档

2011年(6)

我的朋友
最近访客

分类: 嵌入式

2011-05-04 23:16:12

ADS中输出调试信息
clip_image002

Image Map
Symbol
Section cross-reference
在list file中choose一个文件,比如boot270.txt,可以把信息输出到txt中

下面这个输出是subroutprj_2F_DCD的输出,在arm反汇编.doc里。

================================================================================

 

Image Symbol Table

 

    Mapping Symbols

 

    Sym    Value        Execution Region

 

    $a     0x00000000   ER_RO

    $d     0x00000020   ER_RO

 

    Local Symbols

 

    Symbol Name                              Value     Ov Type        Size  Object(Section)

 

    E:\dsparm\pxa270\project\subroutprj_2F_DCD\subrout.s 0x00000000   Number         0  subrout.o ABSOLUTE

                           0x00000000   Data          16  subrout.o(.debug_abbrev)

                           0x00000000   Data         128  subrout.o(.debug_info)

                           0x00000000   Data         108  subrout.o(.debug_line)

    subrout                                  0x00000008   ARM Code      36  subrout.o(subrout)

    start                                    0x00000008   ARM Code       0  subrout.o(subrout)

    stop                                     0x00000014   ARM Code       0  subrout.o(subrout)

    Param1                                   0x00000020   Data           4  subrout.o(subrout)

    Param2                                   0x00000024   Data           4  subrout.o(subrout)

    E:\dsparm\pxa270\project\subroutprj_2F_DCD\fun.s 0x00000000   Number         0  fun.o ABSOLUTE

                           0x00000000   Data          60  fun.o(.debug_frame)

                           0x00000010   Data          16  fun.o(.debug_abbrev)

    fun                                      0x00000000   ARM Code       8  fun.o(fun)

                           0x0000006c   Data          96  fun.o(.debug_line)

                           0x00000080   Data         124  fun.o(.debug_info)

 

    Global Symbols

 

    Symbol Name                              Value     Ov Type        Size  Object(Section)

 

    BuildAttributes$$ARM_ISAv4$M$PE$A:L22$X:L11$S22$~IW$~STKCKD$~SHL$OSPACE 0x00000000   Number         0  anon$$obj.o ABSOLUTE

    doadd                                    0x00000000   ARM Code       8  fun.o(fun)

UE查看bin结果

clip_image004

从bin看到,doadd两条指令放在了bin的最前面,这样

start的值value为0x00000008

fun的值value为0x00000000

startfun都是ARM Code,是代码的标号label,标号的值代表一个地址,所以startfunbin中的地址即为它们的值。

Image Symbol Table中包含两部分,Local Symbol和Global Symbol,前者在只能在定义的文件中引用,后者可以在整个工程中引用。在这个工程中后者只有doadd函数。

========================================================================

 

Memory Map of the image

 

  Image Entry point : 0x00000000

 

  Load Region LR_1 (Base: 0x00000000, Size: 0x0000002c, Max: 0xffffffff, ABSOLUTE)

 

    Execution Region ER_RO (Base: 0x00000000, Size: 0x0000002c, Max: 0xffffffff, ABSOLUTE)

 

    Base Addr    Size         Type   Attr  Idx  E Section Name        Object

 

    0x00000000   0x00000008   Code   RO     5   * fun                 fun.o

    0x00000008   0x00000024   Code   RO     1   * subrout             subrout.o

 

 

    Execution Region ER_RW (Base: 0x0000002c, Size: 0x00000000, Max: 0xffffffff, ABSOLUTE)

 

    **** No section assigned to this execution region ****

 

 

    Execution Region ER_ZI (Base: 0x0000002c, Size: 0x00000000, Max: 0xffffffff, ABSOLUTE)

 

    **** No section assigned to this execution region ****

Image Entry point : 0x00000000这句话有点问题??!!

    Base Addr    Size         Type   Attr  Idx  E Section Name        Object

 

    0x00000000   0x00000008   Code   RO     5   * fun                 fun.o

    0x00000008   0x00000024   Code   RO     1   * subrout             subrout.o

上面这些说明了各段的基地址,长度,类型(code,data),属性(RO,RW),段名,存在的目标文件。

在这里fun放在了subrout的前面,由于armlinker在链接input section的时候排序sort是有规则的,先同一属性(RO,RW,RI),然后按名字的字母表顺序,由于funsubrout都是RO,所以按名字fun在前面。

 

上面的工程只有RO,怎么才能产生RWRI呢???还在研究中。。。

阅读(959) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~