目录
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特点?