3-Uboot源码目录分析
2025-02-18 来源:cnblogs
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 结尾的,这些配置文件对于不同的板子,编译时要先编译一遍对于的板子的配置文件。
- 初始化(时钟初始化/内存初始化/steppingstone to SDRAM/bss段初始化)
- RAM、SRAM、SDRAM、ROM、EPROM、EEPROM、Flash存储器概念
- s3c2440裸机-内存控制器3-SDRAM原理-cpu是如何访问sdram的
- s3c2440裸机-内存控制器4-SDRAM编程实现
- s3c2440内存控制器与SDRAM基本测试
- s3c2440裸机-内存控制器(四、SDRAM原理-cpu是如何访问sdram的)
- s3c2440裸机-内存控制器(五、SDRAM编程实现)
- 嵌入式linux开发 (九) RAM(3) s3c2440外扩sdram
- 2440裸机-12-3内存控制器与SDRAM_SDRAM设置
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




