bootloader 浅析

一直都对bootlaoder好奇,今日有幸就看了看系统里面的bootloader代码,借鉴同行的博客学习,现在博客以记之----------雁过留声~


1. 整体框架分析:

 

从根目录树可以看出,U-Boot 源代码主要包含以下几部份:

  1. 与目标板相关的代码,对应于 board 目录。
  2. 公共代码,对应于 common 目录。
  3. 与 CPU 相关的代码,对应于 cpu 目录。
  4. 磁盘驱动和磁盘分区相关的处理代码,对应于 disk 目录。
  5. 说明文档,对应于 doc 目录。
  6. 关键的驱动程序,对应于 drivers 目录。
  7. 数字温度计和自动调温装置的驱动,对应于 dtt 目录。
  8. 简单应用的例程,对应于 example 目录。
  9. 头文件,对应于 include 目录。
  10. 体系结构相关的代码,对应于 lib_arm, lib_i386, lib_m68k, lib_microblaze, lib_mips, lib_nios,  lib_nios2, lib_ppc 目录。
  11. 体系结构无关的公共代码,对应于 lib_generic 目录。
  12. 网络传输代码,对应于 net 目录。
  13. 上电自测代码,对应于 post 目录。
  14. 实时时钟驱动程序,对应于 rtc 目录。
  15. U-Boot 常用工具,对应于 tools 目录。

运行流程:

有博客详悉:

http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html



2. 关键点分析:

编译的config.mk makefile

最开始运行的汇编代码 start.S

C函数的main.c的main_loop

mkimage 制作BL能识别的镜像

bootm 启动内核


todo: 分析一下系统的加载内核过程和响应的地址

打印一下就可以了

 "bootcmd=run setargs boot_normal\0"

"setargs=setenv bootargs console=${console} root=${nand_root}"  

"boot_normal=nand read 50000000 boot; boota 50000000\0"

boota就是启动的命令了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值