chore: migrate project into clean repository

This commit is contained in:
yuuux
2026-08-13 16:50:52 +08:00
commit d1d25a09e7
27405 changed files with 9422808 additions and 0 deletions

View File

@@ -0,0 +1,248 @@
# 自定义板型开发指南
本文档提供创建自定义板型的完整指南,包括文件结构、接口规范、开发步骤和文件模板。
## 概述
创建自定义板型需要准备以下文件:
```
my_board/
├── CMakeLists.txt # 板型构建脚本(必需)
├── board.h # 板级接口声明(必需)
├── board.c # 板级初始化实现(必需)
├── pinmux.h # 引脚配置声明(必需)
├── pinmux.c # 引脚配置实现(必需)
└── Kconfig # 板型配置选项(必需)
```
## 开发步骤
### Step 1: 创建板型目录
```bash
# 创建板型目录
mkdir -p /path/to/my_boards/my_board
cd /path/to/my_boards/my_board
```
### Step 2: 创建 CMakeLists.txt
复制以下内容到 `CMakeLists.txt`
```cmake
# 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 内置板型作为起点**
```bash
cp $ARCS_SDK_BASE/boards/arcs_evb/board.h .
cp $ARCS_SDK_BASE/boards/arcs_evb/board.c .
```
然后修改文件中的注释和 `board_get_name()` 返回值为您的板型名称。
**方法二:使用下方的文件模板手动创建**
参考本文档后面的"文件模板"章节。
### Step 4: 使用 Pinmux 工具生成引脚配置
**重要pinmux.h 和 pinmux.c 必须使用工具生成,不应手动编辑。**
#### 工具信息
- **工具地址**https://tool.listenai.com/ls-pinmux-tool/
- **功能**:根据芯片型号和外设配置,自动生成引脚复用代码
#### 使用步骤
1. 访问 Pinmux 配置工具
2. 选择目标芯片型号
3. 配置项目中使用的外设(如 UART0、SPI0、I2C0 等)
4. 为每个外设配置引脚映射
5. 生成代码
6. 将生成的 `pinmux.h``pinmux.c` 保存到板型目录
#### 设备驱动集成
生成的 pinmux 函数会被对应的设备驱动自动调用:
- `lisa_uart0_pinmux()` - 由 lisa_uart 驱动的 uart0 设备初始化时调用
- `lisa_spi0_pinmux()` - 由 lisa_spi 驱动的 spi0 设备初始化时调用
- 其他外设依此类推
**注意事项:**
- 不要手动编辑生成的文件
- 如需修改引脚配置,应在工具中修改后重新生成
### Step 5: 创建 Kconfig 文件(必需)
创建 `Kconfig` 文件,必须包含以下两个配置项:
```bash
# 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
```
**重要提示:**
1.`my_board` 替换为您的实际板型名称
2. 第二个配置项名称格式为 `BOARD_<板型名称大写>`
3. 例如板型名为 `arcs_evb`,则配置项为 `BOARD_arcs_evb`
**Kconfig 说明:**
- **必需配置项 1**`BOARD_NAME` - 板型名称string 类型)
- **必需配置项 2**`BOARD_<BOARD_NAME_UPPER>` - 板型标识bool 类型,默认 y
- 构建系统会自动加载此文件并设置环境变量 `BOARD_KCONFIG_PATH`
- 外部板型和 SDK 内置板型享有相同的配置能力
### Step 6: 编译验证
```bash
cd $ARCS_SDK_BASE
./build.sh -S samples/helloworld \
-DBOARD=my_board \
-DBOARD_SEARCH_PATH=/path/to/my_boards
```
**重要提示:** 外部板型文件已通过编译变量指定构建路径,无需在工程中额外添加构建。
### Step 7: 检查构建日志
确认看到板型加载信息:
```
-- Target board: my_board
-- Board found (custom): my_board from /path/to/my_boards
-- Board loaded successfully: /path/to/my_boards/my_board
```
## 接口规范
### board.h / board.c - 标准接口
板型必须实现以下标准接口:
- `const char* board_get_name(void)` - 返回板型名称字符串
### pinmux.h / pinmux.c - 引脚复用配置
**重要说明:这两个文件由 Pinmux 配置工具生成,不应手动编辑。**
详见 Step 4 的说明。
## 文件模板
### board.h 模板
可参考boards/arcs_evb/board.h
```c
// ARCS BOARD SUPPORT
//
// Copyright (c) 2025, LISTENAI
// SPDX-License-Identifier: Apache-2.0
#ifndef _BOARD_MY_BOARD_H_
#define _BOARD_MY_BOARD_H_
/**
* @brief Get the board name
*
* @return const char* Board name string
*/
const char* board_get_name(void);
#endif // _BOARD_MY_BOARD_H_
```
### board.c 模板
可参考boards/arcs_evb/board.c
```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";
}
```
### Kconfig 模板
可参考boards/arcs_evb/Kconfig
```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
```
**注意:** 请将模板中的 `my_board``MY_BOARD` 替换为您的实际板型名称。
## 常见问题
### Q: 是否可以不创建 Kconfig 文件?
不可以。Kconfig 文件是必需的,必须包含 `BOARD_NAME``BOARD_<名称大写>` 两个配置项。
### Q: 可以手动编辑 pinmux.c 吗?
不建议。pinmux.h 和 pinmux.c 应该由 Pinmux 配置工具生成。如果需要修改引脚配置,应在工具中重新配置并生成新文件。
### Q: board.c 中还需要实现其他函数吗?
当前只需要实现 `board_get_name()` 函数。未来如果有更多板级初始化需求,可能会增加其他接口。