简介
U-Boot(Universal Boot Loader),通用BootLoader,一是可以引导多种操作系统,二是支持多种架构CPU。
教程中是在sourcefoge网站上下载的U-boot-1.1.6源码,进行分析与移植。
结构分析
U-boot-1.1.6有26个子目录,可以简单分为四类:
1.平台相关或开发板相关
2.通用的函数
3.通用的设备驱动程序
4.U-boot工具,示例程序,文档。
目前U-boot-1.1.6支持10种架构。很容易找到与自己板子相似的配置,在上面稍作修改即可。
U-boot代码分析
U-boot属于两个阶段的Bootloader,第一阶段的文件为cpu/arm920t/start.S和board/smdk2410/lowlevel_init.S,前者与平台相关,后者与开发板相关。
第一阶段主要有以下工作:
-
- 设置为SVC模式
- 关闭看门狗
- 屏蔽所有中断
- 初始化SDRAM
- 设置栈
- 设置时钟
- 代码重定位(Flashn==>SDRAM)
- 清bss段
- 调用statr_armboot
第二阶段主要有以下工作: