ADS中输出调试信息

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
<Anonymous Symbol> 0x00000000 Data 16 subrout.o(.debug_abbrev)
<Anonymous Symbol> 0x00000000 Data 128 subrout.o(.debug_info)
<Anonymous Symbol> 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
<Anonymous Symbol> 0x00000000 Data 60 fun.o(.debug_frame)
<Anonymous Symbol> 0x00000010 Data 16 fun.o(.debug_abbrev)
fun 0x00000000 ARM Code 8 fun.o(fun)
<Anonymous Symbol> 0x0000006c Data 96 fun.o(.debug_line)
<Anonymous Symbol> 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结果

从bin看到,doadd两条指令放在了bin的最前面,这样
start的值value为0x00000008
fun的值value为0x00000000
start和fun都是ARM Code,是代码的标号label,标号的值代表一个地址,所以start和fun在bin中的地址即为它们的值。
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),然后按名字的字母表顺序,由于fun和subrout都是RO,所以按名字fun在前面。
上面的工程只有RO,怎么才能产生RW,RI呢???还在研究中。。。 |