Uboot中start.S源码的指令级的详尽解析 在线版
http://bbs.chinaunix.net/thread-2312785-1-1.html
以后所有內(nèi)容更新,都放在這里:
Uboot中start.S源碼的指令級(jí)的詳盡解析 在線版
Uboot
中start.S源碼的指令級(jí)的詳盡解析
Version:?1.6
Author: green-waste (at) 163.com
說明,由于本文內(nèi)容太長,不方便在這里一點(diǎn)點(diǎn)貼出來,所以,此處只是貼出來目錄。
此貼,之前發(fā)布過一個(gè)版本了,這里之所有又重新開貼發(fā)表新版本,是因?yàn)榈拇_是新版本增加了很多內(nèi)容,而不是很少的更新。
因此,單獨(dú)開了個(gè)帖子來發(fā)布。
截止2011-05-01,當(dāng)前最新版本是v1.6.
對(duì)此內(nèi)容感興趣的話,自己下載PDF版本:
?Uboot中start.S源碼的指令級(jí)的詳盡解析 v1.6.pdf?
其他下載地址:
1.chinaunix博客(請(qǐng)下載后一定要將后綴改為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
-----------------------------------------------------------------------------------------
? ? 目錄
1. 正文之前 4
1.1. 本文內(nèi)容 4
1.2. 本文目標(biāo) 4
1.3. 代碼來源 4
1.4. 關(guān)于本文內(nèi)容的組織形式 4
1.5. 閱讀此文所要具有的前提知識(shí) 5
1.6. 聲明 5
2. start.S詳解 6
2.1. 設(shè)置CPU模式 6
2.2. 關(guān)閉看門狗 19
2.3. 關(guān)閉中斷 23
2.4. 設(shè)置堆棧sp指針 27
2.5. 清除bss段 36
2.6. 異常中斷處理 48
3. start.S的總結(jié) 63
3.1. start.S各個(gè)部分的總結(jié) 63
3.2. Uboot中的內(nèi)存的Layout 64
4. 相關(guān)知識(shí)點(diǎn)詳解 67
4.1. 如何查看C或匯編的源代碼所對(duì)應(yīng)的真正的匯編代碼 67
4.2. uboot初始化中,為何要設(shè)置CPU為SVC模式而不是設(shè)置為其他模式 69
4.3. 什么是watchdog + 為何在要系統(tǒng)初始化的時(shí)候關(guān)閉watchdog 70
4.3.1. 什么是watchdog 71
4.3.2. 為何在要系統(tǒng)初始化的時(shí)候關(guān)閉watchdog 71
4.4. 為何ARM7中PC=PC+8 71
4.4.1. 為何ARM9和ARM7一樣,也是PC=PC+8 73
4.5. AMR寄存器的別名 + APCS 79
4.5.1. ARM中的寄存器的別名 79
4.5.2. 什么是APCS 81
4.6. 為何C語言(的函數(shù)調(diào)用)需要堆棧,而匯編語言卻不需要堆棧 81
4.6.1. 保存現(xiàn)場/上下文 82
4.6.1.1. 什么叫做上下文context 82
4.6.2. 傳遞參數(shù) 82
4.6.3. 舉例分析C語言函數(shù)調(diào)用是如何使用堆棧的 83
4.7. 關(guān)于為何不直接用mov指令,而非要用adr偽指令 84
4.8. mov指令的操作數(shù)的取值范圍到底是多少 85
4.9. 匯編學(xué)習(xí)總結(jié)記錄 89
4.9.1. 匯編中的標(biāo)號(hào)=C中的標(biāo)號(hào) 89
4.9.2. 匯編中的跳轉(zhuǎn)指令=C中的goto 89
4.9.3. 匯編中的.globl=C語言中的extern 90
4.9.4. 匯編中用bl指令和mov pc,lr來實(shí)現(xiàn)子函數(shù)調(diào)用和返回 90
4.9.5. 匯編中的對(duì)應(yīng)位置有存儲(chǔ)值的標(biāo)號(hào) = C語言中的指針變量 91
4.9.6. 匯編中的ldr+標(biāo)號(hào),來實(shí)現(xiàn)C中的函數(shù)調(diào)用 93
4.9.7. 匯編中設(shè)置某個(gè)寄存器的值或給某個(gè)地址賦值 94
5. 引用 97
圖表
圖表 1 global的語法 7
圖表 2 LDR指令的語法 9
圖表 3 .word的語法 10
圖表 4 balignl的語法 11
圖表 5 CPSR/SPSR的位域結(jié)構(gòu) 16
圖表 6 CPSR=0xD3的位域及含義 18
圖表 7 pWTCON 19
圖表 8 INTMOD 19
圖表 9 INTMSK 19
圖表 10 INTSUBMSK 20
圖表 11 CLKDIVN 20
圖表 12 WTCON寄存器的位域 23
圖表 13 INTMSK寄存器的位域 24
圖表 14 INTSUBMSK寄存器的位域 25
圖表 15 CLKDIVN的位域 26
圖表 16 控制寄存器1的位域含義 44
圖表 17 時(shí)鐘模式 45
圖表 18 關(guān)于訪問控制位在域訪問控制寄存器中的含義 45
圖表 19 關(guān)于訪問允許(AP)位的含義 46
圖表 20 macro的語法 50
圖表 21 LDM/STM的語法 50
圖表 22 條件碼的含義 51
圖表 23 Uboot中的內(nèi)存的Layout 66
圖表 24 ARM中CPU的模式 69
圖表 25 AMR7三級(jí)流水線 72
圖表 26 ARM7三級(jí)流水線狀態(tài) 72
圖表 27 ARM7三級(jí)流水線示例 73
圖表 28 ARM7三級(jí)流水線 vs ARM9五級(jí)流水線 74
圖表 29 ARM7三級(jí)流水線到ARM9五級(jí)流水線的映射 74
圖表 30 ARM9的五級(jí)流水線示例 75
圖表 31 ARM9的五級(jí)流水線中為何PC=PC+8 77
圖表 32 ARM Application Procedure Call Standard (AAPCS) 79
圖表 33 ARM寄存器的別名 80
圖表 34 數(shù)據(jù)處理指令的指令格式 87
圖表 35 mov指令0xe3a00453的位域含義解析 88
版本歷史
總結(jié)
以上是生活随笔為你收集整理的Uboot中start.S源码的指令级的详尽解析 在线版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: YUV420图像格式
- 下一篇: Hi3515支持NFS-ROOT启动