The PX4 boot is controlled by shell scripts in the ROMFS/px4fmu_common/init.d folder.
All files starting with a number and underscore (e.g.
10000_airplane) are canned airframe configurations. They are exported at build-time into an
airframes.xml file which is parsed by QGroundControl for the airframe selection UI. Adding a new configuration is covered here.
The remaining files are part of the general startup logic, and the first executed file is the rcS script, which calls all other scripts.
A failure of a driver of software component can lead to an aborted boot.
The right approach to debug the boot sequence is to connect the system console and power-cycle the board. The resulting boot log has detailed information about the boot sequence and should contain hints why the boot aborted.
freecommand to see the amount of free RAM.
In most cases customizing the default boot is the better approach, which is documented below. If the complete boot should be replaced, create a file
/fs/microsd/etc/rc.txt, which is located in the
etc folder on the microSD card. If this file is present nothing in the system will be auto-started.
The best way to customize the system startup is to introduce a new airframe configuration. If only tweaks are wanted (like starting one more application or just using a different mixer) special hooks in the startup can be used.
There are three main hooks. Note that the root folder of the microsd card is identified by the path
config.txt file is loaded after the main system has been configured and before it is booted and allows to modify shell variables.
extras.txt can be used to start additional applications after the main system boot. Typically these would be payload controllers or similar optional custom components.
By default the system loads the mixer from
/etc/mixers. If a file with the same name exists in
/fs/microsd/etc/mixers this file will be loaded instead. This allows to customize the mixer file without the need to recompile the Firmware.