Skip to content

Software platforms

QNX and safety operating systems

Why a commercial microkernel keeps winning the safety-critical slot, what certification actually buys, and how a safety OS sits next to Android on the same chip.

Advanced8 minQNX · Safety · RTOS · Platforms

Every cockpit consolidation project eventually hits the same wall: some content on the screen is legally required to be there, and Android cannot promise it will be. and its peers exist for exactly that gap.

The requirement that forces the issue#

What a microkernel actually changes#

QNX is a microkernel, and the architectural difference has direct safety consequences.

   MONOLITHIC (Linux, Android)          MICROKERNEL (QNX)
 
   ┌───────────────────────────┐        ┌────────────┐ ┌────────────┐
   │        applications       │        │    apps    │ │  drivers   │
   ├───────────────────────────┤        │ user space │ │ user space │
   │  drivers │ fs │ net │ mm  │        └──────┬─────┘ └──────┬─────┘
   │        KERNEL SPACE       │               │ message      │
   └───────────────────────────┘        ┌──────┴──────────────┴─────┐
                                        │  microkernel: scheduling, │
   a bad driver panics                  │  IPC, memory protection   │
   the whole system                     └───────────────────────────┘
 
                                        a bad driver is a process
                                        that can be restarted

What "certified" actually means#

This phrase gets used loosely, so be precise about what is being bought.

Gotcha

Certification is conditional. The safety manual will say things like "the following filesystem is not certified" or "this scheduling mode is out of scope". Step outside the envelope and the certificate does not cover you.

Teams have discovered late that the configuration they shipped was not the configuration that was certified. Read the safety manual early, and treat its constraints as requirements rather than suggestions.

The safety island pattern#

Here is how QNX and Android actually coexist, and it is the pattern you will meet in almost every consolidated cockpit.

One chip, four operating systems, four different safety obligationsSafety RTOScluster, telltalesASIL B/DADAS stackperception, controlASIL DAndroidinfotainment, appsQMVehicle Linuxservices, gatewayQM/ASIL AHypervisorpartitions CPU, memory and devices · enforces freedom from interferenceSystem-on-chipcores · GPU · memory · peripherals
One SoC, partitions with different safety levelsThe hypervisor enforces freedom from interference: Android cannot starve, corrupt or delay the safety partition, whatever it does.

The alternatives to QNX#

QNX has the largest share of this slot but it is not the only option.

OptionCharacterWhere it fits
QNXCertified microkernel, commercial, mature toolingClusters, hypervisors, ADAS — the default choice
Integrity / PikeOS / VxWorksCertified RTOS, separation-kernel heritageAvionics-influenced programmes, very high assurance
Safety-certified LinuxLinux plus a certification packageAttractive licence story, ASIL claims are narrower
AUTOSAR Classic on an MCUNo OS in the desktop senseHighest ASIL, small deterministic functions
Zephyr / FreeRTOSSmall open-source RTOSZone controllers, sensors; certification varies

Why an Android engineer should care#

You will not write QNX code. You will still hit its consequences constantly.

Boot ordering. The safety partition boots first and fast. Android boots later and slower. Anything of yours that assumes it is up early is wrong.

Resource limits are hard limits. Your partition has N cores and M megabytes, fixed by configuration. There is no borrowing from the safety partition under load. Performance work has a ceiling you cannot argue with.

You do not own the whole display. The safety overlay sits above your surfaces. A full-screen layout that assumes it can use every pixel of the cluster will be partly covered, by design.

Some properties are read-only to you for a reason. If a value originates in the safety domain, Android sees it and cannot set it. That is not a missing feature request.

Crashes are contained but visible. Android restarting is survivable, and it is also noticeable to the driver. "The partitioning protects us" is not a reason to be relaxed about stability.

Next#

The cluster — where all of this has to be safe as well as correct.

References & further reading

Code links target the main branch on cs.android.com. AOSP moves — if a path 404s, search the symbol instead.