Hello,
I'm using i.mx8dual, and I'm trying to start M4 from u-boot using the bootaux command, but it seems that the u-boot doesn't even have access to the memory at 0x34FE0000, which is TCM of M4. Reading the TCM will cause a crash, as shown below:
=> md.b 0x34FE0000 0x100
34fe0000:"Synchronous Abort" handler, esr 0x96000210
elr: 0000000080060d5c lr : 0000000080060c74 (reloc)
.....
Code: 12003c42 783c7b62 92403c42 17ffffeb (39400062)
Resetting CPU ...
I thought that was just due to the following code in the board_system_config function
BRD_ERR(rm_find_memreg(pt_boot, &mr_m4_0, 0x034FE0000ULL,
0x034FE0000ULL));
BRD_ERR(rm_assign_memreg(pt_boot, pt_m4_0, mr_m4_0));
so I commented them out. But it still didn't work. Afterwards, I found that sc_fw_port.pdf says "Code loading will require the M4 subsystem already be powered on", so I added
BRD_ERR(pm_set_resource_power_mode_all(pt_boot, pt_m4_0, SC_PM_PW_MODE_ON, SC_R_LAST));
to the end of the board_system_config function. However, this caused my CPU to halt even before running u-boot.
Isn't pm_set_resource_power_mode_all what should be called to power on the M4 subsystem?