Uboot简介
由德国DENX小组开发,支持多cpu(MIPS、x86、ARM等)、多系统(linux、Vxworks、QNX)。
下载:http://sourceforge.net/projects/uboot
-
启动流程(看:Uboot启动流程)
- stage1:
-
上电初始化硬件。(start.S)
(复位代码)
a. 设置异常向量
b. 进入SVC模式,屏蔽 irq 和 frq
c. 设置控制寄存器地址(宏定义WATCHDOG寄存器、INTMSK寄存器、INTSUBMSK寄存器、CLKDIVN寄存器)
d. 关闭看门狗(在看门狗寄存器中写入 0)
e. 屏蔽中断(向寄存器写入 1)
f. 设置MPLLCON、UPLLCON、CLKDIVN
g. 关闭MMU、cache
h. 初始化RAM寄存器 -
将stage2 加载到RAM
-
设置好堆栈
-
清空bss段
-
跳转到stage2 的入口点
-
- stage2:
- 初始化本阶段用到的硬件
- 检测系统内存映像
- 将内核从flash复制到RAM
- 为内核设置启动参数
- 调用内核
- stage1:
-
命令行参数设置
setenv
saveenv
printenv -
移植修改
- 单板配置文件位置
include/configs/xxx.h - 移植步骤
- 添加开发板硬件相关文件、配置选项
a. 选择相近开发板进行参考
i. 处理器相同
ii. 处理器体系结构相同
iii. 外围接口相同
b. 在顶层Makefile中为开发板添加新的配置选项
c. 创建新目录并添加新文件
d. 添加新的配置文件
e. 编译
f. 烧写 - 配置编译
- 添加开发板硬件相关文件、配置选项
- 单板配置文件位置
-
编译过程
- 编译
- 执行每种board相关的配置
make xxx_config - 编译生成Uboot.bin文件
make CROSS_CPMPLIE=arm-linux-
- 执行每种board相关的配置
- 编译
参考:
https://wenku.baidu.com/view/73a5997f854769eae009581b6bd97f192279bfbb.html?from=search