Can I replace the MCU software from within the Linux system on the Intel edison?
Guides such as https://software.intel.com/en-us/articles/using-an-mcu-on-the-intel-edison-board-with-the-ultrasonic... this mention only a method using the SDK which I assume is on the development machine.
Right now the only way to program Edison's MCU is through the SDK mentioned in the article you mentioned above. If you would like to learn more about how Edison's MCU works and how to upload scripts to it, I'd suggest you to read:
I just found
which checks that this file exists
And then issues this command
echo "load mcu app" > /sys/devices/platform/intel_mcu/control
I can't say whether this works or not.
Is this firmware my own code I compile or is it one of the binary blobs?
If it works, how reliable is this method in future system updates?
These are my final results
When Eclipse pushes a new MCU program to the device it will replace the file /lib/firmware/intel_mcu.bin with the new program.
The load script didn't work in /etc/intel_mcu/mcu_fw_loader.sh or at least nothing appeared to change.
What worked was to replace the file /lib/firmware/intel_mcu.bin and reboot the system.
So being only in the module you can switch back and forth between MCU programs, although a reboot is needed.
I guess there is more to it than this but this is enough "reverse engineering" for today.
If anyone can find real documentation on this it would be awesome!
I've been meaning to do this myself at some point, very cool that you already did !
Thanks for the info!
I assume you use the Release/intel_mcu.bin from the sdk project folder to replace the file on the edison?
Edit: nvm, just tested it, it is indeed that file.
That sounds like a good idea, though that was not what I tested.
I swapped the versions of intel_mcu.bin that was placed in /lib/firmware on the module by the SDK/Eclipse.
Most likely the file comes from the location.
So your suggestion will make my work easier, thanks!