映射存储、AMP、镜像交接、RTC 与帧边界

本页说明五项有界软件增量及其装配和所有权合同,帮助接入者选择精确机制并在失败时保留存储。这些实现没有完成 IO-32/37–42 或 SOC-33–35 的原始退出条件。物理 HIL 仍为 not_executed;软件开发结果不建立 clean 软件候选资格。

选择与源码身份

增量

公共装配

当前软件范围

映射所有权

Nexus::MappedStorage;仅 Native 的 Nexus::NativeMappedStorage

调用方读槽与单个写入者;一致性 Native NOR 字节模型

AMP epoch/cache 核心

Nexus::AMPIPC

显式单向 lane、调用方共享记录与硬件端口

运行镜像尾跳交接

Nexus::STM32F407Handoff

仅精确 STM32F407VET6/ZGT6 裸机 Platform

保留 RTC AlarmA

普通 U575 Platform/factory;u575-rtc-run.toml

TZEN=0、MSIS4、裸机、预先准备的保留 LSE 日历、RUN 轮询

帧布局与 DMA2D

Nexus::IO;可选 Nexus::H743FrameDMA2D

公共帧合同;精确 H743 V、D-Cache 关闭,在 AXI SRAM 中执行 RGB565 复制或固定 ARGB8888 到 RGB565 PFC

可选组件目标通过 nexus_add_firmware(... LIBRARIES ...) 显式链接,不创建 factory 条目或发现硬件。RTC 使用已维护装配和 nx_factory_rtc(NX_RTC_ID_CALENDAR)。其无引脚软件参考 Board 的 PCB 身份未知,不建立 LSE 晶振路线。DMA2D 的公共 consumer 是显式组件夹具,没有 TOML/factory 路由。

所有权与推进

FIG-23:当前软件所有权;每条标注箭头表示调用、提供存储或证明,所选机制彼此独立

FIG-23 是当前软件架构图。外部 owner 提供存储、串行执行各 executor、推进 service 并 join 用户。虚线边表示必需的外部端口或证明。任何箭头都不表示自动登记、隐藏 worker 或一个机制调用另一个机制。源码依据为下文链接的公共头文件及实现;本图不建立硬件执行结果。

已接受的异步请求借用其元数据和缓冲区,直到调用方以 acquire 观察 SETTLED。拒绝接纳不保留新借用或残留硬件效果。取消与 deadline 请求撤源;调用方必须继续必需的 service。排空失败保留 QUARANTINED 存储和恢复责任。provider 在最后一次 release 发布前撤回真实引用。consumer、control 和 observer 也必须 join,才能复用其自身存储。见共享生命周期合同。

映射所有权与一致性 Native NOR

公共 face和 owner使用精确实例/槽/epoch 借用。复制 token 不产生新借用;epoch 不回绕。有效且受支持的 CPU/XIP/DMA-read 借用排斥整个 aperture 的所有 PROGRAM/ERASE 写入。全部命令、cache 和 DMA 写入都必须经过唯一 backend。consumer 在 release 前 join;最后一次 unmap 失败会保留精确借用并阻止写入。stop 永久关闭接纳,并等待全部映射和写入者,不撤销借用。

写入接纳在产生效果前检查几何、对齐、溢出,以及与 owner、槽、backend context 和 aperture 的别名。已接受的 PROGRAM 保留输入直到结束;部分效果保持可见且绝不重放。backend 恢复后,继续 service 可以重试失败的排空。Native backend保留调用方字节,只允许 1-to-0 编程,擦除为 0xff,每次 service 最多修改配置的字节 quantum。它仅接受一致性 CPU 读。物理 QUADSPI/串行存储、SDMMC、XIP/cache/DMA 资格和资源 factory 装配仍未完成。

AMP epoch/cache lane

AMP API与调用方存储构造器使用独立 offer 和 ACK cache line、精确 peer/local boot epoch 及不回绕的槽序号。每个 lane 角色由一个串行化特权 Thread 执行。调用方提供存储、一致性 acquire/release control 访问、cache clean/invalidate 和唯一硬件角色 claim。配置的 cache granule 为 1..64 B 的二次幂且整除 64 B。claim 端口拒绝复用或不递增的 local boot epoch,包括正常 join 之后。权威非零 boot-epoch 历史必须跨 CPU/整机复位保留,并在耗尽时关闭接纳。

已接受的 send 保留 payload,直到 acquire 观察到精确 epoch 对/序号 ACK,或显式证明旧 peer 的 CPU、DMA、IRQ 和 observer 在该执行 epoch 下永远无法再次访问精确 lane/payload。超时已过绝不 release 借用;观察到 peer epoch 改变会使 lane fault 并关闭。恢复旧共享字不能重新打开 lane。receive 在生成只读 view 前 invalidate 描述符和 payload。调用方在 finish 前 join 读者;有效 finish 即使在 ACK cache clean 或 epoch 校验失败时也会消费该 view,而本地状态继续保留以供重试或恢复。close 阻止接纳;join 等待 ACK 和已完成 view;reset_join 还要求精确 peer-stop 证明。没有 cancel 或阻塞 wait API。精确多核目标、cache 属性、原子性和资源划分尚未选择;单核 H743 不是 AMP 目标。

F407 屏蔽中断尾跳与时钟 barrier

交接组件复用既有 ClockDomain barrier。初始化一次,显式登记每个 owner,关闭接纳,cancel/drain/join 全部用户,停止实际 Platform,再 release 精确 lease。空的外来 domain、过期 epoch 或保留 lease 均拒绝。domain 不能发现未登记用户或其他 bus master。

调用方从特权 MSP Thread 进入,要求 PRIMASK=1、BASEPRI=FAULTMASK=0 和 CONTROL=0。调用方必须建立 System 已停止、HSI16/复位总线、无活动 FP/lazy context 或 MPU、无 enabled/pending/active SysTick/NVIC 源、无活动外设/DMA gate 且 Flash 空闲,ACR=0(ART/prefetch 禁用)。拒绝保持中断屏蔽并且不写 MMIO;读取 SysTick CTRL 会消费 COUNTFLAG。98 项 Flash 向量表按 512 B 对齐,并完整位于精确生成/观测的 512 KiB 或 1 MiB 容量内。MSP 在 (0x20000000,0x20020000] 中按 8 B 对齐;Thumb PC 的首个半字位于物理 Flash。共享器件 ID 0x413 不能建立精确型号/PCB 身份。调用方在整个交接期间排除 NMI/HardFault、调试器和其他 master。

尾跳成功后不返回:它设置 VTOR,经 barrier 禁用 CP10/11,清零 CONTROL/PSP,替换 MSP,并在屏蔽状态分支。主 SRAM 保留到目标启动。目标接受屏蔽入口,并在启用 gate 前复位控制器;源 deadline 均失效。镜像选择、认证、分区和恢复仍属外部。活动 RTOS/FPU 接管、H743/cache 交接、DVFS 和 deep-STOP 连续性仍未完成。

U575 RUN 中保留 LSE 日历

RTC provider要求外部 boot owner 保留有效 24 小时 BCD 日历、BYPSHAD、127/255 预分频、实际 LSE 32768 Hz、RTCSEL=LSE、RTCEN、LSERDY、RTCAPBEN、PWREN 和 DBP。校准、shift、binary 模式、其他 RTC owner 和活动 RTC vector 均拒绝。Boot 以 locked WPR 交接;调用间 WPR 保持 locked,且无其他 writer。已接受的 service 以 CA/53 短暂解锁 WPR,检查受保护写入,并无条件以 FF 重新锁定。provider 不写日历、RCC、PWR 或 TAMP,不启用 IRQ,也不修复/复位 backup domain。年份 00 来源仍属外部;INITS 无法证明它。set 返回 UNSUPPORTED。

ES0499 Rev12 第2.2.3和2.2.16节记录了 revision X 在 LSE 驱动代码 00/01 下可能停止振荡的限制;表3将 W/U 标为已修复。本参考不限定硅修订版,因此晶体模式配置要求 LSEBYP=0,并对所有修订版保守地仅准入 LSEDRV=10/11,绝不写入这两个字段。第2.2.1节另要求外部 boot 与 Board owner 在该 LQFP 器件使用晶体 LSE 时排除 PC13 跳变。LSE 旁路不受第2.2.1节影响,并且不属于此选定配置。GPIO 读取不能证明这一电气条件,本软件参考也不声明 PCB 走线或振荡器实测行为。

读取最多尝试八对一致性 SSR/TR/DR,数据无效或不稳定时保持输出不变。年份 99 自然翻转到 00 保持 domain;成功重开提升不回绕的 64 位 domain。AlarmA 借用一个请求。Core 单调 deadline 独立于日历时间。每次调用推进一个 service 阶段:禁用 ALRAE 并读回,以 100 µs Core 时间保护跨时钟传播,清除并观察 ALRAF,然后恢复保存的 alarm 寄存器并读回,最后撤引用并结束。禁用/清除/恢复失败保留隔离。外来时钟/配置漂移永久保留责任,要求外部恢复。本模式不提供 Stop2、LPDMA、VBAT 连续性或唤醒资格。

完整帧与固定 H743 DMA2D 格式

帧合同将经过复制和检查的布局绑定到既有 nx_stream 池。音频布局保留完整存储槽,包括非活动 SAI 槽;PDM 使用字节交织 lane 和完整八帧组。平面布局接受最多四个互不重叠且经过检查的 stride 区间。这些是数据合同,不是 SAI/DCMI provider。发布要求完整帧字节。空 acquire 提升饱和 underrun 计数,不选择静音/重复策略。DMA-view release 要求实际 engine、IRQ 和外设撤引用事实,以及精确 control 身份/epoch。

DMA2D 组件 使用调用方拥有的单个执行者,不设队列。它仅接纳精确 H743 V ID 0x20030450、D-Cache 关闭且独占冷态 DMA2D 的情况。两种请求格式为 RGB565 复制(枚举零值)和固定 ARGB8888 到 RGB565 像素格式转换(PFC)。未知格式会被拒绝;CLUT、混合、其他格式和 IRQ 操作仍不受支持。两个表面都必须位于 AXI SRAM [0x24000000,0x24080000)。这不推断任何 Board 连接或物理结果。

x 和 width_bytes 始终以源字节计数。RGB565 的源地址、x、宽度和步幅按两字节对齐,ARGB8888 则按四字节对齐。在此小端 MCU 上,ARGB8888 输入按 B、G、R、A 字节存储;RGB565 丢弃 alpha,不交换通道或字节。输出地址和步幅按两字节对齐;输出行字节数为 width_bytes / source_pixel_bytes * 2。目标步幅和容量仍以字节计。LOM=0 时,前景与输出偏移分别按各自格式的像素计数:PFC 的源填充除以四,复制的源填充除以二,输出填充除以二。每侧像素间隙最多为 0x3fff;尽管寄存器字段为 16 位,像素模式仍忽略位 15:14(RM0433 Rev9 第 18.5.5 和 18.5.20 节)。宽度最多为 0x3fff 像素,高度最多为 0xffff 行。成功请求报告输出字节数,不含步幅填充。接纳前检查算术、AXI 区间与硬件界限。

目标写入区间及每个所有权控制体都必须与源池每个槽的完整容量互不重叠,包括帧尾部与其他空闲槽。接纳以 O(n) 扫描有界池,每槽比较七个固定控制体。接纳借用请求、精确的有效源帧借用及输出;选中的源槽直到最终访问结束都保持不可变。拒绝时,原源借用仍归调用方。提交返回 SUCCESS 表示 ACCEPTED,包括随后发生设置/读回失败的情况;这种失败保留全部借用,直到 service 证明排空。最先观察到的失败在取消及可恢复 cache/IRQ 守卫恢复后仍被锁存。

成功完成要求 TC 和 START 清零。取消/错误排空要求 START/CLUT/IRQ 撤离,不要求 TC。写 START 和 ABORT 时保留所选模式。START 是可读置位位:写零无效。ABORT 请求硬件撤离,不重新置位已清除的 START。提供者只有在硬件证明成立并清除 FGMAR/OMAR/NLR 后才释放借用。证明失败会将全部借用保留在隔离状态;继续 service 可在实际排空后恢复。若活动 owner 观察到其必需 RCC 时钟门关闭或 DMA2D 复位被置位,传输历史即不确定,隔离将永久保持:把寄存器恢复为零不能撤销借用,service、stop 或重新初始化都不能回收它。未被观察到的复位脉冲无法检测;独占时钟门/复位所有权仍是强制前提。系统级恢复由外部负责。Stop 关闭接纳,对活动工作返回 BUSY;只有全部借用结算后才复位控制器并撤回其拥有的时钟门。这些软件与 ELF 检查不建立 PFC 吞吐量、延迟或 HIL 结果。

验证与剩余退出条件

已维护回归为映射存储、AMP、交接、RTC、帧布局和 DMA2D。它们检查软件合同和外部硬件模型,不建立电气、保留供电、多核或工位行为。精确执行和冻结源码身份由紧凑开发证据与交付记录维护。原始 I/O 与 SoC 台账保留完整退出条件和权威状态。本页不缩小任何退出条件。