I have 4 questions regarding the IOMCU used in boards like cube orange.
2 MCUs used in boards like cube orange, so what was the main reason for splitting in to 2 MCU?
How is the code flashed in the IOMCU as I see it’s just connected via Uart to main MCU(H7) Or I should look into the boot loader code and I might find the flashing to iomcu via Uart?
Where to find specific source code relevant to IOMCU?
How we can use different MCU than used in cubeorange for IOMCU and generate its code? I see very good videos available for integrating new MCU with Ardupilot, but how it is to be done with 2 MCU onboard, one acting like IOMCU as in cube orange?
The original motivation for the IOMCU predates the Cube, it was in the early pixhawk designs. The original reason was to allow for takeover by a manual pilot in fixed wing aircraft if there was a software failure on the main MCU.
Some vendors use the IOMCU to allow them to use a smaller pincount FMU (main MCU) as they get 8 PWM outputs with only 2 pins (the TX/RX pins of the UART to the FMU). The smaller pincount MCUs are cheaper and smaller.
The bootloader for the IOMCU needs to be flashed with a debugger (eg. stlink). Once the bootloader is flash the main firmware for IOMCU is loaded over the UART from the FMU. The IOMCU firmware is held in ROMFS on the FMU.
Source code for IOMCU main firmware is here:
it will connect randomly to mission planner, and if it connects it will gives me “unable to update IO firmware”
i can upload any ardupilot or PX4 firmware no problem.
it’s working flawlessly with PX4 (if installed)
but on mission planner, it’s not stable, sometimes it connect fine, then after trying to calibrate acc/gyro it will stop, disconnects and will not connect again, (with the unable to update IO).