上一篇:讯为4412开发板嵌入式学习(九)uboot启动过程
下一篇:讯为4412开发板嵌入式学习(十一)Makefile代码分析
三、uboot源代码结构
uboot目录下文件列表如下:
(一)、各文件/文件夹说明
- COPYING:版权相关的说明文档。
- CREDITS:工作人员的名单。
- E4212:和4212板子相关的文件。
- E4412_N.bl1.bin:三星提供的BL1二进制文件。
- MAINTAINERS:维护者名单
- MAKEALL:编译相关文件。
- Makefile:编译脚本。
- README和readme.txt:项目说明文档。
- System.map:
- all00_padding.bin:用0补全的二进制文件。
- api:常用的接口。
- board:常用的主板文件,这里只保留4412开发板的主板相关目录/board/samsung/smdkc210。
- build_uboot.sh:编译脚本。
- common:与架构无关的通用文件。
- config.mk:配置文件。
- cpu:cpu相关的文件,可根据所使用的cpu选择。这里只保留和4412相关的文件夹arm_cortexa9。
- disk:实现磁盘分区的接口。
- doc:uboot相关说明文档。
- drivers:uboot中的驱动文件,如外设iic、spi、gpio、usb、watchdog、dma和mmc等。
- examples:uboot上可运行的例程
- fs:操作系统内的文件系统,和文件系统格式化相关,如fat、ext2、ubifs、yaffs2、jffs2等文件系统。
- include:包含通用的头文件以及与架构相关的文件,这里删除除asm-arm以外的以asm- 为前缀的文件夹。
- lib前缀的文件:库相关的文件。只保留lib_arm、lib_generic和libfdt,删除其他以lib_为前缀的文件。可执行下列操作删除文件
sudo rm -rf lib_avr32 lib_blackfin lib_i386 lib_m68k lib_microblaze lib_mips lib_nios lib_nios2 lib_ppc lib_sh lib_sparc
- mkbl2:编译相关文件。
- mkconfig:编译配置文件。
- mkuboot:编译uboot脚本文件。
- nand_spl和onenand_ipl:eMMC相关,可删除。
sudo rm -rf and_spl onenand_ipl
- net:网络驱动文件。
- paddingaa:补丁文件。
- post:自检文件。
- rules.mk:脚本编译的说明文件。
- sdfuse和sdfuse_q:sd卡烧写相关
- tc4_cmm.cmm和uboot_readme.txt:三星tc4开发板相关文档。
- tools:编译烧写等工具。
- CodeSign4SecureBoot_POP和CodeSign4SecureBoot_SCP:安全启动相关的加密文件。
四、编译脚本build_uboot.sh分析
#!/bin/sh
#上面这句话用于指定脚本的解释器路径
#$1代表传入的第一个参数,($0表示脚本文件名)-z是判断后面的参数是否为零
if [ -z $1 ]
then
#如果无传入参数,则输出错误信息并退出脚本
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "Please use correct make config.for example make SCP_1GDDR for SCP 1G DDR CoreBoard linux,android OS"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
exit 0
fi
#如果输入参数$1的值是字符串"SCP_1GDDR"|"SCP_2GDDR"|"SCP_1GDDR_Ubuntu"|"SCP_2GDDR_Ubuntu"则执行下一步
if [ "$1" = "SCP_1GDDR" ] || [ "$1" =