目录
1 uboot源码获取
2 uboot特定
3 uboot源码结构
3.1 平台相关代码 ? ?
3.1.1 arch
3.1.2 board
3.2 平台无关代码
?3.2.1 common下放的都是uboot的命令
3.3 配置文件、帮助文档、示例程序、工具等:
4 uboot配置
5?uboot编译
5.1 编译uboot ?? ?
5.2 清除编译过程中生成的中间文件
1 uboot源码获取
uboot源码下载 ? ?
http://www.denx.de/wiki/U-Boot/ ?
uboot版本命名 ? ?
前期:uboot-1.2.3 ? ?
现在:uboot-2008.01 ?
uboot版本选择 ? ?
支持对应的硬件平台? ? (一般选择与硬件芯片年份差不多的uboot)
相对成熟的版本(资料多)
2 uboot特点
- 代码结构清晰 ?
- 支持丰富的处理器与开发板,易于移植 ?
- 支持丰富的用户命令 ?
- 支持丰富的网络协议
- 支持丰富的文件系统
- 支持丰富的设备驱动 ?
- 更新活跃、用户较多、资料丰富 ?
- 开放源代码 ?
- 较高的稳定性 ?
- 不具有通用性(不同的处理器、开发板uboot不可通用)
3 uboot源码结构
3.1 平台相关代码 ? ?
即与CPU架构或开发板硬件相关的源码,硬件的改动对应的代码也需要进行修改
- arch:与CPU架构相关的源代码(arm x86 ...)? ??
- board:与开发板相关的源代码,包含各种官方评估板对应的源码
- ...
3.1.1 arch
我们开发板需要的是armv7
3.1.2 board
?不过找不到我们的开发板,不可能把所有公司的开发板都包含,主要是评估板,我们可以在官方评估板origen中修改即可使用,(找官方与4412相关的)
??
3.2 平台无关代码
- api:?? ?应用接口 ? ?
- common:?? ?uboot命令源码 ? ?
- disk:?? ?对磁盘设备的支持 ? ?
- drivers:?? ?设备驱动源码 ? ?
- fs:?? ??? ?对文件系统的支持?? ? ? ?
- include:?? ?头文件 ? ?
- lib:?? ?库 ? ?
- net:?? ?对网络协议的支持 ? ?
- post:?? ?上电自检程序 ? ?
- ... ...
?
?3.2.1 common下放的都是uboot的命令
3.3 配置文件、帮助文档、示例程序、工具等:
- README:?? ?说明文档 ? ?
- doc:?? ?帮助文档 ? ?
- Makefile:?? ?编译管理 ? ?
- CREDITS:?? ?开发者 ? ?
- COPYING:?? ?版权 ? ?
- examples:?? ?示例程序 ? ?
- tools:?? ?工具 ? ? ... ...
前期只需要了解结构会用,并不需要去会写uboot
4 uboot配置
指定当前使用的硬件平台
make <board_name>_config?
? ? 注1:<board_name>为当前使用的开发板的名字
?? ?注2:执行该命令的前提是uboot源码支持该开发板
指定编译uboot源码使用的编译器
?? ?在uboot源码顶层目录下的Makefile中指定(CROSS_COMPILE变量)
示例
5?uboot编译
5.1 编译uboot ?? ?
make ?? ?
注1:该命令必须在uboot源码的顶层目录下执行 ?? ?
注2:该命令执行后在uboot源码顶层目录下生成u-boot.bin
示例:
注意一定要是顶层的makefile编辑
选择编译器
?让条件成立
执行make(只编译与origin相关的代码)
?
5.2 清除编译过程中生成的中间文件
make clean ?? ?
make distclean ?? ? //删除所有
注1:该命令必须在uboot源码的顶层目录下执行
可以删除生成的.o的中间文件删除,但是最终u-boot不会删除
6 练习
uboot特点?