ARM7启动代码,文字池
来源:互联网 发布:淘宝合作协议书 编辑:程序博客网 时间:2024/05/21 05:24
ARM启动代码源文件:
从上面可以看出代码是下载到0x00000000的Flash出,把中断向量表放在首位,把MyStacks堆栈放在内部RAM为0x40000000的区域,紧接着放堆空间,栈空间,启动代码皆是千遍一律,很简单不在赘述,知道代码分配区域就可以了,主要讲解文字池,以及ADS编译器在如何分配地址和搬运变量
这上面的是启动代码的一部分,LTORG用于声明一个数据缓冲池,(也称为文字池)的开始。在使用伪指令LDR时,常常需要在适当的地方加入LTORG声明数据缓冲池,LDR加载的数据暂时放于数据缓冲池。
这段代码是反汇编代码,其中4294967292为-4,至于为什么是-4,这就是反码补码求得的结果,因为SvcStackSpace是个地址,至于为多少我们可以在ADS中查看反汇编,SVC_STACK_LEGTH=0,其他的另外也有三个可以看到也是为0,第二个为(72-1)*4=284。
下面让我们看下ADS编译器是如何根据启动代码源文件分配各个栈的空间地址的,我们知道MyStack,是从0x40000000中开始进行分配的,所以当我们查看反汇编的时候我们可以从此地址往下开始查找,看截图:
由于SvcStackSpace分配了0字节的空间,所以SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4=0x40000060+(0-1)*4=0x40000056,但在这个地址处没有分配空间,所以此句话根本没用到,或者说有误,但是如果不用到Svc空间也就无所谓了,irq也是分配了0的字节空间,所以IrqStackSpace和Svc地址是相同的,fiq就不一样分配了256*4字节的空间1024,那么Abt=Und=0x40000060+1024(0x400)=0x40000460,那么DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4=0x40000060+(256-1)*4=0x40000456
- ARM7启动代码,文字池
- ARM7(三星44B0)启动代码分析
- LPC11C14(Cortex-m0-->ARM7)启动代码分析
- ARM7启动代码的分析与设计
- 周立功lpc21xx/lpc22xx系列ARM7启动代码分析
- LPC系列 ARM7 startup.s 启动代码分析(ZZ)
- 周立功lpc21xx/lpc22xx系列ARM7启动代码分析
- LPC系列 ARM7 startup.s 启动代码分析(ZZ)
- [ARM7--LPC2478]带USB功能的启动代码的分析
- ARM7启动流程图
- ARM7 的启动
- arm7
- ARM7在嵌入式应用中启动程序的实现
- ARM7在嵌入式应用中启动程序的实现
- ARM7在嵌入式应用中启动程序的实现
- ARM7在嵌入式应用中启动程序的实现
- CentOS 启动文字模式
- Linux文字界面启动
- 日期插件My97DatePicker
- Fragment保存状态
- 容器搜索算法:lower_bound, uper_bound
- 7.23 继续HTML内容及XHTML、CSS的学习
- [Drools]JAVA规则引擎 -- Drools
- ARM7启动代码,文字池
- UVa 1419 Ugly Windows 解题报告(水题)
- epoll小结
- jQuery Ajax 实例 全解析
- oracle 一些基本操作语句
- map容器的用法
- C++调用系统时间
- struct 结构体中对数组和指针的操作细节
- 关于android播放gif图片小总结