2. 创建自定义板卡目录
任务说明
在Zephyr源码树中为自定义硬件平台创建标准板卡目录,生成Zephyr板卡移植所需的4个基础文件,使该板卡能够被west build -b <board_name>识别并进入构建流程。本案例以myboard为例,目标板卡目录为zephyr/boards/arm/myboard。
目录结构与文件清单
在Zephyr源码根目录下执行以下命令创建目录结构:
mkdir -p zephyr/boards/arm/myboard
该目录下需创建4个文件:board.cmake、Kconfig.board、Kconfig.defconfig、board.h。其中board.h位于boards/arm/myboard/目录,但实际使用时Zephyr构建系统会将其复制到构建目录的include/下,因此源码头文件路径为zephyr/boards/arm/myboard/board.h。
关键完整代码
以下为4个文件的完整内容:
# board.cmake — 板卡构建配置(最小实现)
# 该文件用于注册板卡所需的额外构建逻辑,当前无特殊需求
# 若板卡需要自定义flash/debug工具,在此添加include()调用
# Kconfig.board — 板卡级Kconfig选项
# 定义板卡专属的配置选项(当前为空,仅保留菜单入口)
menuconfig MYBOARD
bool "MyBoard board options"
depends on BOARD_MYBOARD
# Kconfig.defconfig — 板卡默认配置
# 该文件中的配置项在未指定时自动生效
config BOARD_MYBOARD
bool
default y
# 板卡默认的串口配置(示例:使用UART0作为控制台)
config SERIAL
default y if BOARD_MYBOARD
config UART_CONSOLE
default y if BOARD_MYBOARD
config DEBUG_UART_BASE_ADDRESS
default 0x40001000 if BOARD_MYBOARD
# board.h — 板卡硬件接口头文件
#ifndef MYBOARD_BOARD_H
#define MYBOARD_BOARD_H
/* 板卡级硬件配置宏 */
#define MYBOARD_UART_BASE_ADDR 0x40001000
#define MYBOARD_UART_IRQ 38
#define MYBOARD_LED_PIN 13
#endif /* MYBOARD_BOARD_H */
文件放置与验证路径
将上述4个文件分别保存到zephyr/boards/arm/myboard/目录下。验证板卡是否被正确识别:
cd zephyr
west build -b myboard zephyr/samples/hello_world --pristine
若构建系统成功识别板卡,会出现-- Board: myboard的提示并开始编译。若提示Board not found,则检查目录路径是否为boards/arm/myboard,且文件名拼写完全一致(注意Kconfig.board和Kconfig.defconfig的大小写)。
验证方法与判定标准
执行以下检查确认板卡目录创建成功:
- 文件完整性检查:确认4个文件均存在且非空,文件名与上述完全一致。
- 构建识别检查:运行
west build -b myboard zephyr/samples/hello_world --pristine,观察输出是否包含-- Board: myboard。若出现该行,说明板卡已被Zephyr构建系统接受。 - 配置生效检查:在构建目录下执行
grep MYBOARD build/Kconfig,应能看到CONFIG_BOARD_MYBOARD=y的配置项。
以上条件全部满足,则说明自定义板卡目录创建成功,且基础元数据配置正确。若第2步失败,优先检查board.cmake文件是否存在(Zephyr要求该文件必须存在,即使内容为空)。