- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
--(完美WORD文档DOC格式,可在线免费浏览全文和下载)值得下载!
背景:
Board ( ar7240(ap93)
Cpu ( mips
1、首先弄清楚什么是u-boot
Uboot是德国DENX小组的开发,它用于多种嵌入式CPU的bootloader程序, uboot不仅支持嵌入式linux系统的引导,当前,它还支持其他的很多嵌入式操作系统。
除了PowerPC系列,还支持MIPS,x86,ARM,NIOS,XScale。
2、下载完uboot后解压,在根目录下,有如下重要的信息(目录或者文件):
以下为为每个目录的说明:
Board:和一些已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,子目录存放和开发板相关的配置文件。它的每个子文件夹里都有如下文件(以ar7240/ap93为例):
Makefile
Config.mk
Ap93.c 和板子相关的代码
Flash.c Flash操作代码
u-boot.lds 对应的链接文件
common:实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c
cpu:与特定CPU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录mips等。它的每个子文件夹里都有入下文件:
Makefile
Config.mk
Cpu.c 和处理器相关的代码s
Interrupts.c 中断处理代码
Serial.c 串口初始化代码
Start.s 全局开始启动代码
Disk:对磁盘的支持
Doc:文档目录。Uboot有非常完善的文档。
Drivers:Uboot支持的设备驱动程序都放在该目录,比如网卡,支持CFI的Flash,串口和USB等。
Fs:支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。
Include:Uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。该目下configs目录有与开发板相关的配置文件,如ar7240_soc.h。该目录下的asm目录有与CPU体系结构相关的头文件,比如说mips对应的有asm-mips。
Lib_xxx:与体系结构相关的库文件。如与ARM相关的库放在lib_arm中。
Net:与网络协议栈相关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。
Tools:生成Uboot的工具,如:mkimage等等。
3、mips架构u-boot启动流程
u-boot的启动过程大致做如下工作:
1、cpu初始化
2、时钟、串口、内存(ddr ram)初始化
3、内存划分、分配栈、数据、配置参数、以及u-boot代码在内存中的位置。
4、对u-boot代码作relocate
5、初始化malloc、flash、pci以及外设(比如,网口)
6、进入命令行或者直接启动Linux kernel
刚一开始由于参考网上代码,我一个劲的对基于smdk2410的板子,arm926ejs的cpu看了N久,启动过程和这个大致相同。
整个启动中要涉及到四个文件:
Start.S ( cpu/mips/start.S
Cache.S ( cpu/mips/cache.S
Lowlevel_init.S ( board/ar7240/common/lowlevel_init.S
Board.c ( lib_mips/board.c
整个启动过程分为两个阶段来看:
Stage1:系统上电后执行汇编代码
Stage2:通过一些列设置搭建了C环境,通过汇编指令跳转到C语言执行.
Stage1:
程序从Start.S的_start开始执行.(至于为什么,参考u-boot.lds分析.doc)
先查看start.S文件吧!~
从_start标记开始会看到一长串莫名奇妙的代码:
RVECENT(reset,0) /* U-boot entry point */ /*U-Boot开始执行的代码起始地址*/
RVECENT(reset,1) /* software reboot */ /*软重启时U-Boot开始执行的起始地址*/
RVECENT(romReserved,2) /*保留本代码所在的地址,重新映射调试异常向量时可以使用该空间*/
RVECENT(romReserved,3)
RVECENT(romReserved,4)
RVECENT(romReserved,5)
RVECENT(romReserved,6)
RVECENT(romReserved,7)
RVECENT(romReserved,8)
RVECENT(
文档评论(0)