Hi all,
I have an MCUXpresso project to control GPIO1 port and blink some LEDs connected to a custom board. I have built the binary with the default TCM+DDR configuration.
On U-Boot, I have successfully loaded and run the firmware on M4; using bootaux 0x7E00000.
Later, I found out while booting into Linux, the program stops.
There are some discussions about clock sources. So I've checked if their registers are configured correctly. I've also checked M4 SRC RCR register if the CPU is in reset. I tend to use PLL2 DIV5 according to the reference manual since it's arm_m4_core's source clock. MCUXpresso project had PLL1 DIV3 as default. After I checked the reference manual, I've switched to PLL2 DIV5. Maybe there's something to do with AHB and AXI clocks, idk.
0x3039000C: 0xA8 (After running firmware and boot)
0x303809D0: 0x32 (After running firmware and boot)
1) M4 FreeRTOS FW:
2) In the DTS file, I have reserved TCM and DDR memories for M4 for Linux to not interfere with. Here is the imx8mq-cm4 node:
I'm planning to support RPMessage too, that's why I need this configuration.
Basically, I'm going to need to start the M4 firmware on U-boot, check the M4 core's status and communicate with the core on Linux. What am I missing?
Thanks,
Onur
已解决! 转到解答。
Hello,
Thank you for sharing, please try setting the following variable in uboot:
> setenv mmcargs "${mmcargs} clk_ignore_unused"
After this try to boot into Linux and share if the issue persist.
Best regards/Saludos,
Aldo.
Hello,
By default, NXP Linux BSP keeps the root clock enabled for the M core when it is started from U-Boot.
Could you share the Linux version that you're using?
When you mentioned that it stops its only the M4 right?
Linux continue to work correctly?
Also, on your device tree did you disable the peripherals being used on the M4?
Best regards/Saludos,
Aldo.
Hello Aldo,
Thank you for the answer.
1. The kernel version is 6.6.36
2. Yes, it only stops the M4 firmware.
3. Linux continues to run.
4. The firmware is only accessing GPIO1 port and it's disabled in the DTS file.
Regards,
Onur
Hello,
Thank you for sharing, please try setting the following variable in uboot:
> setenv mmcargs "${mmcargs} clk_ignore_unused"
After this try to boot into Linux and share if the issue persist.
Best regards/Saludos,
Aldo.