Uboot中start.S源码的指令级的详尽解析
Version: 1.6
Author: green-waste (at) 163.com
说明,由于本文内容太长,不方便在博客系统一点点贴出来,所以,此处只是贴出来目录,感兴趣的话,自己下载PDF版本:
截止2011-05-01,当前最新版本是v1.6.
“Uboot中start.S源码的指令级的详尽解析 v1.6.pdf” 的下载地址:
1.chinaunix博客(请下载后一定要将后缀改为7z,再解压,即可。):
http://blog.chinaunix.net/attachment/attach/77/44/27/277744278a6fbb52c4ea9bb1f25fd651107a3697.pdf
2.csdn资源下载:
http://download.csdn.net/source/3240514
3.爱问iask:
http://ishare.iask.sina.com.cn/f/15046236.html
4.rayfile:
http://www.rayfile.com/zh-cn/files/1a590578-745e-11e0-b1a7-0015c55db73d/
5.豆丁在线阅读:
http://www.docin.com/p-193341236.html
目录
4.1. 如何查看C或汇编的源代码所对应的真正的汇编代码… 67
4.2. uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式… 69
4.3. 什么是watchdog + 为何在要系统初始化的时候关闭watchdog. 70
4.3.2. 为何在要系统初始化的时候关闭watchdog. 71
4.4.1. 为何ARM9和ARM7一样,也是PC=PC+8. 73
4.6. 为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈… 81
4.6.3. 举例分析C语言函数调用是如何使用堆栈的… 83
4.7. 关于为何不直接用mov指令,而非要用adr伪指令… 84
4.9.3. 汇编中的.globl=C语言中的extern. 90
4.9.4. 汇编中用bl指令和mov pc,lr来实现子函数调用和返回… 90
4.9.5. 汇编中的对应位置有存储值的标号 = C语言中的指针变量… 91
4.9.6. 汇编中的ldr+标号,来实现C中的函数调用… 93
4.9.7. 汇编中设置某个寄存器的值或给某个地址赋值… 94
图表
图表 18 关于访问控制位在域访问控制寄存器中的含义… 45
图表 28 ARM7三级流水线 vs ARM9五级流水线… 74
图表 29 ARM7三级流水线到ARM9五级流水线的映射… 74
图表 31 ARM9的五级流水线中为何PC=PC+8. 77
图表 32 ARM Application Procedure Call Standard (AAPCS) 79
图表 35 mov指令0xe3a00453的位域含义解析… 88
版本历史
版本 | 时间 | 内容 |
1.0 | 2011-04-17 | 1.详细解释了uboot的start.s中的每行代码; 2.添加了相关知识点的详细解释; |
1.6 | 2011-05-01 | 1.添加汇编学习记录; 2.添加了如何查看C或汇编的源代码所对应的真正的汇编代码; 3.添加Start.S的总结; 3.1 Start.S的各个部分的总结; 3.2 Uboot中的内存的layout; 4.更加详细地解释了为何ARM9中PC=PC+8; 5.添加了一些其他的细节的内容; 6.修正一些拼写错误; |
转载请注明:在路上 » Uboot中start.S源码的指令级的详尽解析 v1.6