迁移旧配置与接口访问

本指南将旧 HAL/OSAL/Kconfig 消费者迁移到当前 Source SDK 代际。迁移期间固定源码版本。平台保留类型化工厂与 C 多态接口,改变实例生成和所有权,不以运行时服务注册表替代接口。兼容合同拥有版本与接口 epoch 行为。

先取得固定源码与递归依赖;验证新消费工程时,将旧消费工程保留在自己的 checkout 中。

旧模式

当前迁移动作

用 Kconfig 或缓存宏选择实例

编写一份完整 schema-2 TOML 装配

查找期间以宏构造对象

使用生成静态对象;factory 查找仅返回身份

产品持有 HAL/OSAL 实现指针

包含公共 Nexus API 和生成的 nexus_factory.h

以首个 SPI/I2C 子端点充当总线

通过各自类型化获取函数分别取得控制器和端点

全局最大池或默认任务

明确提供所选缓冲区、槽和应用执行任务

Cancel/超时后立即复用

保持借用到 acquire 观察 SETTLED 并排空观察者

平台拥有产品分区或策略

将预留、角色和恢复移入外部产品

迁移一份完整装配

检查以下维护中的 Native 装配;它是完整输入,不是片段:

当前 schema-2 Native UART 输入。
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 和生成头文件;不要手写解析结果,也不要在失败后复用陈旧生成文件。旧 schema-1 JSON 已不再是平台输入,必须迁为完整 schema-2 TOML assembly;生成的 resolved.json 只作审计输出。TOML 失败不会回退到 JSON、Kconfig、旧头文件或 cache 值。冻结历史证据仍可按原格式校验;只读保留不重新开放旧配置或生成路径。

同时迁移访问与生命周期

使用当前装配的紧凑 typed ID,并检查获取函数 NULL 结果。获取函数名称和 ID 常量来自人工编写的实例名;ID 不是持久身份或二进制 ABI。可选名义强类型 ID 与 capability 记录必须明确配置。通过 nx_platform_start() 启动硬件,同时检查 primary 和 cleanup 结果。成功启动后,日常 I/O 直接使用返回接口面。

依据实际模式转换同步与异步调用。对于已接受的请求,同时迁移存储生命周期、service/wait 进度、取消、结束与停机。异步教程执行这些失败路径;只替换函数名不足以完成迁移。

构建独立搬移的 SDK 消费者,再用锁定编译器链接精确 MCU 配置。保留迁移源码/配置的证据。旧 HAL/OSAL 文档保持历史身份;redirect 不使旧 API 合同等同于新合同。

更新私有源码接入

SoC/IP 源码重组保持公共 C include 路径、CMake target 名称、装配中的家族标识与 TOML 选择。普通公共接口消费者按所选源码版本重新构建。私有 provider、源码审计器或自定义 SDK 打包的维护者须更新下列内部路径;旧生产家族包不是兼容入口。

原私有源码

当前归属

tools/configure/providers/native/ 生产模块

soc/native/configure/

tools/configure/providers/<stm32-family>/ 生产模块

soc/stm32/<family>/configure/

tools/configure/providers/<gd32-family>/ 生产模块

soc/gd32/<family>/configure/

provider 包内的家族配置测试

既有工具测试执行域中的 tools/configure/tests/providers/<family>/

soc/common/uart_v1_channel_dma.*

drivers/uart/uart_v1_channel_dma/

soc/common/i2c_v1_async.* 与 soc/common/i2c_v2.*

drivers/i2c/i2c_v1_async/ 与 drivers/i2c/i2c_v2/

soc/common/legacy_adc.c, legacy_pwm.c, legacy_flash.c

drivers/adc/legacy_adc/, drivers/timer/legacy_pwm/, drivers/flash/legacy_flash/

soc/common/legacy_devices.h

拆成三个对应的私有 driver 头文件;只 include 所需合同

soc/common/stm32_identity.h

soc/stm32/common/stm32_identity.h

显式 provider map、descriptor 与共享叶子合同保留在 tools/configure/providers/;通用解析、typed IR 与原子 bundle 处理保留在 tools/configure/。soc/common/uart_control.h 仍是跨厂家 SoC 协作合同。不得根据家族名称前缀推断模块或源码路径:使用维护中的 descriptor 与显式 CMake target。

私有扩展应一起更新 import、私有 include、声明的配置输入、源码观察覆盖和 SDK 必需 payload。解析同一精确装配并比较有效决策,再执行其真实 provider 合同与搬移 consumer。路径迁移不建立新支持模式、硬件行为或物理资格。provider 指南维护新接入与生命周期工作;48 项台账分别记录本次重构的实现与执行。