微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM映像文件 he 编译器自动生成的启动函数

ARM映像文件 he 编译器自动生成的启动函数

时间:11-28 来源:互联网 点击:

age entry point ,是一个初始程序的入口地址,我这里是0x0c100000 。

Linker/ARM Linker:RO base—0x0c100000 RW base—0x0c200000

Options:Image entry point—0x0c100000

有了上面这些信息我们就可以完全知道这几个变量是怎么来的了:

|Image$$RO$$Base| = Image entry point = 0x0c100000 ;表示程序代码存放的起始地址

|Image$$RO$$Limit|=程序代码起始地址+代码长度+1=0x0c100000+Tatal RO size+1

= 0x0c100000 + 184571 + 1 = 0x0c100000 +0x2D0FB + 1

= 0x0c12d0fc

|Image$$RW$$Base| = 0x0c200000 ;由RW base 地址指定

|Image$$RW$$Limit| =|Image$$RW$$Base|+ RW Data 53 = 0x0c200000+0x37(4的倍数,0到55,共56个单元)

=0x0c200037

|Image$$ZI$$Base| = |Image$$RW$$Limit| + 1 =0x0c200038

|Image$$ZI$$Limit| = |Image$$ZI$$Base| + ZI Data 17028

=0x0c200038 + 0x4284

=0x0c2042bc

也可以由此计算:

|Image$$ZI$$Limit| = |Image$$RW$$Base| +TatalRWsize(RWData+ZIData) 17081

=0x0c200000+0x42b9+3(要满足4的倍数)

=0x0c2042bc

2410启动代码注释

BaseOfROM DCD |Image$$RO$$Base|

TopOfROM DCD |Image$$RO$$Limit|

BaseOfBSS DCD |Image$$RW$$Base|

BaseOfZero DCD |Image$$ZI$$Base|

EndOfBSS DCD |Image$$ZI$$Limit|

adr r0, ResetEntry;ResetEntry是复位运行时域的起始地址,在boot nand中一般是0

ldr r2, BaseOfROM;

cmp r0, r2

ldreq r0, TopOfROM;TopOfROM=0x30001de0,代码段地址的结束

beq InitRam

ldr r3, TopOfROM

;part 1,通过比较,将ro搬到sdram里,搬到的目的地址从 | Image$$RO$$Base| 开始,到|Image$$RO$$Limit|结束

0

ldmia r0!, {r4-r7}

stmia r2!, {r4-r7}

cmp r2, r3

bcc ?;

;part 2,搬rw段到sdram,目的地址从|Image$$RW$$Base| 开始,到|Image$$ZI$$Base|结束

sub r2, r2, r3;r2=0

sub r0, r0, r2;

InitRam ;carry rw to baseofBSS

ldr r2, BaseOfBSS ;TopOfROM=0x30001de0,baseofrw

ldr r3, BaseOfZero ;BaseOfZero=0x30001de0

0

cmp r2, r3

ldrcc r1, [r0], #4

strcc r1, [r2], #4

bcc ?

;part 3,将sdram zi初始化为0,地址从|Image$$ZI$$Base|到|Image$$ZI$$Limit|

mov r0, #0;init 0

ldr r3, EndOfBSS;EndOfBSS=30001e40

1

cmp r2, r3

strcc r0, [r2], #4

bcc ?

参考资料:

1) RO段、RW段和ZI段 | Computer, Electron and Technology

http://www.donevii.com/post/638.html

2) ARM映像文件简介及简单的初始化C运行环境 - 灿烂于草坪之上 - 博客大巴

http://kellycan.blogbus.com/logs/10962408.html

3) Image$$??$$Limit 的含义_蓝色天空

http://hi.baidu.com/liudefang888/blog/item/6192fd45620ecc3b86947378.html

4) 2440启动代码注解 - guokun的个人空间 - ITPUB个人空间 - powered by X-Space

http://space.itpub.net/13771794/viewspace-483446

5) ADS的基本设置 - 夏爵爷的脚步 - CSDN博客

http://blog.csdn.net/xtconan/archive/2009/05/26/4218106.aspx

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top