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的大小写)。

验证方法与判定标准

执行以下检查确认板卡目录创建成功:

  1. 文件完整性检查:确认4个文件均存在且非空,文件名与上述完全一致。
  2. 构建识别检查:运行west build -b myboard zephyr/samples/hello_world --pristine,观察输出是否包含-- Board: myboard。若出现该行,说明板卡已被Zephyr构建系统接受。
  3. 配置生效检查:在构建目录下执行grep MYBOARD build/Kconfig,应能看到CONFIG_BOARD_MYBOARD=y的配置项。

以上条件全部满足,则说明自定义板卡目录创建成功,且基础元数据配置正确。若第2步失败,优先检查board.cmake文件是否存在(Zephyr要求该文件必须存在,即使内容为空)。