XT-SDK 是一套面向嵌入式/跨平台应用的构建与组件组织框架,用来把应用工程、平台适配层和公共组件解耦。
xt-cli
xt-cli 是 xt-sdk 的命令行工具,用于简化 xt-sdk 的配置、编译、清理和运行流程。
安装
# 安装 xt-cli(新用户)
pip install xt-cli
# v1.0.1 用户升级 xt-cli
pip uninstall xt-cli
pip install xt-cli
详细变更记录见 发布说明 (RELEASE.md)。
首次配置
目前还没有一键安装功能,首次使用需要先手动配置。
cd <SDK_PATH>
# 设置 sdk 路径,支持使用相对路径,例如当前目录
xt config --sdk "."
# 设置 windows 平台工具链路径
xt config --platform "windows" --toolchain-path "C:\tools\winlibs-x86_64-posix-seh-gcc-15.2.0-mingw-w64ucrt-13.0.0-r1\mingw64\bin"
# 设置 lm620 平台工具链路径
xt config --platform "lm620" --toolchain-path "D:\work\pt\lm620\ict-build\ZCnuclei\win\bin"
# 设置 quectel 平台工具链路径
xt config --platform "quectel" --toolchain-path "D:\tools\ql-cross-tool\win32\owtoolchain\gcc-arm-none-eabi\bin"
编译和运行
windows 平台
# 设置默认 target 为 windows/simulator
xt config --target windows/simulator
# 进入示例工程目录
cd examples\build_system\app_with_components
# 清理后重新编译
xt fullclean build
# 运行(不再是内置命令,改为通过 Windows 平台 hook 实现)
xt run
lm620 平台
# 设置默认 target 为 lm620/r4f4
xt config --target lm620/r4f4
# 进入示例工程目录
cd examples\build_system\app_with_components
# 清理后重新编译
xt fullclean build
# 编译完后固件输出到 examples\build_system\app_with_components\.build\lm620_r4f4\bin
quectel 平台
# 设置默认 target 为 quectel/800akcn91lcp1
xt config --target quectel/800akcn91lcp1
# 进入示例工程目录
cd examples\build_system\app_with_components
# 清理后重新编译
xt fullclean build
# 编译完后固件输出到 examples\build_system\app_with_components\.build\quectel_800akcn91lcp1\output
板级配置
部分示例依赖板级配置(xt_board(板级配置) 组件),编译时必须指定 --board 参数:
# lm620 平台使用 e837n_v01 板子
xt --board e837n_v01 fullclean build
# windows/linux 模拟器使用 simulator 板子
xt --board simulator --target windows/simulator fullclean build
也可持久化到配置:
xt config --board e837n_v01
不指定 --board 时,xt_board(板级配置) 组件会报错提示设置 XT_SDK_BOARD 环境变量。
程序入口
XT-SDK 应用的入口函数为 xt_main,由 RTOS 线程调用:
int xt_main(void)
{
uint32_t timeout = 0;
while (1) {
xt_event_pre_handler_os_ext(timeout);
do {
}
return 0;
}
bool xt_event_ready(void)
查询事件队列是否非空
xt_err_t xt_event_handler(void)
处理事件队列中的所有事件
void xt_hal_core_setup(void)
初始化 HAL 核心模块
void xt_log_setup(uint8_t id, uint32_t baudrate, uint8_t tx_io, uint8_t rx_io)
初始化日志模块
xt_err_t xt_task_setup(void)
初始化 task 子系统
uint32_t xt_timer_handler(void)
定时器主循环处理函数
头文件包含规则
xtiny.h 是总头文件,已包含 HAL、Log、FS、Mobile、OTA、Audio 等常用模块。核心框架(Task/Event/Timer)需要单独包含。
(不推荐使用,仅调试用途)支持原生 xmake 编译
windows
cd <SDK_PATH>
# 首次需要输入工具链可执行文件路径,如 C:\tools\winlibs-x86_64-posix-seh-gcc-15.2.0-mingw-w64ucrt-13.0.0-r1\mingw64\bin
. .\export.ps1 windows/simulator
# 需要显式指定工程路径
$env:XT_SDK_PROJECT_PATH = "$env:XT_SDK_ROOT\examples\build_system\app_with_components"
# 有些工程要指定板子
$env:XT_SDK_BOARD = "simulator"
# 目前必须切到示例目录才能将临时文件正确输出到 XT_SDK_PROJECT_PATH/.build
cd examples\build_system\app_with_components
xmake build -F "$env:XT_SDK_ROOT\xmake.lua"
# 目前 platforms\windows\xmake.lua 的 app 目标已经设置 set_default(true),
# 下面的 app 参数不是必须的
xmake run -F "$env:XT_SDK_ROOT\xmake.lua" app
lm620
cd <SDK_PATH>
# 首次需要输入工具链可执行文件路径,如 D:\work\pt\lm620\ict-build\ZCnuclei\win\bin
. .\export.ps1 lm620/r4f4
# 需要显式指定工程路径
$env:XT_SDK_PROJECT_PATH = "$env:XT_SDK_ROOT\examples\build_system\app_with_components"
# 有些工程要指定板子
$env:XT_SDK_BOARD = "e837n_v01"
# 目前必须切到示例目录才能将临时文件正确输出到 XT_SDK_PROJECT_PATH/.build
cd examples\build_system\app_with_components
xmake build -F "$env:XT_SDK_ROOT\xmake.lua"
# 编译完后固件输出到 $env:XT_SDK_ROOT\examples\build_system\app_with_components\.build\lm620_r4f4\bin
xmake build -F xmake.lua