Chinaunix

标题: Uboot中start.S源码的指令级的详尽解析 [打印本页]

作者: crifan    时间: 2011-04-17 23:38
标题: Uboot中start.S源码的指令级的详尽解析
本帖最后由 crifan 于 2013-08-22 12:41 编辑

最新地址:Uboot中start.S源码的指令级的详尽解析



Uboot中start.S源码的指令级的详尽解析

Version: 1.0

Author: green-waste (at) 163.com

-----------------------------------------------------------------------------------------

说明,由于本文内容太长,不方便在这里一点点贴出来,所以,此处只是贴出来目录。

对此内容感兴趣的话,自己下载PDF版本:

Uboot中start.S源码的指令级的详尽解析.pdf (1.86 MB, 下载次数: 6597)

-----------------------------------------------------------------------------------------

目录
1. 正文之前 3
1.1. 本文内容 3
1.2. 本文目标 3
1.3. 代码来源 3
1.4. 关于本文内容的组织形式 3
1.5. 阅读此文所要具有的前提知识 3
1.6. 声明 3
2. start.S详解 4
2.1. 设置CPU模式 4
2.2. 关闭看门狗 16
2.3. 关闭中断 20
2.4. 设置堆栈sp指针 24
2.5. 清除bss段 32
2.6. 异常中断处理 44
3. 相关知识点详解 57
3.1. uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式 57
3.2. 什么是watchdog + 为何在要系统初始化的时候关闭watchdog 58
3.2.1. 什么是watchdog 58
3.2.2. 为何在要系统初始化的时候关闭watchdog 59
3.3. 为何ARM7中PC=PC+8 59
3.3.1. 为何ARM9和ARM7一样,也是PC=PC+8 60
3.4. AMR寄存器的别名 + APCS 65
3.4.1. ARM中的寄存器的别名 65
3.4.2. 什么是APCS 67
3.5. 为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈 67
3.5.1. 保存现场/上下文 67
3.5.1.1. 什么叫做上下文context 68
3.5.2. 传递参数 68
3.5.3. 举例分析C语言函数调用是如何使用堆栈的 68
3.6. 关于为何不直接用mov指令,而非要用adr伪指令 70
3.7. mov指令的操作数的取值范围到底是多少 71
4. 引用 74


图表
图表 1 global的语法 5
图表 2 LDR指令的语法 7
图表 3 .word的语法 8
图表 4 balignl的语法 9
图表 5 CPSR/SPSR的位域结构 13
图表 6 pWTCON 16
图表 7 INTMOD 16
图表 8 INTMSK 17
图表 9 INTSUBMSK 17
图表 10 CLKDIVN 17
图表 11 WTCON寄存器的位域 20
图表 12 INTMSK寄存器的位域 21
图表 13 INTSUBMSK寄存器的位域 22
图表 14 CLKDIVN的位域 23
图表 15 控制寄存器1的位域含义 40
图表 16 时钟模式 41
图表 17 关于访问控制位在域访问控制寄存器中的含义 41
图表 18 关于访问允许(AP)位的含义 42
图表 19 macro的语法 45
图表 20 LDM/STM的语法 46
图表 21 条件码的含义 46
图表 22 ARM中CPU的模式 57
图表 23 AMR7三级流水线 59
图表 24 ARM7三级流水线状态 60
图表 25 ARM7三级流水线示例 60
图表 26 ARM7三级流水线 vs ARM9五级流水线 61
图表 27 ARM7三级流水线到ARM9五级流水线的映射 61
图表 28 ARM9的五级流水线示例 62
图表 29 ARM9五级流水线的执行机构的细节 65
图表 30 ARM寄存器的别名 66
图表 31 数据处理指令的指令格式 72
图表 32 mov指令0xe3a00453的位域含义解析 73


版本历史:


版本时间内容
1.02011-04-17详细解释了ubootstart.s中的每行代码;添加了相关知识点的详细解释






作者: crifan    时间: 2011-04-18 00:22
再啰嗦一句,写这种东西,真的不是一般的累啊。。。
作者: amarant    时间: 2011-04-18 08:55
呵呵,原來在這篇文章裏面全有啊。第一頁留個名
作者: ironfox    时间: 2011-04-19 17:05
赞楼主的分享精神
作者: asp00    时间: 2011-04-19 17:26
学习!!!
作者: yuweixian4230    时间: 2011-04-19 21:26

看帖,回帖
作者: ckelsel    时间: 2011-04-19 22:05
看看先
作者: ChiyuT    时间: 2011-04-19 23:01
强顶,正在头大这个东西。
作者: xxw19840406    时间: 2011-04-21 11:06
下了  回来顶一个
作者: chenrvmldd    时间: 2011-04-21 11:22
回复 1# crifan
crifan兄弟又发好文了呀,顶啊
作者: 醉酒大哥    时间: 2011-04-21 12:26
好人
作者: 醉酒大哥    时间: 2011-04-21 12:29
我靠,再顶一下,楼主简直就是极品
作者: crifan    时间: 2011-04-22 19:11
回复 12# 醉酒大哥


    你这是夸人的吗。。。
作者: haizaolan    时间: 2011-04-23 16:43
谢谢你的优秀作品,认真拜读!
作者: aility    时间: 2011-04-24 11:08
支持楼主的经验总结!
作者: chenruiyong007    时间: 2011-08-25 00:32
谢谢楼主分享啊
作者: wsf618    时间: 2011-08-25 10:46
OK
作者: 林生2010    时间: 2011-08-25 12:41
顶一个
作者: litguy    时间: 2011-08-25 17:08
好东西,谢谢分享
作者: zaicichuxian    时间: 2011-09-13 12:38
下了  回来顶一个
作者: 5082126    时间: 2011-10-04 15:52
好贴,学习来......
作者: yuhundehao    时间: 2011-10-08 18:55
crifan兄弟又发好文了呀,顶啊
作者: locom    时间: 2011-10-09 11:08
谢谢分享!
作者: wuqingwei    时间: 2011-10-10 11:34
好东西,收藏了
作者: zy31887493    时间: 2011-12-26 09:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: fzct    时间: 2012-05-22 13:58
好文,感谢楼主分享
作者: xtggbmkk    时间: 2012-05-25 16:06
先顶,再下载!!
作者: gaotao628    时间: 2012-11-20 13:57
楼主辛苦了
作者: kentel    时间: 2012-11-23 11:59
多谢,收藏了:wink:
作者: mekaluo    时间: 2012-11-25 22:09
感谢分享...
楼主好人...
作者: noiplee    时间: 2012-12-06 20:30
最近正在看UBOOT源码啊,看到了很高兴!
作者: cliffordl    时间: 2013-01-05 10:17
回复 1# crifan


    顶一下
作者: wxd9199    时间: 2013-04-22 22:18
看了你很多贴子,特意回复下。多谢!






           
作者: ganbo109    时间: 2013-05-03 14:48

作者: hukee    时间: 2013-06-05 13:34
这种帖子要顶,真正是cpu级别的移植呀,一般都是选择已经支持的cpu类型开发板板子,改外围的ddr频率和flash接口。
作者: lianyq1986    时间: 2013-07-01 13:27
)感谢分享!顶一个!
作者: liaohui198821    时间: 2013-07-05 20:57
crifan兄弟又发好文了呀,顶啊
作者: chaliks    时间: 2013-07-07 08:04
注释写得很详细,很不错的一份Uboot启动过程详解资料,谢谢楼主分享!
作者: SUPERWILL1002    时间: 2013-07-22 13:15
感謝分享 受益頗多唷
作者: wupinlang    时间: 2013-08-06 14:15
谢谢楼主分享!
作者: 虫虫2003    时间: 2013-08-07 00:12
学习一下,感谢LZ
作者: 578391555    时间: 2013-08-14 21:41
最近开始看uboot了,谢谢LZ
作者: sealinux    时间: 2013-08-23 15:03
写的挺详细,顶一个。
作者: Linux-learner    时间: 2013-08-23 19:14
写得确实够细致的,不错!
作者: lwd0702    时间: 2013-08-29 15:09
有时间得看看。
作者: JJJsy    时间: 2013-09-13 20:21
顶一个,谢谢分享....
作者: ggchao    时间: 2013-10-13 14:18
支持一下吧
作者: crifan    时间: 2013-10-17 09:52
hukee 发表于 2013-06-05 13:34
这种帖子要顶,真正是cpu级别的移植呀,一般都是选择已经支持的cpu类型开发板板子,改外围的ddr频率和flash ...
我的目标就是:
自己抽空先去搞懂
然后写教程,让你们也真正自己搞懂
不是只是看看别人的几行移植代码而一头雾水的那种
然后就可以自己做自己想要的事情了

作者: mlinmxf    时间: 2013-12-02 17:46
非常感谢,最近刚开始接触uboot,希望有用了
作者: 求成之路    时间: 2014-04-01 21:48
感谢楼主~回复 1# crifan


   
作者: _EBull    时间: 2014-05-12 13:57
楼主是好人
作者: 之戈之爱    时间: 2014-10-09 13:51
这样的好东西必须顶,辛苦了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2