MH2457 片内没有能放代码的 flash,必须要外挂flash
通过 XFC 控制器 XIP 就地执行
① 地址映射。 XFC 把外挂 NOR 的整个空间映射到 CPU 总线的 0x08000000 起。CPU 发起一次取指(比如取 0x08012345 处的指令),它只看到一次普通的总线读,不知道后面是 SPI 芯片。
② 按需翻译成 SPI 事务。 XFC 收到这个地址后,现场生成一串 QSPI 时序:发“四线快速读”命令 → 发 24 位地址 → 在 4 根数据线上把字节收回来 → 交给 CPU。每条指令的取指都是这么来的。四线(QSPI)比单线快 4 倍,就是为了喂饱 CPU 取指带宽。
③ Cache 挡住 SPI 延迟。 SPI 再快也比并行总线慢一个量级,如果每条指令都现跑一遍 QSPI 事务,CPU 早就饿死了。所以 XFC 前面挂了 ICACHE/DCACHE(mh245x_cache.c 那一套):读过的缓存行命中就直接给,未命中才走 SPI。这就是 XIP 能跑得动的关键。
④ 启动时对齐时序。 SystemInit 里那段 QSPIClockConfig / CONFIG_QSPI_TIMMING,是在系统时钟切到 PLL 之后按新频率重新配置 QSPI 读时序——芯片型号、PCB 走线长度不同,采样时刻就不同。