一、uboot源码结构
(一)uboot获取
选择uboot选择支持对应的硬件平台(芯片/开发板),并且相对成熟的版本(资料多)。
处理器要比uboot早, 处理器和同时期的uboot的兼容性更好。
(二)uboot的特点
和其他bootloader相比
1、arm\x86等支持很多处理器和开发板,都可以下载,易于移植。不仅能引导Liunx系统,还能引导vxworks系统。
2、文件系统,管理和访问磁盘/文件,对上层留read/write接口。
3、不具有通用性,不同处理器汇编、串口不同。
(三)uboot源码
1、uboot版本
2、平台相关模式
平台相关代码:硬件改动对应的代码也要改动。
uboot支持丰富的处理器和开发板,但不具有通用性,把所有的代码都写一遍,但不同的处理器和开发板,需要用到的代码不同,视情况删减。
3、uboot源码
1、api用户接口
2、arch芯片相关代码
平台相关代码。arch目录下只有armv7有关,其他可以删除。
3、board开发板相关代码
平台相关代码
arch是不同型号的CPU,当CPU相同,开发板也会有不同,board下放的是不同开发板的代码。
开发板是芯片厂家的评估板。4412对应的是三星的评估板origen。
4、common命令相关代码
5、config .mk配置文件
6、COPYING版权信息
7、disk磁盘设置
8、README帮助信息
9、doc详细的帮助信息
10、drivers硬件设备驱动
11、dts设备树
12、example代码示例
13、fs文件系统
管理和访问磁盘的软件机制
fat:wins下的文件系统
ext4:Linux下的文件系统
14、include头文件
15、lib通用库
16、Makefile编译uboot
执行makefile就能实现编辑当前文件下的目录。
17、net网络相关代码
18、post开发板上电自减程序
19、tools编译或使用uboot要用到的工具
二、uboot的配置与编译
配置:在众多CPU和开发板中指定我们要编译的芯片和开发板。
编译:配置完成后生成.bin文件再下载到开发板。
(一)uboot配置
1、 指定使用的硬件平台
2、指定uboot使用的编译器
用什么型号的处理器,我们应该选择对应的编译器。
修改Makefile
(二)uboot编译
1、make命令
.srec也是二进制文件,在这里我们使用.bin文件
此时生成的u-boot是ELF格式
2、make clean
删除中间文件
删除前:
删除后:
3、make distclean
基本恢复编译之前
作业
uboot特点?
1、代码结构清晰
2、支持丰富的处理器与开发板,易于移植
3、支持丰富的用户命令
4、支持丰富的网络协议
5、支持丰富的文件系统
6、支持丰富的设备驱动
7、更新活跃、用户较多、资料丰富
8、开放源代码
9、较高的稳定性
10、不具有通用性 (不同的处理器、开发板 uboot 不可通用)