在 TinaSDK 中添加自定义板子
在嵌入式系统固件开发中,将自己的板子信息接入现有 SDK 是一个常见需求。本文以 Allwinner 平台为例,详细讲解如何在 Tina SDK 下添加自定义板子,并使其出现在 lunch
菜单中,便于后续编译工作。
一、理解关键目录结构
1. 芯片平台配置目录
- 路径:
device/config/chips/[芯片型号]
例如:device/config/chips/t113
- 内容:
- Linux 内核配置:如
linux-5.4/config-*
- 设备树文件:例如
board.dts
- 系统分区表:如
sys_*.fex
文件
- Linux 内核配置:如
2. 板级配置目录
- 路径:
target/allwinner/[板子名称]
例如:target/allwinner/t113-evb1
- 内容:
- BoardConfig.mk:定义板级硬件参数
- defconfig:内核编译默认配置
- *其它 .mk 文件:板子专用的构建配置文件
3. 全局配置脚本
- 文件:
vendorsetup.sh
- 作用:用于注册自定义板子选项到
lunch
菜单中
- 作用:用于注册自定义板子选项到
二、添加自定义板子的步骤
下面以自定义板子 t113-myboard 为例,介绍如何将其添加到 SDK 中。
1. 创建板级目录
在 target/allwinner/
目录下创建你的板子目录。建议复制现有板子目录作为模板:
cd target/allwinner
cp -r t113-evb1 t113-myboard # 复制现有板子配置作为模板
2. 配置 BoardConfig.mk
在 t113-myboard/ 目录下修改 BoardConfig.mk,定义板级硬件参数,例如:
# BoardConfig.mk 示例配置
TARGET_BOARD_PLATFORM := t113-myboard
KERNEL_VERSION := 5.4
TARGET_ARCH := arm
TARGET_CPU := cortex-a7
# 内核配置路径(引用芯片平台上的配置)
KERNEL_DEFCONFIG := device/config/chips/t113/linux-5.4/config-5.4
# 设备树路径,对应芯片平台设备树文件
KERNEL_DTS_PATH := device/config/chips/t113/linux/board.dts
# 系统分区表
TARGET_SYS_PARTITION := device/config/chips/t113/sys_partition.fex
3.内核与设备树配置
3.1 内核配置
在 device/config/chips/t113/linux-5.4/ 目录下创建自定义内核配置文件
例如:config-5.4-myboard,可以参考并修改现有的配置文件
3.2 设备树配置
在 device/config/chips/t113/linux/ 目录下修改 board.dts 或新建设备树文件(如 board-myboard.dts)
根据实际硬件调整引脚、时钟、外设节点等内容
4. 系统配置文件
修改或新建系统配置文件,如 sys_config.fex 和 sys_partition.fex(位于 device/config/chips/t113/)
定义硬件外设、系统分区、GPIO、屏幕参数等信息,确保符合自定义板子的需求
5. 注册到 lunch 菜单
打开全局配置脚本 target/allwinner/vendorsetup.sh,在其中添加自定义板子的选项,如下:
# 在 target/allwinner/vendorsetup.sh 中添加:
add_lunch_combo t113-myboard-eng
add_lunch_combo t113-myboard-user
这样在执行 lunch 命令时,你的自定义板子 t113-myboard 就会显示出来。
6. 创建编译脚本
打开全局配置脚本 target/allwinner/vendorsetup.sh,在其中添加自定义板子的选项,如下:
# t113_myboard.mk
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/t113_myboard.mk
COMMON_LUNCH_CHOICES := \
t113-myboard-eng \
t113-myboard-user
7.更新环境并验证
完成以上步骤后,更新 SDK 环境配置并验证:
source build/envsetup.sh
lunch # 此时应能看到 t113-myboard 的选项出现在菜单中
三、关键文件说明
文件/目录 | 作用说明 |
---|---|
BoardConfig.mk | 定义板级硬件参数,如 CPU 架构、内核版本、系统分区等 |
sys_*.fex | 定义系统分区、外设资源配置(如 GPIO、屏幕参数) |
defconfig | 内核编译默认配置,通过 make kernel_menuconfig 生成 |
vendorsetup.sh | 全局注册文件,用于将自定义板子加入 lunch 菜单 |
device/config/chips/ | 存放芯片级通用配置,如内核配置文件、设备树、系统分区表 |
四、注意事项
复用现有配置
建议先复制现有板子的目录(如 t113-evb1),然后逐步修改,确保自定义配置与硬件匹配。
分区表兼容性
确保 sys_partition.fex 中定义的分区大小符合实际硬件 Flash 的容量与布局要求,避免启动异常。
内核版本对齐
使用 linux-5.4 内核时,确保在 BoardConfig.mk 中设置 KERNEL_VERSION := 5.4,避免配置不一致。
设备树匹配
修改或添加设备树时一定要根据自己板子的实际硬件情况进行调整,包括引脚复用、外设节点定义等,以确保各模块正确加载。
结语
本文详细介绍了如何在 Tian (Tina) SDK 中添加自定义板子信息,包括目录结构的理解、板级配置文件的修改、内核与设备树的适配以及如何注册到 lunch 菜单中。按照以上步骤操作后,你的自定义板子就可以出现在编译选项中,并生成适合你硬件的固件镜像。
如果觉得这篇文章对你有帮助,欢迎点赞、评论交流分享经验!