I want to boot my M4 core after Linux boots up, but I cannot start the core no matter what I do. If I have UBOOT flash and start the M4 core then I can reconfigure, re-flash, stop, start and restart the M4 from Linux using the m4fwloader. There are no issues and everything works fine.
If I try to do the very same thing but without starting the M4 via UBOOT then nothing works and I get some strange behaviors. Here is what I tried:
- I tried using TCML, but after I mmap and read/write to TCML then the OS hangs and becomes completely unresponsive.
- I though “Maybe because the M4 core is off, so is the TCML. I can use OCRAM_S”. I recompiled the code and set the linker to OCRAM_S. However after flashing nothing happens. No crash or hang, just nothing happens. I have the M4 using UARTB and theres no output. If I flash and run the same binary via UBOOT, then it works just fine.
- I tried regular OCRAM, but same as attempt 2.
I think I read somewhere that when Linux boots, if it sees that the M4 is not on, it disables the M4 clock. This may be the root cause and would explain everything. But I could not find anything in the IMX7DRM. I looked through all the registers that have anything to do with the M4 (probing and prodding using mmap), but I either missed it, or I am not understanding something.
Please help! Thanks.