资讯动态

Buildroot Linux BSP 软件架构范畴

发布时间:2026/8/5 23:32:11 来源:尧图企业网站定制
一、 整体源码目录结构树形图项目根目录/ │ ├── 【BSP 核心 - 板级支持包范畴】 │ ├── buildroot/ ★★★★★ Buildroot 构建系统 │ │ ├── board/ → 板级配置、覆盖层、脚本 │ │ ├── configs/ → 板级 defconfig │ │ ├── package/ → 软件包管理 (可添加定制包) │ │ └── output/ → 编译产物 │ │ │ ├── uboot/ ★★★★★ U-Boot 引导程序 │ │ ├── board/ → 板级 U-Boot 配置 │ │ ├── include/configs/ → 板级头文件 │ │ ├── arch/arm/ → 架构相关 │ │ └── drivers/ → 驱动 (可修改) │ │ │ ├── kernel/ ★★★★★ Linux 内核 │ │ ├── arch/arm/boot/dts/ → 设备树源文件 │ │ ├── drivers/ → 驱动代码 │ │ ├── sound/ → 音频驱动 │ │ └── include/ → 内核头文件 │ │ │ ├── device/ ★★★★☆ 芯片厂商设备支持包 │ │ ├── rockchip/ → Rockchip 芯片支持 │ │ ├── allwinner/ → 全志芯片支持 │ │ ├── amlogic/ → 晶晨芯片支持 │ │ └── .../ │ │ ├── board/ → 参考板配置 │ │ ├── common/ → 公共驱动 │ │ └── tools/ → 烧录工具 │ │ │ └── tools/ ★★★☆☆ 烧录和调试工具 │ ├── rkdevtool/ → Rockchip 烧录工具 │ ├── sunxi-tools/ → 全志烧录工具 │ ├── mkimage/ → 镜像打包工具 │ └── dtc/ → 设备树编译器 │ ├── 【应用层 - 用户空间范畴】 │ ├── app/ ★★★☆☆ 应用程序 │ │ ├── camera_app/ → 摄像头应用 │ │ ├── network_app/ → 网络应用 │ │ └── ai_app/ → AI 应用 │ │ │ ├── middleware/ ★★★☆☆ 中间件 │ │ ├── gstreamer/ → 多媒体框架 │ │ ├── opencv/ → 视觉库 │ │ └── lvgl/ → 图形库 │ │ │ └── external/ ★★★☆☆ 第三方库 │ ├── ffmpeg/ │ ├── openssl/ │ └── curl/ │ ├── 【开发环境 - 工具链范畴】 │ ├── prebuilts/ ★★★☆☆ 预编译工具链 │ │ ├── gcc/ → 交叉编译工具链 │ │ └── gdb/ → 调试器 │ │ │ └── scripts/ ★★★☆☆ 构建脚本 │ ├── build.sh → 一键编译脚本 │ ├── mkfirmware.sh → 固件打包脚本 │ └── flash.sh → 烧录脚本 │ └── 【文档】 └── docs/ ★★☆☆☆ 文档 ├── hardware/ → 硬件文档 ├── software/ → 软件文档 └── porting/ → 移植指南二、 BSP 软件架构核心范畴1. buildroot/ —— 构建系统 ★★★★★Buildroot 是 BSP 的构建框架负责生成完整的根文件系统。buildroot/ │ ├── 【BSP 开发核心】 │ ├── board/ → 板级配置目录 │ │ ├── vendor/board/ │ │ │ ├── rootfs_overlay/ → 根文件系统覆盖层 │ │ │ │ ├── etc/ → 系统配置文件 │ │ │ │ ├── usr/ → 用户程序 │ │ │ │ └── opt/ → 可选软件 │ │ │ ├── patches/ → 补丁目录 │ │ │ │ ├── linux/ → 内核补丁 │ │ │ │ ├── uboot/ → U-Boot 补丁 │ │ │ │ └── busybox/ → Busybox 补丁 │ │ │ ├── genimage.cfg → 镜像生成配置 │ │ │ ├── post-build.sh → 构建后脚本 │ │ │ └── post-image.sh → 镜像后脚本 │ │ └── common/ → 公共文件 │ │ │ ├── configs/ → 板级默认配置 │ │ ├── board_defconfig │ │ └── board_sdcard_defconfig │ │ │ ├── package/ → 软件包管理 │ │ ├── Config.in → 包配置菜单 │ │ ├── package/ → 具体包 │ │ │ ├── Config.in │ │ │ └── package.mk │ │ └── rockchip/ → 厂商专用包 │ │ ├── rkbin/ → Rockchip 固件 │ │ └── rknn/ → RKNN 驱动 │ │ │ ├── system/ → 系统初始化 │ │ ├── skeleton/ → 根文件系统骨架 │ │ ├── init/ → init 系统 │ │ └── device_table.txt → 设备节点表 │ │ │ └── output/ → 编译输出 │ ├── images/ → 最终镜像 │ ├── target/ → 根文件系统 │ ├── build/ → 编译中间文件 │ └── host/ → 主机工具BSP 开发在 buildroot 中的职责创建board/vendor/board/目录编写rootfs_overlay/添加板级配置文件编写genimage.cfg定义分区和镜像格式创建configs/board_defconfig板级配置在package/中添加或修改软件包2. uboot/ —— 引导加载程序 ★★★★★U-Boot 负责板子初始化、内存配置、加载内核和设备树。uboot/ │ ├── 【BSP 开发核心 - 板级配置】 │ ├── board/ → 板级目录 │ │ ├── rockchip/ → Rockchip 板级 │ │ │ ├── evb_rk3568/ → 开发板 │ │ │ │ ├── Kconfig │ │ │ │ ├── Makefile │ │ │ │ ├── board.c → 板级初始化 │ │ │ │ ├── board.h │ │ │ │ └── sdram_init.c → DDR 初始化 │ │ │ └── common/ → 公共代码 │ │ ├── allwinner/ → 全志板级 │ │ └── your_vendor/ → 自定义板级 │ │ └── your_board/ │ │ ├── board.c │ │ ├── Kconfig │ │ └── Makefile │ │ │ ├── include/configs/ → 板级配置头文件 │ │ ├── rockchip-common.h │ │ ├── evb_rk3568.h │ │ └── your_board.h │ │ │ ├── arch/arm/ → 架构相关 │ │ ├── mach-rockchip/ → Rockchip 架构支持 │ │ ├── mach-sunxi/ → 全志架构支持 │ │ └── dts/ → 设备树源文件 │ │ └── *-u-boot.dtsi → U-Boot 专用设备树 │ │ │ ├── drivers/ → 驱动 (BSP 可能修改) │ │ ├── mtd/ → Flash 驱动 │ │ ├── mmc/ → SD/eMMC 驱动 │ │ ├── net/ → 网络驱动 │ │ └── usb/ → USB 驱动 │ │ │ └── configs/ → U-Boot 默认配置 │ ├── evb_rk3568_defconfig │ └── your_board_defconfigBSP 开发在 uboot 中的职责创建board/vendor/board/板级目录编写board.c实现板级初始化编写include/configs/board.h配置宏配置 DDR 参数sdram_init.c创建设备树文件arch/arm/dts/board.dts创建configs/board_defconfig3. kernel/ —— Linux 内核 ★★★★★内核是 BSP 的核心包含驱动、设备树、架构支持。kernel/ │ ├── 【BSP 开发核心 - 设备树】 │ ├── arch/arm/boot/dts/ → 设备树源文件 │ │ ├── rk3568.dtsi → SoC 级设备树 │ │ ├── rk3568-evb.dts → 开发板设备树 │ │ ├── rk3568-your-board.dts → 自定义板设备树 │ │ ├── sun8i-v3s.dtsi │ │ └── Makefile │ │ │ ├── arch/arm/mach-rockchip/ → 架构支持 │ │ ├── board-vendor.c → 板级初始化 │ │ ├── pm.c → 电源管理 │ │ └── Kconfig │ │ │ ├── drivers/ → 驱动代码 (BSP 核心) │ │ ├── media/ → 多媒体驱动 │ │ │ ├── platform/rockchip/ → Rockchip 相机驱动 │ │ │ ├── v4l2/ → V4L2 框架 │ │ │ └── i2c/ → 传感器驱动 │ │ ├── gpu/ → GPU 驱动 │ │ ├── net/ → 网络驱动 │ │ ├── mmc/ → 存储驱动 │ │ ├── usb/ → USB 驱动 │ │ ├── spi/ → SPI 驱动 │ │ ├── i2c/ → I2C 驱动 │ │ ├── pwm/ → PWM 驱动 │ │ └── staging/ → 暂存驱动 │ │ │ ├── sound/soc/ → 音频驱动 │ │ ├── rockchip/ → Rockchip 音频 │ │ └── codecs/ → 音频编解码器 │ │ │ ├── include/ → 内核头文件 │ │ ├── dt-bindings/ → 设备树绑定 │ │ └── linux/ → 驱动 API │ │ │ └── arch/arm/configs/ → 内核默认配置 │ ├── rockchip_linux_defconfig │ ├── sunxi_defconfig │ └── your_board_defconfigBSP 开发在 kernel 中的职责创建设备树文件arch/arm/boot/dts/board.dts编写或修改驱动drivers/配置内核make menuconfig保存为defconfig添加板级初始化代码arch/arm/mach-*/创建设备树绑定文档Documentation/devicetree/bindings/4. device/ —— 芯片厂商支持包 ★★★★☆芯片厂商提供的设备支持包包含参考板配置、公共驱动、烧录工具等。device/ │ ├── rockchip/ ★★★★☆ Rockchip 厂商包 │ ├── board/ → 参考板配置 │ │ ├── rk3568/ │ │ │ ├── BoardConfig.mk → 板级配置 │ │ │ ├── parameter.txt → 分区表 │ │ │ ├── config.cfg → 烧录配置 │ │ │ └── prebuild/ → 预编译文件 │ │ │ ├── uboot.img │ │ │ └── trust.img │ │ └── common/ │ │ │ ├── common/ → 公共文件 │ │ ├── init/ → init 脚本 │ │ ├── media/ → 多媒体配置 │ │ └── recovery/ → 恢复系统 │ │ │ └── tools/ → 烧录工具 │ └── Linux_Upgrade_Tool/ │ ├── allwinner/ ★★★★☆ 全志厂商包 │ ├── board/ → 参考板配置 │ ├── common/ → 公共文件 │ └── tools/ → 烧录工具 (sunxi-tools) │ ├── amlogic/ ★★★★☆ 晶晨厂商包 │ └── buildroot/ ★★★★☆ 厂商提供的 Buildroot 配置 ├── board/ → 厂商板级配置 ├── package/ → 厂商专用包 └── configs/ → 厂商 defconfigBSP 开发在 device/ 中的职责参考厂商配置创建自己的板级目录修改BoardConfig.mk配置板子参数修改parameter.txt定义分区表使用厂商工具烧录固件5. tools/ —— 烧录和调试工具 ★★★☆☆tools/ │ ├── rkdevtool/ → Rockchip 烧录工具 │ ├── Linux_Upgrade_Tool/ │ └── rkflashkit/ │ ├── sunxi-tools/ → 全志烧录工具 │ ├── sunxi-fel → FEL 烧录 │ └── sunxi-nand-image-builder │ ├── mkimage/ → 镜像打包工具 ├── dtc/ → 设备树编译器 ├── mksdcard/ → SD 卡制作脚本 └── flash.sh → 一键烧录脚本BSP 开发在 tools/ 中的职责编写板级烧录脚本配置烧录参数生成生产烧录镜像三、 BSP 软件架构层次图┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │ 【BSP 软件架构层次】 │ ├─────────────────────────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ 【应用层】 │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ 应用APP │ │ Web Server │ │ AI Demo │ │ 测试工具 │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────────────────────────┼──────────────────────────────────────────────────┐│ │ │ 【中间件层】 ││ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────▼─────┐ ┌─────────────┐ ││ │ │ │ GStreamer │ │ FFmpeg │ │ OpenCV │ │ LVGL │ ││ │ │ └─────────────┘ └─────────────┘ └───────────┘ └─────────────┘ ││ │ └─────────────────────────────────────────────────────────────────────────────────────────┘│ │ │ │ │ ┌───────────────────────────────────────────┼──────────────────────────────────────────────────┐│ │ │ 【系统层】 ││ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────▼─────┐ ┌─────────────┐ ││ │ │ │ Busybox │ │ init │ │ udev │ │ systemd │ ││ │ │ └─────────────┘ └─────────────┘ └───────────┘ └─────────────┘ ││ │ └─────────────────────────────────────────────────────────────────────────────────────────┘│ │ │ │ │ ┌───────────────────────────────────────────┼──────────────────────────────────────────────────┐│ │ │ 【内核层】 ││ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ ││ │ │ │ Linux Kernel Device Tree │ ││ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ ││ │ │ │ │ Camera │ │ Display │ │ Encoder │ │ NPU │ │ ││ │ │ │ │ Driver │ │ Driver │ │ Driver │ │ Driver │ │ ││ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ ││ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ ││ │ │ │ │ Ethernet │ │ SD/eMMC │ │ USB │ │ I2C/SPI │ │ ││ │ │ │ │ Driver │ │ Driver │ │ Driver │ │ Driver │ │ ││ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ ││ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ ││ │ └─────────────────────────────────────────────────────────────────────────────────────────┘│ │ │ │ │ ┌───────────────────────────────────────────┼──────────────────────────────────────────────────┐│ │ │ 【引导层】 ││ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────▼─────┐ ┌─────────────┐ ││ │ │ │ U-Boot │ │ ATF │ │ Rockchip │ │ SPL │ ││ │ │ │ │ │ │ │ Miniload│ │ │ ││ │ │ └─────────────┘ └─────────────┘ └───────────┘ └─────────────┘ ││ │ └─────────────────────────────────────────────────────────────────────────────────────────┘│ │ │ │ │ ┌───────────────────────────────────────────┼──────────────────────────────────────────────────┐│ │ │ 【构建层】 ││ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ ││ │ │ │ Buildroot / Yocto │ ││ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ ││ │ │ │ │ board/ │ │ configs/ │ │ package/ │ │ output/ │ │ ││ │ │ │ │ (板级) │ │ (defconfig)│ │ (软件包) │ │ (输出) │ │ ││ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ ││ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ ││ │ └─────────────────────────────────────────────────────────────────────────────────────────┘│ │ │ │ │ ┌───────────────────────────────────────────┼──────────────────────────────────────────────────┐│ │ │ 【工具链】 ││ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────▼─────┐ ┌─────────────┐ ││ │ │ │ GCC │ │ GDB │ │ OpenOCD │ │ 烧录工具 │ ││ │ │ └─────────────┘ └─────────────┘ └───────────┘ └─────────────┘ ││ │ └─────────────────────────────────────────────────────────────────────────────────────────┘│ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘四、 BSP 开发范畴总结表目录/模块归属BSP 开发职责典型文件buildroot/board/BSP 核心添加板级配置、覆盖层、脚本rootfs_overlay/,genimage.cfgbuildroot/configs/BSP 核心创建板级 defconfigboard_defconfigbuildroot/package/BSP 相关添加定制包、修改现有包Config.in,*.mkuboot/board/BSP 核心添加板级初始化代码board.c,sdram_init.cuboot/include/configs/BSP 核心配置板级宏board.huboot/configs/BSP 核心U-Boot defconfigboard_defconfigkernel/arch/*/boot/dts/BSP 核心设备树源文件board.dts,soc.dtsikernel/drivers/BSP 核心编写/修改驱动*.c,Kconfig,Makefilekernel/arch/*/configs/BSP 相关内核 defconfigboard_defconfigdevice/vendor/board/厂商支持参考厂商配置BoardConfig.mk,parameter.txttools/BSP 辅助编写烧录脚本flash.sh,mkimage.shscripts/BSP 辅助编译脚本build.sh,mkfirmware.sh五、 BSP 开发工作流程完整版# 1. 准备厂商支持包 git clone vendor-sdk # 克隆厂商 SDK cd sdk/ ​ # 2. 配置 Buildroot cd buildroot/ make vendor_board_defconfig # 使用厂商配置 make menuconfig # 调整配置 ​ # 3. 配置 U-Boot cd ../uboot/ make board_defconfig # 使用板级配置 make menuconfig # 调整 U-Boot 配置 # 修改板级文件 vim board/vendor/board/board.c vim include/configs/board.h ​ # 4. 配置内核 cd ../kernel/ make board_defconfig # 使用板级配置 make menuconfig # 调整内核配置 # 修改设备树 vim arch/arm/boot/dts/board.dts # 修改驱动 vim drivers/media/platform/vendor/*.c ​ # 5. 添加板级覆盖层 cd ../buildroot/ mkdir -p board/vendor/board/rootfs_overlay/ vim board/vendor/board/rootfs_overlay/etc/init.d/S99_camera ​ # 6. 配置镜像生成 vim board/vendor/board/genimage.cfg ​ # 7. 完整编译 cd ../../ ./build.sh # 一键编译 ​ # 8. 烧录 ./flash.sh # 烧录脚本 ​ # 9. 调试 # 串口调试 minicom -D /dev/ttyUSB0 # 网络调试 ping 192.168.1.100 # 内核调试 cat /proc/cpuinfo lsmod dmesg六、 BSP 与其他模块的边界┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │ 【BSP 范畴界定】 │ ├─────────────────────────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ 【BSP 开发范畴】 │ │ │ │ │ │ │ │ • 硬件初始化代码 (U-Boot, SPL) │ │ │ │ • 设备树文件 (DTS) │ │ │ │ • 设备驱动开发 (Camera, Display, Encoder, Network, Storage) │ │ │ │ • 板级配置 (Buildroot board/, defconfig) │ │ │ │ • 根文件系统定制 (rootfs_overlay/, init scripts) │ │ │ │ • 镜像生成配置 (genimage.cfg, parameter.txt) │ │ │ │ • 烧录脚本和工具 │ │ │ │ • 硬件抽象层 (HAL) 适配 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ 【应用开发范畴】 │ │ │ │ │ │ │ │ • 业务逻辑应用 (Camera App, Network App) │ │ │ │ • 中间件集成 (GStreamer pipeline, OpenCV算法) │ │ │ │ • Web 界面开发 │ │ │ │ • AI 模型部署和推理应用 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ 【厂商提供范畴】 │ │ │ │ │ │ │ │ • SoC 基础驱动 (已在 kernel/drivers/ 中) │ │ │ │ • 参考板配置 (device/vendor/board/) │ │ │ │ • 烧录工具 (rkdevtool, sunxi-tools) │ │ │ │ • 预编译固件 (DDR init, ATF) │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘七、 总结Buildroot Linux BSP 软件架构范畴包括以下核心模块模块目录BSP 开发内容构建系统buildroot/board/,configs/,package/引导加载uboot/board/,include/configs/,configs/Linux 内核kernel/arch/*/boot/dts/,drivers/,arch/*/configs/厂商支持device/board/,common/,tools/工具链prebuilts/,tools/交叉编译工具、烧录工具脚本scripts/编译脚本、烧录脚本BSP 开发者的核心工作硬件适配U-Boot 板级代码 设备树 内核驱动系统配置Buildroot defconfig rootfs_overlay init 脚本镜像生成genimage.cfg 分区表 烧录脚本调试验证串口调试 内核调试 性能优化

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价