xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
发布说明

v1.0.3 (2026-06-26)

不向后兼容的变更

  1. xt_fs 彻底删除,强制迁移到 xt_vfs。
    1. v1.0.2 中 xt_fs.h 仅标记 deprecated,现在已完全删除(7e34fbb、dc7c50a)。
    2. 任何 #include "xt_fs.h" 将编译失败,必须改为 #include "xt_vfs.h"。
    3. xt_fs_init()(无参)→ xt_vfs_init(&cfg),需传入 xt_vfs_config_t 配置结构体。
    4. xt_fs_flush(fd) + xt_fs_sync(fd) 合并为 xt_vfs_fsync(fd)。
    5. 所有类型、宏前缀从 xt_fs_*/XT_FS_* 改为 xt_vfs_*/XT_VFS_*(见迁移指南)。
    6. XT_FS_IS_VALID_FD / XT_FS_IS_VALID_DIR 宏删除,不再需要(VFS Core generation 自动校验)。
    7. 宏默认值变化:XT_VFS_PATH_MAX(256→128)、XT_VFS_MAX_FILES(16→8)、XT_VFS_MAX_DIRS(8→4),如需更大值通过编译宏覆盖。
    8. **迁移指南**:完整映射表见 components/xt_vfs/xt_fs_migration.md:1-261。核心步骤:
      1. 全局替换 xt_fs_ → xt_vfs_、XT_FS_ → XT_VFS_。
      2. xt_fs_init() 改为: c xt_vfs_config_t cfg = { .max_mounts = 4, .max_files = 16, .max_dirs = 8, .max_threads = 4 }; xt_vfs_init(&cfg);
      3. 添加后端挂载(Windows 平台由 xt_platform_preinit 自动完成)。
        1. int32_t fd → xt_vfs_fd_t fd(类型兼容,建议用新类型名)。
      4. **Linux 模拟器**:原 platforms/linux/simulator/src/xt_fs.c(880 行)已删除,Linux 平台通过 xt_platform_preinit + xt_vfs_native(原生文件系统) 提供默认 VFS 后端。
  2. xt_task API 返回值变更。
    1. xt_task_setup() 从 void 改为 xt_err_t(components/xt_task/xt_task.h:107),目前始终返回 XT_EOK。
    2. xt_task_start() 从 void 改为返回 xt_task_t *(xt_task.h:119),分配失败返回 NULL。
    3. xt_task_timer_handler() 完全移除——task 定时器管理已内聚到 xt_timer2 回调机制。
    4. struct xt_task 内部字段变化:移除 wait_timeout、timer_active,新增 xt_timer2_t timer——直接访问 task 内部字段的代码将编译失败。
    5. 新增 xt_task_is_running(xt_task_t *task) 查询任务是否在运行(xt_task.h:138)。
    6. 新增 xt_task_sys_reset() 重置所有任务状态(仅测试用)(xt_task.h:146)。
    7. xt_task_call_subtask 宏分配失败时不再挂起父任务(break 跳出),旧依赖"失败也挂起"的行为受影响。
  3. HAL spilcd 接口重构。
    1. 三个配置函数弃用并降级为空宏桩(platforms/components/xtiny/xt_hal/xt_hal_spilcd.h:195-198):
    2. xt_hal_spilcd_setup() 现在根据 dcx_pin 和 sdi_pin/sdo_pin 参数自动判断 3 线/4 线模式,不再需要显式调用上述三个配置函数。
    3. 新增 xt_hal_spilcd_set_freq(lcd_id, freq_hz) 设置 SPI 时钟频率(xt_hal_spilcd.h:143),lm620 平台支持 13/26/39/52 MHz 四档。
    4. **迁移指南**:删除对已弃用三个函数的调用,在 xt_hal_spilcd_setup() 中正确传入引脚号,并显式调用 xt_hal_spilcd_set_freq() 设置频率。

SDK 基础能力

  1. Windows Simulator Backtrace 打印。
    1. 崩溃时自动输出调用栈到 backtrace_dump.txt(platforms/windows/components/platform_entry/backtrace.c:1-145)。
    2. 基于 SEH + dbghelp.dll 动态加载实现,支持 x86_64 和 i386。
    3. xt run 完成后自动解析 dump 文件,终端打印函数名和文件行号(platforms/windows/xt_hook.py:151-243)。
    4. 使用 addr2line 和 objdump 进行地址到符号的转换。
  2. xt_log assert 回调注册机制。
    1. 新增 xt_assert_cb_t 回调类型(platforms/components/xtiny/xt_log/xt_log.h:42)。
    2. 新增 xt_assert_set_callback(cb) 注册回调(xt_log.h:71),cb=NULL 取消注册。
    3. xt_assert_failed() 在打印错误消息前先调用注册的回调(Windows/Linux 均已实现)。
    4. 使用场景:在 assert 触发时执行自定义日志记录、状态快照或安全关闭流程。
  3. xt_platform_preinit 自动挂载组件。
    1. Windows 和 Linux 平台均提供此组件(platforms/windows/components/xt_platform_preinit/、platforms/linux/components/xt_platform_preinit/)。
    2. platform_entry/main.c 在 xt_main() 前自动调用 xt_platform_preinit(),完成 VFS 初始化 + native 后端挂载到根目录 "/"。
    3. 用户无需手动 xt_vfs_init / xt_vfs_mount,启动后直接 xt_vfs_open("/xxx.txt", ...) 即可使用。
    4. 构建依赖自动包含 xt_vfs(虚拟文件系统) 和 xt_vfs_native(原生文件系统)。
  4. xt_vfs_native 提升为跨平台组件。
    1. 从测试目录 tests/xt_vfs/ 迁移到 components/xt_vfs_native/(1600 行实现),同时支持 Windows 和 Linux。
    2. 全 POSIX 化改造:基于 CRT(fopen/fread/fwrite)和 POSIX 标准接口(stat/opendir/readdir/truncate/statvfs 等),仅 native_statfs 保留 Windows 平台分支。
    3. 提供 xt_vfs_native_create(base_path) / xt_vfs_native_destroy(ctx) / xt_vfs_native_cleanup(ctx) 管理接口。
    4. 可通过 xt_vfs_native_root 选项配置默认根目录。
  5. set_area 使用 XT_SOC_ALIGN 对齐缓冲区。
    1. LCD 示例中栈上的 uint16_t buf[2] 改为 XT_SOC_ALIGN(XT_SOC_CACHE_LINE_SZ) uint16_t buf[2]。
    2. lm620 DMA 控制器要求传输缓冲区必须 32 字节对齐,避免数据传输异常。

组件清单

  1. components/xt_task
    1. **基于 xt_timer2 / xt_event v2 重构**:定时器管理从主动轮询迁移到被动回调模式(248e318)。
    2. 内嵌 xt_timer2_t 替代旧的 wait_timeout/timer_active 字段,通过 _xt_task_timer_cb 回调自动唤醒。
    3. xt_task_setup 改为幂等——多次调用安全,不会重置运行中任务。
    4. xt_task_call_subtask 增加分配失败检查,失败时 break 而非挂起父任务。
    5. XT_TASK_BEGIN/END 宏抑制 -Wimplicit-fallthrough 编译器警告。
    6. xmake.lua 新增配置选项:xt_task_timer2_pool_size(默认 0)和 xt_task_timer2_use_pool(默认 0)。
    7. 新增 631 行模块文档(components/xt_task/xt_task.md),覆盖数据结构、API 参考、宏参考、事件/超时协作、父子任务机制、典型用法。
  2. components/xt_vfs
    1. xt_fs 的替代组件,在 v1.0.2 基础上完全承接文件系统职责。
    2. 迁移指南 components/xt_vfs/xt_fs_migration.md(261 行),提供逐函数、逐类型、逐宏的完整映射表。

测试扩展

  1. tests/xt_task
    1. 新增 51 项单元测试(xt_main.c:1806 行),覆盖 9 大分组:基本生命周期(10)、delay(5)、wait_event(5)、wait_until(8)、subtask(6)、并发多任务(4)、边界异常(5)、定时器/事件集成(5)、事件+超时竞争(3)。
    2. 使用自定义 tick 精确控制时间推进,run_until_idle() 辅助函数安全阀 1000 轮防死循环。
  2. tests/xt_vfs_basic
    1. 新增 42 项 VFS 基础功能验证测试(xt_main.c:1098 行),覆盖 init/deinit(2)、open/close(8)、read/write(3)、seek/tell(4)、stat/fstat(3)、remove/rename(3)、mkdir/rmdir(3)、目录操作(6)、truncate(3)、access/sync/statfs/fsync(4)、错误处理(3)。
    2. VFS 初始化由 xt_platform_preinit 自动完成,测试中无需手动 mount。
  3. tests/xt_vfs
    1. 测试扩展至 70 项(7 组配置),新增 CWD 相对路径、utime、strerror/errno、挂载点灵活性等测试分组。
    2. 7 组配置覆盖:默认全功能(70 项)、静态内存(22)、最小裸机(20)、相对路径(73)、裸机无锁(22)、堆模式无目录(62)、极小资源(22)。
  4. 测试格式统一。
    1. xt_event(事件管理)、xt_event_and_timer、xt_fal(Flash 抽象层)、xt_timer(软件定时器)、xt_timer2 五个测试文件统一使用 @name/@{} doxygen 分组格式。
    2. 移除旧的 /* === [...] === */ section 分隔符,与 xt_vfs(虚拟文件系统) / xt_task 格式保持一致。
    3. xt_timer(软件定时器) 修复预存编译问题:补 xt_timer.h include + xt_task 依赖。

支持的平台

  1. windows/simulator
    1. 新增 backtrace.c:崩溃调用栈捕获与打印(145 行)。
      1. 新增 xt_platform_preinit 组件:自动 VFS 初始化与挂载(Windows / Linux 均支持)。
      2. 新增 xt_vfs_native(原生文件系统) 组件(现为跨平台组件,位于 components/xt_vfs_native/):基于 POSIX + CRT 的 VFS 原生后端。
    2. xt_log.c 新增 assert 回调实现。
    3. xt_hal_spilcd.c 删除三个已弃用函数的桩实现。
    4. simulator/xmake.lua 移除 add_deps("xt_fs")。
      1. xt_hook.py 新增 backtrace 解析函数(77 行新增)。
      2. backtrace.c 抑制 GetProcAddress 类型转换警告(-Wcast-function-type)。
  2. linux/simulator
    1. **平台目录重构为与 Windows 一致的组件化架构**(9389454):
      1. 引入 components/ 组件目录,每个组件独立子目录(含 xmake.lua + 源文件)。
      2. 组件包括:cmsis_os2、platform_entry、xt_hal(HAL 驱动总入口)(12 个 HAL 桩)、xt_log、xt_mem(内存管理)、xt_mobile(蜂窝网络)、xt_ota(OTA 升级)、xt_platform_preinit、xt_safe(安全功能)、xt_soc。
      3. simulator/xmake.lua 改为组件聚合模式,通过 includes 引入 components/ 并聚合为 xt_core 静态库。
    2. 新增 configs.lua(声明 has_cmsis_os2)、xt_hook.py(Linux 适配版,支持 info/greet/run/after_build task)。
      1. 新增 xt_platform_preinit 组件,通过 platform_entry/main.c 在 xt_main() 前调用,完成 VFS 初始化 + xt_vfs_native 后端挂载到 "/"。
      2. toolchain.lua 对齐 Windows:新增 set_sdkdir、set_bindir、指针 cast 抑制 flag(-Wno-int-to-pointer-cast)。
    3. 顶层 xmake.lua 对齐 Windows:去除 xt_sdk_platform phony target。
    4. 从 Windows 复制 xt_soc.h(1032 行完整引脚定义)和 7 个缺失 HAL stub(dac/i2c/pin_mux/pwm/rtc/spi/uart)。
    5. 所有 HAL 源文件对齐至 Windows stub 风格(xt_hal_core(核心驱动)/adc/pm/spilcd)。
    6. 保留 Linux 特有实现:cmsis_os2_posix.c(POSIX pthread 模拟 RTOS)、xt_mobile.c 额外 7 个函数。
    7. 删除 simulator/src/xt_fs.c(880 行),Linux 平台暂无默认 VFS 后端。

示例清单

  1. examples/platform_specific/lm620/lcd_st7735_deepsleep
    1. 新增深度睡眠唤醒 LCD 完整演示(583 行),演示 PSM DPM 框架下的 LCD 恢复流程。
    2. 支持 PD(掉电)和 AON(常电)两种引脚模式切换验证。
    3. 包含详尽的 RGB565_SWAP 异常说明和 DPM 修复方案文档。
  2. examples/platform_specific/lm620/ 目录重命名
    1. e837n-adckey → e837n_adckey
    2. lcd-st7735 → lcd_st7735
    3. lcd-st7789 → lcd_st7789
    4. 统一使用下划线命名规范,避免与 xmake target 名称中的连字符混淆。
  3. examples/platform_specific/lm620/lcd_st7735
    1. 适配 HAL spilcd 接口重构:删除 set_dcx_mode/set_dummy_cycles/set_spi_bidir 调用,改用 xt_hal_spilcd_setup() 传入引脚 + xt_hal_spilcd_set_freq()。
    2. 新增频率循环切换演示(每 100 帧切换 13/26/39/52 MHz),验证 set_freq 接口。
    3. set_area 栈缓冲区改为 XT_SOC_ALIGN 对齐。
  4. examples/platform_specific/lm620/lcd_st7789
    1. set_area 栈缓冲区改为 XT_SOC_ALIGN 对齐。
  5. examples/platform_specific/lm620/audio_dev
    1. 适配 xt_fs → xt_vfs 迁移:xt_fs_* 调用改为 xt_vfs_*,新增 xt_vfs_init(&cfg) + 挂载。
  6. examples/platform_specific/lm620/audio_test
    1. test_record_to_file.c / test_tts_to_file.c 适配 xt_fs → xt_vfs 迁移。
  7. examples/system/xtiny
    1. example_main.c 迁移到 xt_timer2/xt_event v2 API:定时器改用 xt_timer2_setup/start/handler,主循环改用返回值分支逻辑。
    2. xapp_timer1_cb 签名适配 xt_timer2_cb_t 类型。

v1.0.2 (2026-06-18)

不向后兼容的变更

  1. xt-cli 作为独立仓库。
    1. xt-cli 已迁移到独立 PyPI 包,安装方式变更。
    2. 旧安装方式 pip install tools/xt-cli 不再可用。
    3. **迁移指南**:
      pip uninstall xt-cli
      pip install xt-cli
    4. 新增 .xt-sdk-version 文件(V1.0.2),xt-cli 通过此文件识别 SDK 版本。
    5. xt-cli 的文档(产品定义、设计文档、hook 规范、开发流程等)已从 docs/tools/ 移除,完整文档见独立仓库。
  2. Hook 脚本导入方式变更。
    1. 旧方式:from xt_cli.models import BuildContext、from xt_cli.hooks import run_lifecycle_hook(子模块深路径导入)。
    2. 新方式:import xt_cli 后通过 xt_cli.BuildContext、xt_cli.run_lifecycle_hook 访问。
    3. 如果你的工程有自定义 hook 脚本(xt_hook.py),需要更新导入方式。
  3. xt_core 组件彻底重组,拆分为多个独立组件。
    1. components/xt_core/ 目录已完全移除,原内容分散到以下独立组件:
    2. #include "xtiny.h" 仍然有效,但其内部包含已变化:
    3. 旧头文件路径(如 #include "xt_error.h")在新组件下仍有效,因为 标准工具库 的 add_includedirs 设为 public。
  4. 构建系统:SDK 组件默认不编译,由平台显式启用。
    1. 所有 SDK 组件通过 target() 包装函数声明,默认 set_default(false)。
    2. 平台 xmake.lua 通过 add_deps(...) 显式启用所需组件。
    3. 用户工程中若直接依赖了某个组件,需要通过 add_deps 声明,否则该组件不会被编译。
  5. xt_fs 已过时,推荐迁移到 xt_vfs。
    1. platforms/components/xtiny/xt_fs/xt_fs.h 中所有 API 已标记 __attribute__((deprecated("Please use xt_vfs(虚拟文件系统) instead.")))。
    2. 新工程应使用 components/xt_vfs/ 提供的虚拟文件系统 API。
    3. xt_vfs 支持多后端挂载、两级锁、fd generation 防悬空等能力,API 与 xt_fs 不完全一致,需要适配。
  6. xt_event v2 升级——event_id 类型变更。
    1. xt_event_id_t 从 uint8_t(最多 256 个事件 ID)扩展为 uint32_t。
    2. xt_event_subscribe 等 API 返回值从 uint8_t 变更为 xt_err_t(int32_t)。

SDK 基础能力

  1. XT_SDK_ENV 初始化顺序调整。
    1. 环境变量初始化提前到语言/编译选项设置之前,方便平台 toolchains.lua 使用(c672852)。
  2. 平台预设 xmake 配置支持。
    1. 平台可通过 platforms/<target>/configs.lua 声明能力(如 has_cmsis_os2)。
    2. 新增 scripts/configs_to_macro.lua,自动将平台配置转为全局 C 宏(如 HAS_CMSIS_OS2=1)。
  3. 新增 .xt-sdk-version 标记文件。
    1. 根目录 .xt-sdk-version 记录当前 SDK 版本号,供 xt-cli 识别。

组件清单

  1. components/xt_socket
    1. 新增跨平台 socket 抽象组件,统一 Windows/Linux/lwip 的 socket API。
    2. 提供 xt_socket_setup() / xt_socket_cleanup() 平台初始化。
    3. xt_socket_read() / xt_socket_write() 内联封装,含 EINTR 重试。
    4. 消除 read / write 宏污染问题。
    5. 支持非阻塞模式设置、错误码查询、select 兼容宏。
  2. components/xt_vfs
    1. 新增虚拟文件系统组件,替代已过时的 xt_fs。
    2. 支持多后端同时挂载(如 /flash=LittleFS,/sd=FatFS,/ram=RAMFS)。
    3. 两级锁设计:全局锁保护元数据,每挂载点独立锁保护 I/O。
    4. fd generation 编码机制,防止 use-after-close。
    5. 编译期特性裁剪:线程安全、工作目录、目录操作均可选。
    6. 提供 35 个公开 API,覆盖文件操作、目录操作、路径管理、错误信息。
  3. components/xt_task
    1. 包含 xt_event(事件管理)(事件发布订阅)、xt_task(协程调度)、xt_timer(软件定时器)/xt_timer2(定时器)。
    2. **xt_event v2 核心升级**:
      1. event_id 从 uint8_t 扩展为 uint32_t。
      2. 去重匹配订阅:相同 (event_id, event_cb) 对去重,仅更新 user_data。
      3. dispatch 上下文栈:支持最多 5 层嵌套 dispatch。
      4. 队列快照机制:回调中 publish 的新事件在下次 handler 才处理。
      5. 跨帧 unsubscribe:嵌套 dispatch 中安全取消外帧事件订阅。
      6. OS 亲和性支持(XT_EVENT_OSAFFINITY_ENABLE)。
    3. **xt_timer v1 升级**:
      1. UID 保护:timer_id 编码 (uid << 8) | slot,防止 use-after-free。
      2. 三态状态机(IDLE/ARMED/FIRING),解决"回调中 restart"竞态。
      3. Magic 校验检测内存踩踏。
      4. xt_timer_stop 安全宏:stop 后自动将用户变量置为 XT_TIMER_INVALID_ID。
    4. **xt_timer2 全新对象化定时器**:
      1. new/delete 对象化 API,用户管理内存。
      2. 三阶段 handler:快照摘取 → 回调执行 → remain 计算。
      3. 自定义 tick 模式(xt_tick2_inc/set/get),方便单元测试。
      4. 内存池支持(XT_TIMER2_USE_POOL),预分配数组避免动态分配。
      5. FREE_MAGIC 防护,double-free 安全。
      6. 有符号差值回绕安全。
  4. components/xt_std
    1. 标准库组件,从原 xt_core 中独立。
    2. 包含:xt_error(错误码)(错误码)、xt_list(链表)(双向/单向链表)、xt_rb(环形缓冲区)、xt_crc(CRC 校验)(~20 种 CRC 算法)、xt_bit(位操作)(位操作)、xt_macro(通用宏)(工具宏)、xt_types(类型定义)(基础类型)、xt_utils(工具函数)。
  5. components/xt_sys_event
    1. 系统事件适配层,桥接 HAL 中断到 xt_event 系统。
    2. GPIO 中断通过 xt_event_publish(XT_GPIO_INT) 分发到用户回调。
    3. UART RX/TX 完成事件通过类似机制桥接。
  6. components/xt_unity
    1. 新增 port 层对接(xt_unity_port.h / xt_unity_port.c)。
    2. Unity 测试输出通过 xt_printf 重定向,支持整行缓冲刷新。
    3. 新增 add_deps("xt_core") 依赖。
  7. components/xt_board
    1. 新增音频 I2S Codec 板级配置。
    2. xt_board_e837n_v01.h:新增 10 个 I2S 引脚宏(MCLK/WS/SCK/DIN/DOUT 及对应 Pin Mux)。
    3. xt_board_simulator.h:新增对应占位宏。
  8. components/xt_fal
    1. 在目录重组中误删后恢复(e4cee00)。
    2. 更新依赖关系。
  9. platforms/components/xtiny
    1. 新增平台接口层,集中管理所有 xtiny 接口头文件。
    2. xtiny.h 重构为纯接口聚合头,不再包含实现组件。
    3. 新增 xt_platform_get_version() 接口声明。
    4. 各子模块头文件(xt_mem.h、xt_log.h、xt_ota.h、xt_mobile.h、xt_wifiscan.h 等)从原 xt_core 迁移至此。

xt-cli 独立化

  1. tools/xt-cli/ 目录完全移除,约 40 个文件、12000 行代码迁移到独立仓库。
  2. docs/tools/ 下 8 个 xt-cli 相关文档全部移除。
  3. Hook 脚本导入方式从深路径子模块导入改为顶层 import xt_cli。
  4. 修复独立仓库后 hook 加载失败的问题(1b64e84)。

支持的平台

  1. windows/simulator
    1. 目录结构重构为组件化:src/ + include/ → components/(每个组件独立目录,含 xmake.lua)。
    2. 组件包括:cmsis_os2、platform_entry、xt_fs、xt_hal(HAL 驱动总入口)(14 个 HAL 桩)、xt_log、xt_mem(内存管理)、xt_mobile(蜂窝网络)、xt_ota(OTA 升级)、xt_safe(安全功能)、xt_soc。
    3. 新增 configs.lua 声明 has_cmsis_os2 能力。
    4. xt_hook.py 适配独立仓库导入方式。
  2. linux/simulator
    1. 移除 xt_soc.h 的冗余 include。
    2. xt_ota.c 更新依赖。

示例清单

  1. examples/network/socket_multi_platform
    1. 新增多平台 socket 综合示例(15 个 demo),演示 xt_socket(跨平台 Socket) 组件的跨平台能力。
  2. tests/xt_event
    1. 测试用例大幅扩展(从基础测试扩展为 25+ 测试用例),覆盖 UID 保护、重入保护、嵌套 dispatch 等场景。
  3. tests/xt_event_and_timer
    1. 新增事件与定时器联合测试(xt_timer(软件定时器) v1 测试)。
  4. tests/xt_timer
    1. 新增定时器 v1 独立测试(18 测试用例)。
  5. tests/xt_timer2
    1. 新增定时器 v2 独立测试(自定义 tick 模式、内存池、回绕安全等)。
  6. tests/xt_fal
    1. 新增 Flash 抽象层测试。
  7. tests/xt_vfs
    1. 新增虚拟文件系统测试和 RAMFS 后端示例。
  8. examples/platform_specific/lm620/
    1. 音频示例重组:
      1. audio → audio_dev(音频设备层测试:codec 回环/播放/录制、DAC 播放)。
      2. 新增 audio_svc(音频服务层测试:文件播放、TTS 播放,含音频数据镜像文件)。
      3. 新增 audio_test(综合音频测试:监控、纯播、录制到文件、TTS 到文件等)。
    2. lcd-st7735 / lcd-st7789 示例简化,移除内联的 LCD 驱动文件(xt_lcd_st7735.c/.h、xt_lcd_st7789.c/.h、xt_config.h),改用组件化引用。
    3. 新增 xt_vfs(虚拟文件系统) 示例(lm620 平台 xt_vfs 使用示例)。
  9. examples/peripherals/
    1. 所有外设示例(adc、dac、gpio、i2c、pm、pwm、rtc、spi、uart)更新依赖,适配 标准工具库/xt_task 替代旧 xt_core。
  10. examples/network/
    1. socket、socket-nonblock、socket-reconnect、mobile、aliyun 示例更新依赖。
  11. examples/storage/fs
    1. 移除过时的 xt_fs 示例。
  12. examples/system/
    1. cmsis_os2、log、xtiny 示例更新依赖。
  13. examples/build_system/deps_demo
    1. 更新安装命令和依赖 hash。
    2. xt_deps.jsonc 版本约束更新。
  14. examples/build_system/hook_demo
    1. 更新 hook 脚本适配独立仓库导入方式。

v1.0.1 (2026-06-05)

不向后兼容的变更

  1. xtiny_core 合并到 xt_core。
    1. xtiny_core 不再作为 git submodule,所有代码直接放到 components/xt_core/ 下。
    2. 不再需要 git submodule update --init --recursive。
    3. .gitmodules 已移除。
    4. 头文件路径:#include "xtiny.h" 仍然有效(在 components/xt_core/ 根)。
  2. xt-cli 命令格式变更。
    1. 移除 --clean / --fullclean 参数,改为多 task 语法:xt clean build / xt fullclean build。
    2. run task 从 builtin 移除,改为平台 hook 实现(目前仅 Windows 平台支持 xt run)。
      1. 配置文件名: .xt_conf.jsonc 改为 xt_conf.jsonc (首次运行自动迁移)。
  3. xt-cli hook 签名统一为 5 参数。
    1. handle(ctx, global_args, shared_args, self_args, unknown_args)。
    2. 旧单参数签名不再兼容,hook 脚本需要更新。

SDK 基础能力

  1. 根 xmake.lua 默认编译模式设为 debug(set_defaultmode("debug"))。
  2. 构建后自动复制 compile_commands.json 到 SDK 根目录。
  3. 新增 XT_SDK_BOARD / XT_SDK_CONFIG_HEADER 全局宏注入。

组件清单

  1. components/xt_board
    1. 新增板级抽象组件,提供统一的板级配置接口(xt_board.h)。
    2. 支持多板定义:e68_v01、e837n_v01、simulator。
    3. 编译时必须指定 --board 参数或设置 XT_SDK_BOARD 环境变量。
  2. components/xt_unity
    1. 集成 Unity v2.6.1 测试框架(MIT License)。
    2. 提供 unity.c / unity.h / unity_internals.h。
  3. components/xt_core 内部扩展。
    1. components/audio/ —— 音频子系统:设备抽象层(xt_audio_dev.h)、驱动对接(xt_audio_dev_drv.h)、服务层(xt_audio_svc.h)、TTS(xt_audio_tts.h)、仲裁器(xt_arb.h)。
    2. components/cmsis_rtos2/ —— CMSIS RTOS2 兼容层。
    3. components/utils/ —— 工具集:CRC、环形缓冲区、位操作、链表等。
    4. core/ —— 核心模块:事件(xt_event(事件管理))、任务(xt_task)、定时器(xt_timer(软件定时器))、错误码(xt_error(错误码))。
    5. hal/ —— HAL 接口扩展:ADC、DAC、I2C、I2S、PWM、RTC、SPI、SPI LCD、UART、WDT、GPIO、Pin Mux、PM、Timer 等。
    6. 新增 Flash 抽象层(xt_fal(Flash 抽象层))、文件系统(xt_fs)、OTA(xt_ota(OTA 升级))、安全(xt_safe(安全功能))、移动网络(xt_mobile(蜂窝网络))、Wi-Fi 扫描(xt_wifiscan(Wi-Fi 扫描))等接口头文件。

xt-cli (v1.2.0)

  1. Parser 架构重写。
    1. 移除 argparse subparsers,统一 parser 支持多 task 并行和参数任意位置。
    2. 分段解析:先预解析全局 option,再按 task 段解析。
    3. --help 按作用域分类显示,标注 [builtin] / [platform/<name>] / [project]。
  2. Option 作用域系统。
    1. 7 种层级:全局 > builtin > platform > project shared > task 自身。
    2. shared_args 独立 parser 预解析,传递给所有 task。
  3. 新增 task:fullclean(直接删除 .xmake 和 .build 目录)、deps(依赖管理)。
  4. 工程版本追踪管理系统。
    1. xt build 自动生成/更新 xt_vers.jsonc(已加入 .gitignore)。
    2. xt_deps.jsonc 声明版本约束,支持 >= / <= / > / < / == / != 和 semver。
    3. 新增全局 option:--dirty、--no-track、--strict、--sync-deps。
    4. xt deps --hash <path> 计算 SHA-256;xt deps --update-deps-require 更新依赖版本。
  5. xt config 无参数展示所有配置;支持 --board 全局/持久化。

支持的平台

  1. windows/simulator —— 新增 6 个 HAL 桩实现(DAC、I2C、Pin Mux、PWM、RTC、SPI)。

示例清单

  1. examples/build_system/deps_demo —— 依赖管理演示,含单元测试。
  2. tests/xt_event —— xt_event 模块单元测试。
  3. examples/platform_specific/lm620/amr —— AMR 编解码示例。
  4. examples/platform_specific/lm620/audio-dev —— 音频设备综合示例(仲裁、TTS、文件播放)。
  5. lm620 示例重组:test-* → 正式名称(audio、cmd、mqtt、ota、wifiscan 等),源码从 src/ 提升到示例根目录。
  6. 示例目录新增分类:examples/peripherals/(9 个外设)、examples/network/(socket 等)、examples/storage/(fs)。

v1.0.0 (2026-04-24)

SDK 基础能力

  1. 统一提供 SDK 构建入口。
    1. 使用根目录 xmake.lua 作为统一入口。
    2. 通过 XT_SDK_ROOT、XT_SDK_TARGET_PATH、XT_SDK_TOOLCHAIN、XT_SDK_PROJECT_PATH 组织构建上下文。
    3. 构建产物默认输出到工程目录自己的 .build/<platform>_<target> 目录。
  2. 提供组件化的公共能力。
    1. 应用工程、平台适配层、公共组件按目录解耦。
    2. 组件通过 add_deps(...) 建立依赖关系。
    3. 用户工程与 SDK 组件可以通过同名组件优先级机制协同工作。

支持的平台与目标

  1. windows/simulator
  2. linux/simulator
  3. lm620/r4f4

版本信息能力

  1. 提供 xt_sdk_version(SDK 版本号) 组件。
    1. XT_SDK_VERSION 提供字符串版本号。
    2. XT_SDK_VERSION_NUM 提供数字版本号。
    3. 提供 XT_SDK_PLATFORM、XT_SDK_TARGET 及对应枚举宏。
    4. 提供 XT_SDK_GIT_VERSION、XT_SDK_IS_DIRTY、XT_SDK_PLATFORM_GIT_VERSION、XT_SDK_PLATFORM_IS_DIRTY、XT_SDK_IS_TAGGED。
  2. 当前 SDK 版本以 components/xt_sdk_version/xt_sdk_version.h 中的版本定义为准。
  3. 版本信息支持三级优先:描述文件 > git > 默认值。

组件清单

  1. components/a
    1. 最小组件示例。
    2. 用于演示 SDK 组件的基本声明方式与依赖组织方式。
  2. components/cJSON
    1. 第三方 JSON 组件封装。
    2. 用于为 SDK 或应用工程提供 JSON 解析与生成能力。
  3. components/xt_core
    1. SDK 核心公共组件。
    2. 提供 xtiny_core 相关基础能力,例如任务、事件、定时器、通用工具和 hal_event 适配层。
    3. 是大多数应用工程和平台适配层依赖的核心基础组件。
  4. components/xt_sdk_version
    1. SDK 版本信息组件。
    2. 提供字符串版本号、数字版本号、平台/target 宏以及 git / dirty / tagged 相关宏。
    3. 供需要读取 SDK 构建期版本信息的组件或应用工程依赖使用。

示例清单

  1. examples/get_started
    1. 入门示例目录。
    2. 用于提供最小可运行示例,帮助快速理解 SDK 的基本使用方式。
  2. examples/build_system
    1. 构建系统示例目录。
    2. 用于演示应用工程、组件依赖、版本信息输出等构建相关能力。
  3. examples/system
    1. 系统能力示例目录。
    2. 用于演示 RTOS / CMSIS / 系统接口等系统级能力。
  4. examples/platform_specific
    1. 平台专项示例目录。
    2. 提供各平台外设与功能示例(ADC、Audio、GPIO、I2C、SPI、UART、LCD、FS、MQTT、OTA、Socket 等)。
    3. 当前包含 lm620 平台示例。

xt-cli

  1. 仓库内置 tools/xt-cli,用于简化 SDK 配置、编译、清理和运行流程。
  2. 支持 build / clean / fullclean 内置命令,以及通过 hook 扩展的自定义 task。
  3. 支持 option 作用域:全局 > builtin/platform/project shared > task 自身,共 7 种层级。
  4. Hook 按优先级加载:工程 > 平台 > 内置。
  5. 支持 before / after 生命周期 hook,用于在构建、清理、运行前后插入自定义逻辑。
  6. xt-cli 现作为独立仓库维护,独立发布记录见其自身 RELEASE。