Hi,
I want to use RPC with the M4/M7 but I do not want to use the RPC library (it is not suitable for my use-case due to errors getting swallowed in the implementation). To that end I did the following.
I took the implementation of cm4_kick() and mpu_config() from RPC.cpp and put them in my own source file. This did what I wanted, it booted the CM4 and it all looked good.
I think put this code into a system that used Arduino_H7_Video and called begin() on it.
Result: screen goes a bright yellow/green and any graphics related activity results in a crash and the red blinking light.
I have a couple of questions:
-
Once the damage is done I don't seem to be able to undo it. Restarting the device and pushing old firmware to it doesn't work, it still has the issue with the video. I presume I've maybe broken the MPU configuration (or something) but I can't find any documentation on how to do a "reset everything back to factory state". Anyone got any pointers?
-
I'm puzzled as to what the actual issue is. My init code looks exactly like the RPC.cpp code without the code below. Any off-the-top-of-your-head points would be great.
// Initialize OpenAmp and libmetal libraries
if (MX_OPENAMP_Init(RPMSG_HOST, new_service_cb) != HAL_OK) {
return 0;
}
// Initialize rpmsg endpoints.
memset(endpoints, 0, sizeof(endpoints));