A Service Processor on Oxide's Cosmo sled would intermittently disappear from the network, appearing completely dead. After weeks of debugging with limited access, the root cause was traced to mismatched memory attributes between privileged and unprivileged modes when accessing an FPGA via the STM32H7's Flexible Memory Controller. The CPU's cache was treating the FMC bus as Normal Cached memory in kernel mode but Device Memory in task mode, causing the bus to hang when stores from unprivileged tasks hit the cache during interrupts. Moving the FMC base address to a memory region with consistent Device Memory attributes resolved the issue.
1 Comment
Sort: