迁移旧配置与接口访问¶
本指南将旧 HAL/OSAL/Kconfig 消费者迁移到当前 Source SDK 代际。迁移期间固定源码 revision。平台保留 typed factory 与 C 多态接口,改变实例生成和所有权,不以运行时服务注册表替代接口。兼容合同拥有版本与接口 epoch 行为。
旧模式 |
当前迁移动作 |
|---|---|
用 Kconfig 或 cache 宏选择实例 |
编写一份完整 schema-2 TOML 装配 |
查找期间以宏构造对象 |
使用生成静态对象;factory 查找仅返回身份 |
产品持有 HAL/OSAL 实现指针 |
包含公共 Nexus API 和生成的 |
以首个 SPI/I2C child 充当 bus |
通过各自 typed getter 分别取得 controller 和 endpoint |
全局最大池或默认任务 |
明确提供所选 buffer、slot 和应用 worker |
Cancel/timeout 后立即复用 |
保持借用到 acquire 观察 SETTLED 并排空 observer |
平台拥有产品分区或策略 |
将 reservation、role 和 recovery 移入外部产品 |
迁移一份完整装配¶
检查以下维护中的 Native 装配;它是完整输入,不是片段:
schema = 2
board = "native_reference"
backend = "native"
clock = "model"
optimization = "Os"
[memory]
main_stack_bytes = 2048
flash_load_limit_bytes = 65536
static_ram_limit_bytes = 32768
libc_heap_bytes = 0
[uart.uart0]
binding = "uart0"
mode = "irq"
baud = 115200
[uart.uart0.rx]
format = "bytes"
capacity = 32
[uart.uart0.irq]
priority = 5
从仓库根执行实际 parser 与生成路径:
python tools/configure/configure.py check --assembly tools/configure/assemblies/native-uart.toml
python tools/configure/configure.py generate --assembly tools/configure/assemblies/native-uart.toml --output /tmp/nexus-migration-config
使用自己拥有的新输出路径。检查 resolved.json 和生成 header;不得 author resolved 输出,失败后不得复用过期生成文件。旧 schema-1 JSON 仅用于明确的迁移夹具。TOML 失败不回退 JSON、Kconfig、旧 header 或 cache 值。
同时迁移访问与生命周期¶
使用当前装配的紧凑 typed ID,并检查 getter NULL 结果。Getter 名称和 ID 常量来自 authored 实例名;ID 不是持久身份或二进制 ABI。可选 nominal strong ID 与 capability record 必须明确配置。通过 nx_platform_start() 启动硬件,同时检查 primary 和 cleanup 结果。成功启动后,日常 I/O 直接使用返回 face。
依据实际模式转换同步与异步调用。对于 accepted request,同时迁移存储生命周期、service/wait 进度、取消、结束与停机。异步教程执行这些失败路径;只替换函数名不足以完成迁移。
构建独立搬移的 SDK 消费者,再用锁定编译器链接精确 MCU 配置。保留迁移 source/configuration 的证据。旧 HAL/OSAL 文档保持历史身份;redirect 不使旧 API 合同等同于新合同。