u-boot实现原理完全分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
U-BOOT 作者:陈颖 邮箱:chxxxyg@163.com 博客: / 目录 一 U-BOOT目录结构 1 二 U-BOOT的启动与内核引导 3 1、U-BOOT的启动分析 3 1.1设置异常向量表 3 1.2 U-BOOT的存储映射 4 1.3 硬件设备的初始化 5 1.4 硬件平台前期初始化 9 1.5代码重定位 13 1.6 硬件平台后期初始化 16 2、内核引导 20 2.1 u-boot命令实现原理 20 2.2内核引导 24 三 U-BOOT编译流程分析 35 1、U-BOOT编译命令 35 2、U-BOOT配置流程 35 2.1环境初始化 35 2.2 make smdk2410_config命令的执行过程 38 2.3 make smdk2410命令的执行过程 42 2.4 U-BOOT的编译流程 43 U-BOOT原理分析 一 U-BOOT目录结构 api api目录对应于一些扩展应用的独立的api arch arch存放与CPU架构有关的目录,下面每一个目录就代表一种架构的CPU board board目录是与硬件平台相关的目录,特定于某种硬件平台的文件以子目录的形式存放在该目录下 common common目录存放了u-boot所支持的所有命令 disk disk目录存放了磁盘驱动和相关的代码 doc doc目录存放了u-boot的参考文档 drivers u-boot支持的所有驱动都存放在driver目录下,这些驱动大都根据linux驱动改写而来 dts dts目录包含一个平台设备树相关的makefile,可编译生成设备树镜像文件 examples example下时一些在u-boot上运行的事例程序 fs fs目录下是u-boot所支持的文件系统 include include目录包含了u-boot的头文件以及各种硬件平台的系统配置文件 lib lib目录下是u-boot的库文件 nand_spl 支持从nand flash启动的相关代码 net u-boot的网络子系统 onenand_ipl 支持从onenand 启动的代码 post Post下是支持上电自检功能的目录 spl 与nand_spl相关的makefile,编译支持从nand flash启动的u-boot二进制文件 tools tools目录下是u-boot的一些辅助工具,比如生成u-boot镜像文件等 二 U-BOOT的启动与内核引导 1、U-BOOT的启动分析 u-boot支持多种架构类型的cpu,支持多种硬件平台,本文以smdk2410为例来讲解u-boot的功能原理。 u-boot的入口在文件在arch/arm/cpu/arm920t/start.S中,因为在文件在链接文件arch/arm/cpu/u-boot.lds中被第一个链接,如下: OUTPUT_FORMAT(elf32-littlearm, elf32-littlearm, elf32-littlearm) OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { . = 0 . = ALIGN(4); .text : { __image_copy_start = .; CPUDIR/start.o (.text) //start.o对应源代码就是start.S *(.text) } ………… 1.1设置异常向量表 .globl _start _start: b start_code //复位 ldr pc, _undefined_instruction //未定义指令向量 ldr pc, _software_interrupt //软件中断向量 ldr pc, _prefetch_abort //预取指令异常向量 ldr pc, _data_abort //数据操作异常向量 ldr pc, _not_used //未使用 ldr pc, _irq //irq中断向量 ldr pc, _fiq // fiq中断向量 _undefined_instruction: .word undefined_instruction _software_interrupt: .word software_interrupt

文档评论(0)

smdh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档