分类: 嵌入式
2013-02-22 11:54:51
原文地址:Uboot中start.S源码的指令级的详尽解析 作者:crifan
Uboot中start.S源码的指令级的详尽解析
Version: 1.6
Author: green-waste (at) 163.com
------------------------------------------------------------------------
截止2011-05-01,当前最新版本是v1.6.
说明,由于本文内容太长,不方便在博客系统一点点贴出来,所以,此处只是贴出来目录,感兴趣的话,自己下载PDF版本:
Uboot中start.S源码的指令级的详尽解析 v1.6(下载pdf后一定要将后缀改为7z再解压即可).pdf
http://blog.chinaunix.net/attachment/attach/77/44/27/277744278a6fbb52c4ea9bb1f25fd651107a3697.pdf
1.csdn资源下载:
2.爱问iask:
3.rayfile:
4.豆丁在线阅读:
------------------------------------------------------------------------
目录
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.8. mov指令的操作数的取值范围到底是多少... 85
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.修正一些拼写错误; |