Cortex-M4 goes in BusFault if accessing DMA devices while Linux is booting

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Cortex-M4 goes in BusFault if accessing DMA devices while Linux is booting

843 Views
fmonte
Contributor IV

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

 

 

 

0 Kudos
Reply
1 Reply

833 Views
igorpadykov
NXP Employee
NXP Employee

Hi Francesco

 

I do not think that SCU 1.7.0 fixes will be backported on SCU 1.2.x as Linux 4.14.98

is quite old release, recommendation is to migrate to L5.4 kernels described on

https://www.nxp.com/design/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applicat...

 

Best regards
igor

0 Kudos
Reply