没有合适的资源?快使用搜索试试~ 我知道了~
首页Uboot中start.S源码的指令级的详尽解析 v1.7
本文对Uboot中的Start.S的源码的几乎每一行,都进行了详细的解析,以及相关知识点详解,包括:如何查看C或汇编的源代码所对应的真正的汇编代码,uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式,为何ARM7中PC=PC+8,AMR寄存器的别名 + APCS,为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈,关于为何不直接用mov指令,而非要用adr伪指令,mov指令的操作数的取值范围到底是多少,汇编学习总结记录
资源详情
资源推荐
Uboot中start.S源码
的指令级的详尽解析
版本:v1.7
Crifan Li
摘要
本文对Uboot中的Start.S的源码的几乎每一行,都进行了详细的解析
本文提供多种格式供:
在线阅读 HTML
1
HTMLs
2
PDF
3
CHM
4
TXT
5
RTF
6
下载(7zip压缩包) HTML
7
HTMLs
8
PDF
9
CHM
10
TXT
11
RTF
12
HTML版本的在线地址为:
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html/uboot_starts_
analysis.html
修订历史
修订 1.0 2011-04-17 crl
1. 详细解释了uboot的start.s中的每行代码
2. 添加了相关知识点的详细解释
修订 1.6 2011-05-01 crl
1. 添加汇编学习记录
2. 添加了如何查看C或汇编的源代码所对应的真正的汇编代码
3. 添加Start.S的总结
a. Start.S的各个部分的总结
b. Uboot中的内存的layout
4. 更加详细地解释了为何ARM9中PC=PC+8
5. 添加了一些其他的细节的内容
1
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html/uboot_starts_analysis.html
2
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/htmls/uboot_starts_analysis.html
3
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/pdf/uboot_starts_analysis.pdf
4
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/chm/uboot_starts_analysis.chm
5
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/txt/uboot_starts_analysis.txt
6
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/rtf/uboot_starts_analysis.rtf
7
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html/uboot_starts_analysis.html.7z
8
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/htmls/uboot_starts_analysis.html.7z
9
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/pdf/uboot_starts_analysis.pdf.7z
10
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/chm/uboot_starts_analysis.chm.7z
11
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/txt/uboot_starts_analysis.txt.7z
12
http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/rtf/uboot_starts_analysis.rtf.7z
6. 修正一些拼写错误
修订 1.7 2012-06-14 crl
1. 通过Docbook发布
2. 修正了一些琐碎的笔误,同时增添了些琐碎内容
iv
目录
正文之前 .................................................................................................................................. ix
1. 本文内容 ...................................................................................................................... ix
2. 本文目标 ...................................................................................................................... ix
3. 代码来源 ...................................................................................................................... ix
4. 阅读此文所要具有的前提知识 ........................................................................................ ix
5. 声明 ............................................................................................................................ ix
1. start.S详解 ........................................................................................................................... 1
1.1. 设置CPU模式 ............................................................................................................. 1
1.1.1. globl .............................................................................................................. 1
1.1.2. _start ............................................................................................................. 2
1.1.3. ldr .................................................................................................................. 3
1.1.4. .word .............................................................................................................. 5
1.1.5. .balignl ........................................................................................................... 6
1.1.6. _TEXT_BASE _armboot_start .......................................................................... 7
1.1.7. _bss_start _bss_end ....................................................................................... 7
1.1.8. FREE_RAM_END FREE_RAM_SIZE ................................................................... 8
1.1.9. IRQ_STACK_START FIQ_STACK_START ............................................................ 9
1.1.10. cpsr ............................................................................................................ 10
1.1.11. bic ............................................................................................................. 11
1.1.12. orr .............................................................................................................. 12
1.1.13. msr ............................................................................................................ 12
1.2. 关闭看门狗 .............................................................................................................. 13
1.2.1. pWTCON INTMOD INTMSK INTSUBMSK CLKDIVN ..................................... 13
1.2.2. ldr pWTCON ................................................................................................ 15
1.2.3. mov ............................................................................................................. 16
1.2.4. str ................................................................................................................ 17
1.3. 关闭中断 .................................................................................................................. 18
1.3.1. set INTMSK ................................................................................................. 18
1.3.2. set INTSUBMSK ........................................................................................... 19
1.3.3. set CLKDIVN ................................................................................................ 20
1.3.4. bl ................................................................................................................. 21
1.4. 设置堆栈sp指针 ....................................................................................................... 22
1.4.1. stack_setup .................................................................................................. 22
1.4.2. calc stack ..................................................................................................... 24
1.4.3. clock_init ...................................................................................................... 25
1.4.4. adr ............................................................................................................... 26
1.4.5. clear_bss ...................................................................................................... 28
1.4.6. cal armboot size .......................................................................................... 28
1.4.7. cal armboot size .......................................................................................... 30
1.5. 清除bss段 ................................................................................................................ 32
1.5.1. clear_bss ...................................................................................................... 32
1.5.2. clear css loop .............................................................................................. 32
1.5.3. ldr pc ........................................................................................................... 32
1.5.4. cpu_init_crit ................................................................................................. 33
1.5.5. disable MMU ............................................................................................... 38
1.5.6. clear bits ...................................................................................................... 39
1.5.7. bl lowlevel_init ............................................................................................. 42
1.6. 异常中断处理 ........................................................................................................... 42
1.6.1. macros stmia ............................................................................................... 42
1.6.2. cal reg value and store ............................................................................... 46
1.6.3. irq_save_user_regs irq_restore_user_regs ..................................................... 47
1.6.4. exception handlers ...................................................................................... 49
1.6.5. Launch ......................................................................................................... 51
1.6.6. int_return ..................................................................................................... 52
2. start.S的总结 ...................................................................................................................... 54
Uboot中start.S源码
的指令级的详尽解析
v
2.1. start.S各个部分的总结 .............................................................................................. 54
2.2. Uboot中的内存的Layout .......................................................................................... 55
3. 相关知识点详解 .................................................................................................................. 57
3.1. 如何查看C或汇编的源代码所对应的真正的汇编代码 .................................................... 57
3.2. uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式 ............................. 58
3.3. 什么是watchdog + 为何在要系统初始化的时候关闭watchdog ................................... 60
3.3.1. 什么是watchdog ........................................................................................... 60
3.3.2. 为何在要系统初始化的时候关闭watchdog ....................................................... 60
3.4. 为何ARM7中PC=PC+8 ............................................................................................ 61
3.4.1. 为何ARM9和ARM7一样,也是PC=PC+8 ....................................................... 62
3.5. AMR寄存器的别名 + APCS ...................................................................................... 68
3.5.1. ARM中的寄存器的别名 .................................................................................. 68
3.5.2. 什么是APCS .................................................................................................. 70
3.6. 为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈 .................................... 70
3.6.1. 保存现场/上下文 ............................................................................................ 70
3.6.1.1. 什么叫做上下文context ....................................................................... 70
3.6.2. 传递参数 ....................................................................................................... 71
3.6.3. 举例分析C语言函数调用是如何使用堆栈的 ....................................................... 71
3.7. 关于为何不直接用mov指令,而非要用adr伪指令 ........................................................ 72
3.8. mov指令的操作数的取值范围到底是多少 ................................................................... 73
3.9. 汇编学习总结记录 .................................................................................................... 76
3.9.1. 汇编中的标号=C中的标号 ............................................................................... 76
3.9.2. 汇编中的跳转指令=C中的goto ....................................................................... 76
3.9.3. 汇编中的.globl=C语言中的extern ................................................................... 77
3.9.4. 汇编中用bl指令和mov pc,lr来实现子函数调用和返回 ..................................... 77
3.9.5. 汇编中的对应位置有存储值的标号 = C语言中的指针变量 .................................. 78
3.9.6. 汇编中的ldr+标号,来实现C中的函数调用 ....................................................... 80
3.9.7. 汇编中设置某个寄存器的值或给某个地址赋值 .................................................. 81
参考书目 ................................................................................................................................ 84
剩余93页未读,继续阅读
crifan
- 粉丝: 140
- 资源: 68
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功