自定义板型开发指南
本文档提供创建自定义板型的完整步骤,包括文件模板和接口规范。
文件结构
my_board/
├── CMakeLists.txt # 板型构建脚本(必需)
├── board.h # 板级接口声明(必需)
├── board.c # 板级初始化实现(必需)
├── pinmux.h # 引脚配置声明(必需)
├── pinmux.c # 引脚配置实现(必需)
└── Kconfig # 板型配置选项(必需)
开发步骤
Step 1: 创建板型目录
mkdir -p /path/to/my_boards/my_board
cd /path/to/my_boards/my_board
Step 2: 创建 CMakeLists.txt
# ARCS BOARD SUPPORT
#
# Copyright (c) 2025, LISTENAI
# SPDX-License-Identifier: Apache-2.0
# 创建板型库
listenai_library_named(module_boards)
# 添加源文件
listenai_library_sources(
pinmux.c
board.c
)
# 添加头文件路径
listenai_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
Step 3: 创建 board.h 和 board.c
可以复制 SDK 内置板型作为起点:
cp $ARCS_SDK_BASE/boards/arcs_evb/board.h .
cp $ARCS_SDK_BASE/boards/arcs_evb/board.c .
修改 board_get_name() 返回值为您的板型名称。
board.h 模板:
// ARCS BOARD SUPPORT
//
// Copyright (c) 2025, LISTENAI
// SPDX-License-Identifier: Apache-2.0
#ifndef _BOARD_MY_BOARD_H_
#define _BOARD_MY_BOARD_H_
const char* board_get_name(void);
#endif // _BOARD_MY_BOARD_H_
board.c 模板:
// ARCS BOARD SUPPORT
//
// Copyright (c) 2025, LISTENAI
// SPDX-License-Identifier: Apache-2.0
#include "board.h"
const char* board_get_name(void)
{
return "my_board";
}
Step 4: 使用 Pinmux 工具生成引脚配置
Important
pinmux.h 和 pinmux.c 必须使用工具生成,不应手动编辑。
工具地址:https://tool.listenai.com/ls-pinmux-tool/
使用步骤:
访问 Pinmux 配置工具
选择目标芯片型号
配置项目中使用的外设(如 UART0、SPI0、I2C0 等)
为每个外设配置引脚映射
生成代码
将生成的
pinmux.h和pinmux.c保存到板型目录
生成的 pinmux 函数会被设备驱动自动调用(如 lisa_uart0_pinmux() 由 lisa_uart 驱动在 uart0 初始化时调用)。
Step 5: 创建 Kconfig 文件
# Board Configuration
#
# Copyright (c) 2025, LISTENAI
# SPDX-License-Identifier: Apache-2.0
config BOARD_NAME
string
default "my_board"
prompt "Board Name"
help
Board Name
config BOARD_MY_BOARD
bool
default y
help
Board is my_board
Note
将
my_board替换为实际板型名称第二个配置项名称格式为
BOARD_<板型名称大写>两个配置项都是必需的
Step 6: 编译验证
cd $ARCS_SDK_BASE
./build.sh -S samples/helloworld \
-DBOARD=my_board \
-DBOARD_SEARCH_PATH=/path/to/my_boards
Important
外部板型文件已通过编译变量指定构建路径,无需在工程中额外添加构建。
确认构建日志中出现:
-- Target board: my_board
-- Board found (custom): my_board from /path/to/my_boards
-- Board loaded successfully: /path/to/my_boards/my_board
常见问题
Q: 是否可以不创建 Kconfig 文件?
不可以。Kconfig 文件是必需的,必须包含 BOARD_NAME 和 BOARD_<名称大写> 两个配置项。
Q: 可以手动编辑 pinmux.c 吗?
不建议。应在 Pinmux 工具中修改后重新生成。
Q: board.c 中还需要实现其他函数吗?
当前只需实现 board_get_name()。未来如有更多板级初始化需求,可能会增加其他接口。