AURIX TC3xx UCB浅析 一、什么是UCBUCBUser Configuration Block用户配置块。是 TC3xx 上电复位后、 CPU 执行任何代码之前 由 PMS电源管理系统硬件状态机 通过 DMU 从 Flash 专用区域0xAF400000读取的芯片级配置区该行的 Read Access 表示 UCB 区域可被总线直接读Write SRIBE 表示任何总线写访问返回 SRI Bus Error。即UCB 不能通过普通 store 指令写入编程只能走 DMU 命令序列Erase Logical Sector Range / Write Page / Write Burst。这是 UCB 与普通 DFLASH 数据区在访问方式上的第一个差异。二、为什么要配置UCB2.1 UCB 承载三类配置① 启动类从哪里启动、以什么模式启动UCB_BMHD0–3、UCB_SWAP由 SSW 解析② 保护与安全类Flash 读写保护、调试口锁定、OTP、HSM 隔离UCB_PFLASH/DFLASH/DBG/OTP/ECPRIO/HSM/HSMCOTP由硬件在 CPU 复位释放前装入 DMU 寄存器先于一切软件生效③ 厂商与设备个体数据UCB_SSWLBIST 参数、UCB_USER、UCB_TEST、UCB_HSMCFGInfineon 生产写入客户只读。三、谁读 UCB、何时读、经什么路径3 读取路径与时序UCB 的读取分两层发生在两个时刻由两个执行者完成。3.1 硬件层PMS/DMUCPU0 复位释放之前冷/暖复位后、CPU0 保持复位期间PMS 硬件状态机经 DMU 内部路径不经 SRI 总线读取 DF0 的 UCB 区域完成两件事1读每个 UCB 尾部的 confirmation code(UCB_BMHD字段offset 0x01F0)将判定结果压缩为 2 bit 写入 DMU_HF_CONFIRM0/1 对应字段编码00B UNREAD / 01B UNLOCKED / 10B CONFIRMED / 11B ERRORED字段类型 rh软件只读2将保护类 UCB 的有效数据字段装入 DMU 配置寄存器①读每个 UCB 尾部的 confirmation code将判定结果压缩为 2 bit 写入 DMU_HF_CONFIRM0/1 对应字段编码00B UNREAD / 01B UNLOCKED / 10B CONFIRMED / 11B ERRORED字段类型 rh软件只读②将保护类 UCB 的有效数据字段装入 DMU 配置寄存器装载完成后保护即生效若 UCB_DBG 使 DBGIFLCK1CPU 执行第一条用户可见指令前调试口已锁。3.2 固件层SSWCPU0 复位释放之后CPU0 复位释放PC BootROM 内 SSW 入口BootROM 物理位于 DMU 内。SSW 做两类读读 DMU_HF_CONFIRM0/1——不读 Flash——取得硬件已登记的各 UCB 状态对启动类 UCB 直接按地址读块内容BMHD0–3先按 Table 196 用状态字段决定评估 ORIG 还是 COPY再校验 BMHDIDB359H、BMI 合法性、STAD 地址、CRC32 双向比对、UCB_SWAPbank 切换LBIST 配置读自 UCB_SSW。3.3 边界状态判定是硬件的结论SSW 只消费保护类 UCB 内容不经过 SSW。因此 UCB 错误在两个不同时刻暴露硬件装载类表现为复位释放前的 PROER/ORIER 与 bus error启动类表现为 SSW 启动终止Errata BROM_TC.H014PC 停在 BootROM 错误循环。四、结尾这里描述的UCB相关内容并没有结合到具体的实例进行只有一个整个行为流程关于UCB的描述官方手册分为两个部分6.5.4.3.2主要讲了UCB的行为规则回答这对块的状态如何被硬件装入寄存器、SSW 如何据此决策、什么条件下能被读/写/擦。6.8.2.2 主要讲了UCB的数据格式回答这 512 字节里每个字段放哪、叫什么、出厂是什么值。在具体的实现当中还需结合到具体的UCB字段翻阅芯片手册。