Recently I got two different Chinese Pixhawk flight controllers. Both are very similar. The first one doesn’t have any revision information on the PCB, only “Pixhawk Pro” is printed on the case. Mission Planner’s (v1.x) firmware update dialog used the “fmuv2” hardware type for this board and it seems to work fine with it.
The other one is a much more common “Pixhawk 2.4.8” which comes with “PX4v2” printed on the PCB. Mission Planner first asked me, if this was a “Cube …” and after I clicked “No” it installed the firmware for the fmuv3 hardware type.
There are picture of both devices attached to this post.
This is all very nice, but I’m very nosy and want to know more!
Therefore I have some questions:
1.) As far as I understand, in the past NuttX was used as operating system for the MCU, but it is replaced by ChibiOS. The current (stable) PX4v3 firmware image seems to still use NuttX, while fmuv3 uses ChibiOS. Is this the only difference between these two images? And if yes: Why? How is decided which device/firmware image gets which OS?
2.) Is there still a free choice between NuttX and ChibiOS? Or in other words: Does it still mage sense to use NuttX for certain devices? I’m a great fan of CLIs (using Linux for decades now) and the possibility to directly interact with the OS, but as I found out after an hour of searching and reading, ChibiOS doesn’t provides such a thing?
3.) I read about a bug that limits the STM32’s memory to 1 MB instead of 2 MB. I also read, that “v2” is usually for boards/MCUs having this bug and “v3” is for boards using the same design but a newer (bug-free) MCU? Is this correct? And if yes: Is this the only difference between, say, PX4v2 and PX4v3 or fmuv2 and fmuv3?
4.) Using NuttX it’s possible to use the “var all” command (using the NSH shell) to check the MCU version and if the chip has the bug. But if the device is running ChibiOS , how can I optain the same information without the shell/CLI?
5.) As far as I understand, the Pixhawk has a secondary MCU for I/O operations. If the main firmware is changed/updated, will the firmware for this co-processor be updated, too? Does this firmware depend on the OS used?
I read about holding the switch down while powering up the device to initiate the update procedure. Is this something that needs to be done after every update? Does every firmware image contain a firmware for this secondary MCU? Is it possible to see the firmware version used? Or is there really no need to worry about that?
6.) Is there something like a syslog, where all system-related messages are displayed? There is a message tab in the Mission Planer, but I’m looking for something more verbose, more detailed?
7.) I read about a boot.log file that will be created on the SD card (in the LOG folder). But whenever I checked, I never found the file?