05-FreeRTOS的内存管理
2025/12/17 22:44:03
U-Boot 的源代码采用模块化分层设计,其文件结构清晰划分功能模块,以下是典型源码树的核心目录解析(以最新稳定版为例):
u-boot/ ├── arch/# 处理器架构相关代码├── board/# 开发板定制代码├── cmd/# 命令实现源码├── common/# 通用核心逻辑├── configs/# 预置配置文件├── disk/# 磁盘分区处理├── doc/# 开发文档├── drivers/# 设备驱动├── dts/# 设备树源码├── env/# 环境变量处理├── fs/# 文件系统支持├── include/# 全局头文件├── lib/# 通用库函数├── net/# 网络协议栈├── scripts/# 构建/配置脚本└── Makefile# 顶层构建入口arch/- 硬件架构支持arch/ └── arm/ ├── cpu/# CPU核心代码 (e.g. armv8, cortex_a53)├── dts/# 架构级设备树├── lib/# 架构相关库└── mach-*/# 芯片厂商代码 (e.g. mach-rockchip)cpu/armv8/start.S- ARMv8架构的第一条执行指令(复位向量入口)board/- 开发板硬件适配board/ └── vendor/# 厂商名 (e.g. rockchip)└── board_name/# 具体板名 (e.g. evb_rk3588)├── Kconfig# 板级配置选项├── MAINTAINERS# 维护者信息└── board.c# 板级初始化代码board_init_f()(早期初始化)和board_init_r()(后期初始化)drivers/- 设备驱动集合drivers/ ├── clk/# 时钟控制器├── gpio/# GPIO驱动├── mmc/# SD/eMMC控制器├── net/# 以太网/MAC驱动└── usb/# USB主机/设备协议栈drivers/mmc/rockchip_dw_mmc.c- Rockchip SDMMC控制器驱动include/- 头文件体系include/ ├── configs/# 板级配置头文件 (e.g. evb_rk3588.h)├── dm/# 设备模型相关├── linux/# Linux兼容头文件└── u-boot/# U-Boot核心头文件include/image.h- 定义内核镜像格式(FIT/uImage)configs/- 预置配置模板configs/ ├── evb_rk3588_defconfig# Rockchip评估板默认配置└── raspberrypi_4_defconfig# 树莓派4配置make evb_rk3588_defconfig一键加载配置| 文件路径 | 功能说明 |
|---|---|
common/board_f.c | 系统启动第一阶段初始化 (relocation前) |
common/board_r.c | 启动第二阶段初始化 (relocation后,命令行准备) |
common/main.c | 主循环处理:解析并执行用户命令 |
lib/asm-offsets.c | 生成关键数据结构偏移量(用于汇编与C交互) |
scripts/kconfig/* | 交互式配置菜单系统 (make menuconfig) |
makeevb_rk3588_defconfig# 加载开发板配置makemenuconfig# 交互式修改配置makeCROSS_COMPILE=aarch64-linux-gnu-# 指定交叉编译器u-boot: 原始ELF可执行文件u-boot.bin: 烧录用的二进制镜像u-boot.dtb: 设备树二进制文件arch → drivers → board三级隔离,提升跨平台移植性dts/目录存储源文件,编译生成*.dtbmake menuconfig实现模块化功能裁剪env/目录实现环境存储到Flash/NVMe的通用接口📌实践建议:
定制新板卡时,优先复制相近板型的board/和configs/模板,再修改board.c和设备树文件arch/arm/dts/your_board.dts,可快速完成移植。