Hi,
is it possible to change the firmware on M4 core of imx6 SoloX without rebooting the whole platform ?
I understand that under u-boot I can start M4 core via "bootaux" command,
and also I can stop it via a simple write on SRC_SCR register:
mw.l 0x020d8000 0xA0480520
and start the core again with the same firmware using "bootaux".
But if I change the firmware loading a new working one in the same location, the core hang. The new firmware works only after a restart of the platform.
I've tryed to cleanup RDC registers too, but I can't find any procedure to restart the M4 with a new firmware without a power down/on.
Moreover I didn't find any documentation on how to use M4 reset functionality to start a new firmware, Is it a not supported operation ?
Thanks
Giuseppe
Giuseppe, hello !
In addition to Biyong Sun - please take a look at
"MX6 SoloX bare metal startup"
https://community.freescale.com/docs/DOC-106253
Have a great day,
Yuri
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi, thanks for your comments.
I've read (very interesting) Yuri post about "SoloX bare metal startup", and I based on it lots of my tests.
If I understand right, the only way to change the firmware once M4 has started is to:
- stop M4;
- reset permission on RDC registers;
- replace the firmware;
- update stack and pc addresses;
- reset and start M4;
If I do not reset permission on RDC I can't updare new firmware from A9 (in DDR or ocram area).
But once RDC register have been alterated, system becames unstable (crash after few seconds...).
So I think I can't do that ....
Is it right ?
N.B. I need a "warm upgrade procedure" just for development phase of new firmware, not for production.
Strongly suggest do not try to do that, it will introduce lots of unexpected issues later on.
If you disable the RDC, it can.
Also you need to load the image to the memory correct address.
And also re-write the M4 vector as boot aux does.
stackp 0x007F8004
pc 0x007F8000
SRC Control Register (SRC_SCR) bit 22 m4_enable
SRC Control Register (SRC_SCR) bit 4 m4c_non_sclr_rst