ThreadX 配置与接入¶
ThreadX 增加真实内核后端,同时保留静态 factory、不可变器件接口面和可移植等待合同。它选择官方 Eclipse ThreadX GNU kernel port,不是重命名 FreeRTOS 或替换成主机调度模型。后端合同定义调用方存储、bootstrap 证明、deadline、close/join 与不支持机制。
唯一作者装配选择 backend = "threadx"。CPU/IRQ 事实仍归 SoC。tools/configure/threadx.py 将内核特定 policy 校验为独立不可变 ThreadXKernelProfileIR,不虚构 FreeRTOS idle stack、notification-slot、MPU、TrustZone 或 tickless 能力字段。CMake 持有源码图和精确依赖;类型化 IR 提供事实与策略,不建立另一源码图。
维护的选择范围¶
首批平台绑定接纳真实 Board 身份:
Board 身份 |
SoC 系列 |
Port |
|---|---|---|
|
Native |
Linux GNU |
|
STM32F407 |
Cortex-M4 GNU |
|
STM32F407 |
Cortex-M4 GNU |
|
GD32F470 |
Cortex-M4 GNU |
目录名不是 Board 身份,未知 Board/SoC 组合拒绝。纯 CPU runtime 可选择显式 Native 或 Cortex-M4/M4F 事实,但不建立 SoC、板级路由或物理资格。此 ThreadX 后端仍拒绝 Cortex-M0/M0+/M3/M7/M23/M33/M55/M85,其独立 Arch/FreeRTOS 支持不受影响。
Linux 源码与证据¶
构建派生 Linux timer overlay 绑定唯一精确已审 upstream SHA 并保留原 MIT 声明。GNU sem_clockwait 须通过真实编译/链接能力探针。Timer 在时钟观察与等待均使用 CLOCK_MONOTONIC,并规范化精确一十亿纳秒进位。未知源或输出拒绝,不回退 realtime 等待。原厂商 checkout 不变。
开发证据区分真实官方内核内 25 个 GoogleTest case、mock 外部 CPU/IRQ/libc 的生产机制测试、Python 配置测试及真实 ARM 对象大小探针。原开发记录未保留在原仓库路径;现存接入后续记录含自身真实源码快照和原始执行,不证明最终 clean source、SDK 消费或 HIL,也不替代缺失原始字节。后续 PRIMASK/配置记录保留自身原始字节及命令;实现演进不重写原 RED/GREEN。后续记录含 50 个 fresh case:30 真实 kernel service、6 真实 bootstrap、14 mock 外部边界的生产机制,并记录三板两 policy 共六个链接、一个精确缺 Tick 拒绝及三个纯 CPU integer/softfp 链接。这些是开发结果,不是物理执行。
FreeRTOS timebase 低功耗选择器¶
FreeRTOS 保持既有 profile。新增 lowpower_port 默认 custom,保留显式产品 port/weak-null 行为。选择 timebase 要求 tickless SysTick、特权 single-world 和已审 STM32F407/GD32F470 timer,不授权深睡。纯 CPU runtime/emission 因 CPU 事实不提供 SoC timer/alarm 合同而拒绝此选择。该字段绝不选择 ThreadX 睡眠机制。真实 timer 实现测试、物理唤醒延迟/功耗/clock 行为分别建立资格。
可重复软件门禁¶
python scripts/ci/os_threadx.py --compiler arm-none-eabi-gcc --output <fresh-dir> 对三块维护 Board 的 BASEPRI 与 PRIMASK 执行生产平台图。各 ELF 保留真实 task、queue、close、notification、join、timer、scheduling 入口;两个官方 PendSV alias 必须解析为同一 strong 指令入口。每个官方 common/M4 源须有真实编译对象及相同数值 C/ASM policy。门禁保留精确 ELF/BIN/map、资源报告、作者/解析配置、编译数据库、命令结果及执行前后源码身份。
第七个构建必须明确在 ELF 链接因缺少 strong external-Tick provider 失败。无关编译失败、已有 ELF、weak/缺失保留入口、host/dynamic 符号、旧输出和源码变更均不合格。本门禁没有命令烧录或执行 MCU。兼容策略中 configured_backends 仅列可选择名称,真实解析器仍拒绝不支持 CPU/Board 组合。