Hello,
we have a custom iMX8QM board with FreeRTOS running on Cortex-M41 and Linux 4.14.98 (eCockpit) on the Cortex-A72 cores. System controller version is 1.2.11
If I run the following loop on the Cortex M41:
while (1)
{
// volatile uint32_t* spi0 = (volatile uint32_t*)0x5A000000u;
// volatile uint32_t access = spi0[0];
// volatile uint32_t* i2c0 = (volatile uint32_t*)0x5A800000u;
// volatile uint32_t access = i2c0[0];
volatile uint32_t* gpio1 = (volatile uint32_t*)0x5D490000u;
volatile uint32_t access = gpio1[0];
}
accessing any of the memory-mapped address of DMA devices (tested with DMA_SPI controllers, DMA_I2C controllers, GPIO banks) I get a bus fault only if Linux is started, just after the kernel startup.
If I do not start the kernel, the loop on the M4 runs fine. If I break the loop (via JTAG) and I start the kernel, I can continue the loop execution. The fault happens only if there are DMA accesses while linux is booting.
This fault does not occur if I upgrade the system controller to version 1.7.0 - but if I update only the system controller without everything else (linux, uboot, ATF, etc.) I have a tons of other issues.
Will this fix, that landed in SCU 1.7.0, be backported on SCU 1.2.x ?
Thank you,
Francesco