一开始我还以为是 lwIP 的锅。TCP window 调了、mem pool 调了、pbuf 调了、cache 搞了、DMA 描述符也重构了甚至 TX 还做了 copy buffer。结果 3Mbps → 7Mbps没本质变化。关键转折点后来换了个思路把外部 XIP100M NOR Flash直接关掉改成内部 ROM 跑代码。结果很离谱直接 50Mbps而且lwIP 基本没再怎么动零拷贝还在DMA 还在cache 还在ITCM 热点优化也还在真正的问题不是 lwIP不是 DMA也不是 TCP。是XIP cache flash 访问模式。H750 外部 NOR Flash100MHz的问题开 I-cache 之后理论上应该还行。但实际是预取 miss 很严重instruction fetch 卡顿pipeline 被 flash latency 打断结果就是 TCP send_more 不是算不过来 是 CPU 在“等指令”最坑的一点ST 文档说XIP 性能只下降 10%这个在“理想 cache 命中”情况下是对的。但现实是 一旦预取/branch miss 多一点 性能直接掉一大截不是线性的是断崖式的对比很明显❌ 外部 XIP100M NOR FlashlwIP 已经优化完DMA 正常cache 开了零拷贝也做了 结果3~7Mbps✔ 内部 ROM啥都没变lwIPDMApbufTCP windowcache 直接 50Mbps最后结论很简单很多人调 lwIP其实调错层了不是网络慢是 CPU 在 XIP 上“卡指令”补一句更真实的感受H750 这个东西做通信没问题DMA 很强ETH 很稳但你一旦把代码跑在外部 NOR XIP 上整个系统就会变成“看起来都对但就是跑不满”经验总结lwIP 不是瓶颈大部分时候DMA 也不是瓶颈TCP 也不是瓶颈cache 也不是主要问题真正杀性能的 指令执行路径XIP flash latency miss