3-Uboot源码目录分析
1、cpu 本文件夹下的子文件与处理器相关,每个文件夹代表一种CPU系列。每个子目录中都包括cpu.c、interrupts.c、start.S文件。 cpu.c主要用于初始化CPU、设置指令Cache和数据Cache等 interrupt.c主要用于设置系统的各种中断和异常 start.S是U-boot启动时执行的第一个文件,主要做最早期的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础。 S5PV210芯片对应的文件夹是s5pc11x。
cpu/s5pc11x/s5pc110/cpu_init.S主要用于SDRAM内存的初始化设置。
2、board 本文件下的子文件与开发板相关,每一个子文件代表一个芯片厂家,芯片厂家文件夹下存放的每一个子文件夹是一种开发板,
由于历史原因,board目录下尚保留有大量的开发板文件夹没有归档到芯片厂家文件夹内,保持兼容性,因此整体显得比较混乱。
如samsung的smdk2400、smdk2410开发板就位于samsung文件夹外。
S5PV210芯片对应的文件夹位于board/samsung/smdkc110,文件夹内的lowlevel_init.S文件主要用于时钟、串口、MMU、Flash底层驱动、板级初始化,
u-boot.lds文件是链接脚本文件,对于工程项目编译后期的链接阶段非常重要,决定了程序的组装。 3、common 本文件夹下存放与处理器体系结构无关的通用代码,uboot的命令解析代码/common/command.c、
所有命令的上层代码cmd_*.c、uboot环境变量处理代码env_*.c、CRC校验等都位于本目录下。 4、drivers 本目录下存放所有外围芯片的驱动,网卡、USB、串口、LCD、Nand Flash等。 5、disk 本目录存放于磁盘驱动的分区处理代码 6、fs 本目录下存放文件系统相关的代码,每一个子文件夹代表一种文件系统。 7、net 本目录下存放于网络协议相关的代码 8、doc 本目录下存放uboot的说明文档。 9、api、api_examples、examples 外部扩展程序的API和示例 10、include 头文件,包括各种CPU的寄存器定义,文件系统、网络等等 configs子目录下的文件是与目标板相关的配置头文件 11、lib_xxx lib_arm、lib_avr32、lib_blackfin、lib_generic、lib_i386、lib_m68k、lib_microblaze、
lib_mips、lib_nios、lib_nios2、lib_ppc、lib_sh、lib_sparc 每一个文件夹代表一种CPU体系架构。与S5PV210相关的文件夹有lib_arm、lib_generic,lib_generic目录,
存放的是各CPU体系架构通用的加密算法、压缩算法、字符处理相关代码。
在每一种CPU体系架构文件夹内都存在board.c,是uboot启动第二阶段代码入口函数和相关初始化函数存放的地方。 12、libfdt 本目录下存放的是设备数相关的代码。 13、tools 编译S-Record或uboot映像等相关工具,如制作bootm引导的内核映像文件工具mkimage源码。 14、post 上电自检相关代码 15、nand_spl、onenand_bl1、onenand_ipl Nand、onenand启动相关的代码。 16、sd_fusing 本目录下存放的是烧录相关的工具代码 17、工程编译配置文件 Makefile、MAKEALL、config.mk、rules.mk、mkconfig 控制工程编译过程的主Makefile文件和规则文件 config.mk文件内的TEXT_BASE指定了代码在内存中的地址。 18、版本、版权说明文件 CHANGELOG、CHANGELOG-before-U-Boot-1.1.5、COPYING、CREDITS、MAINTAINERS、README、Changelog_Samsung。
关于uboot源码部分修改的时候有几点需要注意的:
1、uboot会使用一些编译后才生成的文件,修改使用uboot时,先编译一遍再使用;
2、arch/arm/cpu/u-boot是整个uboot的链接脚本;
3、board 记录一些不同板子的板载文件,是重要的;
4、移植uboot时重点关注board/freescale与config配置,不同板子是不同的;
5、当执行 make xxx_defconfig 后会生成 .config 文件,该文件保存着详细的配置信息,后面编译uboot 时会根据该文件的配置编译;
6、顶层的 README 文件主要是介绍 uboot 的,建议有空阅读;
7、u-boot 文件是编译出来的 ELF 格式的uboot镜像文件,
u-boot.bin 文件是编译出来的二进制的 uboot 可执行文件,
u-boot.cfg 文件是uboot的另一种配置文件,
u-boot.map 是映射文件。
一些主要的要主要的文件夹说明:
1、arch:与架构有关的代码;
2、board:板载信息;
3、config:Uboot的默认配置文件目录,都是以 *_defconfig 结尾的,这些配置文件对于不同的板子,编译时要先编译一遍对于的板子的配置文件。
本文来自博客园,作者:白菜没我白,转载请注明原文链接:https://www.cnblogs.com/xingboy/p/16292207.html