Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

外设建模矩阵

WS63.svd 的全部 35 个外设均已建模(无裸 catch-all 黑洞)。本表逐个列出建模状态。地址见 内存映射,机器组件见 机器模型,配置类为何是影子见文末。

外设状态说明
CPU (rv32imfc) / 内存 / 复位 / ELF 载入✅ 真实命名 CPU -cpu ws63(默认型号):I/M/F/C + Zicsr/Zcf,关 A/D、无 MMU,禁用 Zcb/Zcmp(让位 xlinx 压缩编码);见 target/riscv 补丁
xlinx 自定义 ISA✅ 真实HiSilicon riscv31 私有指令(l.li/*shf/b*i/muliadd/jal16/ldmia/push-pop/压缩 lbu-sb…),厂商 gcc 固件必需;见 xlinx ISA
UART0/1/2✅ 真实自定义 HiSilicon 寄存器;TX→chardev,RX←chardev(中断使能时触发 IRQ 53/54/55)
TIMER ×3✅ 真实下数计数器 + 中断(26/27/28),周期重载
GPIO0/1/2✅ 真实(行为完整)输出 set/clr、输入读、边沿/电平中断;引脚为真实信号网:bank 内输出→输入回环 + 跨 bank 板级连线(GPIO0 输出脚驱动 GPIO1 输入脚,可观测+中断,裸机验证)+ 可由 monitor/外部设备驱动
SYS_CTL0✅ 真实(部分)仅时钟状态(TCXO/PLL 锁);其余读 0
TCXO 时钟/计数器✅ 真实(部分)0x440004C0:bit4 count-valid + 64 位单调计数(+0x04/+0x08),供 bootloader us 级延时
PPB(核内私有外设总线)🟡 RAM 吸收0xE0000000 FlashPatch 单元 + Cortex-M 式 SCS(0xE000E000);加载已打补丁镜像故补丁单元无意义
中断控制器✅ 真实IRQ 26–31(mie 类)+ ≥32(自定义 LOCIxx,target/riscv 补丁)均完整投递;LOCIPRI 优先级 + PRITHD 阈值已强制(严格 >、最高优先级优先、同级取小号)
SFC(Flash 控制器)✅ 真实(部分)SPI 命令接口(RDID→W25Q16、RDSR→ready、命令完成);flash XIP 窗口(0x200000)为 RAM 背靠,默认空——可用 run.sh NV=1 回填分区表+NV(见 运行固件)
I2C0/1(0x44018000/0x44018100)✅ 真实(行为完整)真实回环 FIFO:TXR→RXR 多字节顺序回读、SR 完成位、COM 命令位自动清、IRQ 31/32
SPI0/1(0x44020000/0x44021000)部分行为模型DRNM 窗口 +0x2c..+0xb8 的 36 个对齐地址共享回环 FIFO;数据口支持字节/半字/字访问,WSR/RLR 反映队列。尚未实现 SPI IRQ、时钟/使能门控、FIFO 错误及 DMA 请求节拍;不能据回环通过宣称完整支持。BS2X 保留独立的 +0x60 数据口布局。
PWM(0x44024000)✅ 真实(部分)寄存器影子 + PERIODLOAD_FLAG=1 + START 自清
I2S(0x44025000)✅ 真实(行为完整)LEFT/RIGHT TX→RX 回环
LSADC(0x4400C000)✅ 真实(行为完整)CTRL_8 触发转换 → rne=1/bsy=0、CTRL_9 弹出 14-bit 采样 + 完成 IRQ 72(读清)
EFUSE(0x44008000)✅ 真实(行为完整)真实 OTP:STS boot-done + 数据窗读回,写=按位或(一次性熔丝只能置位,不可清零,裸机验证);标定内容无 dump 故为空白熔丝
TSENSOR(0x4400E000)✅ 真实(行为完整)start→sts rdy=1 + 10-bit 温度码(合成 ~25°C,按 HAL 转换公式)
WDT(0x40006000)✅ 真实(行为完整)QEMU 定时器倒计时;超时未喂狗则真复位 SoC(裸机测试验证)
RTC(0x57024000)✅ 真实(行为完整)QEMU 定时器周期触发 IRQ 29 + INT_STATUS/EOI;CURRENT_VALUE 计数
DMA/SDMA(0x4A000000/0x520A0000)✅ 真实(行为完整)通道使能即真正搬运内存(src→dst,按宽度/地址自增),置传输完成位,按 tc_int_en 触发 IRQ 59;INT_CLR 清除(裸机测试验证)
TRNG(0x44114000)✅ 真实FIFO_READY=ready、FIFO_DATA 伪随机(xorshift)
合成 Wi-Fi/以太 MAC(ws63-netmac @ 0x44210000)✅ 真实(行为完整,合成)软件在环连接性底座(路线图阶段 5):不仿 RF/PHY,在 ws63-rf-rs netif 缝合点暴露最小以太帧 MAC——TX_BUF+TX_GO→qemu_send_packet(接 -nic user SLIRP NAT),主机帧→.receive→RX_BUF + IRQ 45(WLMAC_INT);qtest 整帧收发回环验证。非厂商 WLMAC 寄存器级复刻
SPACC / PKE / KM(密码学)🟡 影子寄存器影子(未在启动路径:mbedtls 用 ROM 表软件 AES)。真实 AES/SHA/RSA 可经 QEMU crypto 库实现,但 SPACC v2 多通道描述符协议复杂且无固件触发,列为按需扩展
CLDO_CRG(时钟与复位生成)✅ 真实(部分)时钟门控生效:清 CKEN_CTL0 bit21 冻结定时器、置位恢复(已实测);CLK_SEL 源路由建模为状态;其余位影子
IO_CONFIG / SYS_CTL1 / PWM / RF_WB_CTL / SHARE_MEM / FAMA_REMAP / ULP_GPIO(影子)🟡 影子见下「配置类为何是影子」

覆盖度:WS63.svd 的全部 35 个外设现均有模型(无裸 catch-all 黑洞)。 「行为完整」= 真实数据搬运/计时/中断/转换(DMA/RTC/WDT/Timer/I2C/SPI/I2S/LSADC/GPIO/UART/TSENSOR/EFUSE)。

配置类为何是影子

配置寄存器本身没有“行为“,其行为是对别处的作用。作用可内部计算的已做成真实 (TSENSOR 出温度、EFUSE 走 OTP、LSADC 出采样);作用是物理/外部的则在仿真器里无可观测行为:

  • 引脚行为本身可仿真:QEMU 用信号网(qemu_irq)建模引脚——GPIO 引脚是真实信号网 (bank 内回环 + 跨 bank 板级连线 + 可外部驱动)。真正“不可观测“的只是悬空引脚(输出无连接对象)。
  • IO_CONFIG(引脚复用)= ws63-pinmux 设备(已做路由):GPIO_xx_SEL[2:0] 选功能(0=GPIO, 1-7=UART/SPI/I2C/PWM…)。GPIO0→GPIO1 的板级引脚网经 pinmux 路由:引脚复用为 GPIO 时信号导通、 复用为其他功能时被门控(引脚改由该外设承载)。裸机验证:复用 GPIO→读到 1,复用走→0,复用回→1。 非 GPIO 功能(UART TX/SPI CLK)的数据本身由各外设的 TX/RX/回环覆盖;pinmux 负责的是“哪根物理引脚承载它“。
  • RF_WB_CTL / WiFi / BT:射频 PHY,物理边界,不仿。
  • CLDO_CRG 时钟门控(已生效):定时器门(CKEN_CTL0 bit21)清零会冻结定时器、置位恢复(默认开, 故不显式开门的固件不受影响);CLK_SEL 源路由建模为状态。其复位位理论可复位目标外设,但位→外设映射 复杂且无固件触发,暂留影子。
  • SHARE_MEM_CTL:核间共享内存控制,单核下无意义。
  • SPACC/PKE/KM:见加密行,真实 AES/SHA/RSA 需复杂且未被触发的描述符协议,按需扩展。

相关