自定义板型开发指南

本文档提供创建自定义板型的完整步骤,包括文件模板和接口规范。

文件结构

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/

使用步骤:

  1. 访问 Pinmux 配置工具

  2. 选择目标芯片型号

  3. 配置项目中使用的外设(如 UART0、SPI0、I2C0 等)

  4. 为每个外设配置引脚映射

  5. 生成代码

  6. 将生成的 pinmux.hpinmux.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_NAMEBOARD_<名称大写> 两个配置项。

Q: 可以手动编辑 pinmux.c 吗?

不建议。应在 Pinmux 工具中修改后重新生成。

Q: board.c 中还需要实现其他函数吗?

当前只需实现 board_get_name()。未来如有更多板级初始化需求,可能会增加其他接口。