Introduction
The QRB5165 based build of PX4 for SDK release 1.0.0 is based on the 1.14.0 version of PX4 but has some custom features that allow it to work on the QRB5165. Mostly these changes were required due to the underlying architecture of the QRB5165 device and it’s software architecture. The QRB5165 device is produced by Qualcomm, Inc. and documentation about it’s feature set can be found on the Qualcomm site. This provides a nice overview.
Architecture
The QRB5165 device is a powerful System-on-Chip (SoC) that combines a number of high powered processing cores and compute accelerators. The main applications processor is composed of a complex of eight ARM64 cores running Linux. There is also a DSP based on the Qualcomm Hexagon architecture used for sensors applications. It is on this sensors DSP where the majority of the PX4 flight controller software runs. This DSP is often referred to as the SDSP, or SLPI in various documentation. It runs the QuRT RTOS which is a custom and proprietary Qualcomm product. Some of the PX4 flight controller also runs on the Linux application processor. So essentially PX4 runs as a split architecture on QRB5165 with all flight critical real time processing occurring on the DSP and support tasks such as logging and Mavlink processing occurring on the application processor. Understanding this split architecture is one of the keys to understanding how the QRB5165 based implementation of PX4 differs from PX4 on other architectures. How this affects development is explained in more detail in the development guide.
CPU Load
The CPU usage that voxl-inspect-services or top report for voxl-px4 covers only the apps processor side of PX4: the MUORB bridge, MAVLink, and logging. The sensor drivers, estimator, controllers, and ESC driver run on the DSP, and their load does not appear in any apps processor tool. To check DSP load, take a PX4 log and look at the cpuload topic, which the DSP reports separately from the apps processor.
Heavy load on the apps processor delays MAVLink and logging first. That shows up as gaps in telemetry and in the log, and is not by itself a sign that the control loops on the DSP are affected. Separately, warnings in a log about out-of-sequence or missing events are a by-product of the DSP and the apps processor each keeping their own event numbering sequence, and do not indicate dropped MAVLink messages.
I/O
A major part of any flight controller is the support for external sensors and other components. The QRB5165 provides an assortment of IO options for standard external sensors such as an IMU, barometer, GPS, magnetometer, radio control, and ESC. It is important to understand what IO options are available when designing a custom drone or outfitting a ModalAI development drone with new peripherals.
- It is important to note that VOXL2 has no native support for PWM or CAN. Add on boards are required to get those types of I/O ports