U-BOOT分析(一)之目录结构
U-BOOT版本
类型 | 名字 | 功能描述 |
---|---|---|
文件夹 | api | 硬件无关的功能函数的API,是uboot本身使用的 |
文件夹 | arch | 各种CPU架构平台例如:arm .mips. powerpc. x86. riscv .etc. |
文件夹 | board | 已经支持的开发板相关文件,板级相关配置文件,针对不同平台的功能下具体的实现 |
文件夹 | cmd | 实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是bootm.c 而xxx命令,对应do_xxx函数 cmd_process最终会调用cmd_tbl_s结构体中的成员变量cmd函数指针,比如执行xxx命令,最终是会调用你do_xxx函数 uboot源码的cmd文件夹下xxx.c文件对应的是xxx命令 |
文件夹 | common | 通用启动相关初始化文件,board.r board_init_f的实现common/main.c是整个u-boot程序的主函数,主要负责运行维护uboot的shell命令行,这个文件夹以前是cmd的合集,后边版本变动了,具体功能还在研究 |
文件夹 | configs | 各个板卡平台的默认配置文件 make 的时候可以编译使用默认配置比如 make xxx_defconfig 就设置了按照默认配置编译 |
文件夹 | disk | 与磁盘有关的文件 |
文件夹 | doc | 文档目录,里面存放了很多uboot相关文档,这些文档可以帮助理解uboot代码。 |
文件夹 | drivers | 板级的驱动。这里面放的就是从linux源代码中移植过来的linux设备驱动,主要是开发板上必须用到的一些驱动,如网卡驱动、Inand/SD卡、NandFlash等的驱动。要知道:uboot中的驱动其实就是linux中的驱动,uboot在一定程度上移植了linux的驱动给自己用。但是linux是操作系统而uboot只是个裸机程序,因此这种移植会有不同,实际上uboot中的驱动其实是linux中的驱动的一部分。同样的uboot中的驱动也支持设备树 |
文件夹 | dts | 存放不同开发板的设备树源码文件,目前该目录为空,只有Makefile 和Kconfig |
文件夹 | env | 环境相关nand mmc onenand 等的文件 |
文件夹 | examples | uboot示例代码 |
文件夹 | fs | 文件系统相关,linux系统移植而来的 |
文件夹 | include | 头文件目录。uboot和linux kernel在管理头文件时都采用了同一个思路,就是把所有的头文件全部集中存放在include目录下,而不是头文件跟着自己对应的c文件。所以在uboot中头文件包含时路径结构要在这里去找 |
文件夹 | lib | 各类算法库的实现,比如crc,aes bzip系列,这类文件夹中的内容移植时基本不用管 |
文件夹 | Licenses | 开源协议(BSD, GPL, LGPL,MIT)许可证书,uboot使用的开源许可协议 |
文件夹 | net | 网络相关的代码,譬如uboot中的tftp nfs ping命令 都是在这里实现的 |
文件夹 | post | 有些需要上电自检程序放在这里 |
文件夹 | scripts | 常用脚本 |
文件夹 | test | 测试程序 |
文件夹 | tools | 里面是一些工具类的代码。譬如mkimage |
文件 | Makefile | uboot的顶层makefile ,后边文章会重点分析 |
文件 | config.mk | 某个Makefile会调用此配置文件,用来处理一些编译过程中的环境变量。Linux Kernel 没有这个文件,U-Boot 需要使用它 |
文件 | Kconfig | 这个文件是 Kconfig 系统的菜单项,当我们使用命令:make menuconfig 时,Kconfig 系统读取该文件,根据该文件的内容生成各级菜单。U-Boot 源码根目录下的 Kconfig 就是顶级的配置菜单,其中会在引入其他目录下的 Kconfig 作为二级菜单,依次类推 |
文件 | Kbuild | 是 Kbuild 系统使用的文件,该文件用于定义一些源码使用的需要根据编译环境产生的中间文件。 |
------------- | ----------- | --------------------------------------------------------------- |
编译出的文件 | u-boot | 编译出的ELF格式的uboot镜像文件 |
编译出的文件 | u-boot.bin | 编译出来的二进制格式的uboot可执行镜像文件 |
编译出的文件 | u-boot.cfg | uboot的另一种配置文件 |
编译出的文件 | u-boot.lds | 链接脚本 |
编译出的文件 | u-boot.map | uboot映射文件 |
编译出的文件 | u-boot-nodtb.bin | 和u-boot.bin一样,u-boot-nodtb.bin的复制文件 |
编译出的文件 | u-boot.srec | S-Record格式的镜像文件 |
编译出的文件 | u-boot.sym | uboot符号文件 |
下一篇将介绍u-boot顶层Makefile文件。