Ford Dumping Windows For QNX In New Vehicles
innocent_white_lamb writes "Ford has announced that their in-vehicle technology called Sync will be based on Blackberry's QNX operating system and will no longer use Microsoft Windows. My own 2013 Ford Escape has the Windows-based Sync system. I wonder if they will issue an update to change it to QNX."
Anonymous sources inside Ford cited reliability problems with Windows and lower licensing costs for the switch to the classic realtime OS.
I rented a for focus, and drove it for about 2 months, the MSFT stuff installed in it was a total piece of junk. It would crash, hang,
and reboot in the middle of navigating to the destination, just like a windows PC.
The SYNC system has nothing to do with the powertrain. It's only used for infotainment and climate control.
Windows Embedded has powered the ECUs in all Formula 1 cars (arguably the most technologically advanced race cars in the world) since 2008.
Costs are almost always a cover reason. It's what you say when you don't want to put out the real reasons.
For example, Ford almost certainly has an ongoing business relationship with MS, for their office PCs, maybe they use Outlook, etc. - they probably don't want to sour that by saying in public that their car-OS is crap.
Assorted stuff I do sometimes: Lemuria.org
QNX is an RTOS, Linux is not.
RTOS implies determinism, the ability to execute things in a timely manner. That means prioritizing interrupts and allowing high priority threads and processes to preempt the kernel and other core OS processes or threads. Many people mistake real time for processing something as it arrives into the computer e.g. a near latency free video image on screen from a camera or reading a stream of GPS coords from a serial port. Lets go with the camera example. While this sounds like real time, there is no software or hardware that guarantees that the image software and camera driver will always deliver an image to the screen in a guaranteed and timely manner. For example if you start the camera application and you play a video game, does the "realtime" video application retain its low latency? Or will it stutter as its process fights for CPU time with the video game process as the OS sees fit? In a true RTOS, the video software AND driver TELLS the OS their priority and the OS obeys. They can be assigned a high priority so any other software will have to wait until there is spare CPU time.
Linux has two routes to achieve this:
CONFIG_PREEMPT_RT
Patches to the Linux kernel which removed the various locks in the kernel (aka big kernel lock) which allows a process to be prioritized over the kernel itself. IRQ's are also prioritized. You can run various processes and assign them a priority.
Xenomai
Xenomai is a dual kernel approach where a vanilla Linux kernel is patched with Xenomai. It creates a separate kernel that allows its processes to preempt the Linux kernel and takes over handling interrupts through the I-pipe. This means all interrupts are handled by the Xenomai kernel and if an interrupt is destined for the Linux kernel, Xenomai passes them as a virtual interrupt. Xenomai also features its own HAL allowing hardware to be dedicated to Xenomai processes via RT drivers. You can also do things like dedicate a processor core to a specific task to guarantee there is ample CPU time. And Xenomai has a neat little trick, its kernel is a nucleus which can run various "skins" which are API's; e.g. you can use RT code using Native, POSIX, uITRON, VxWorks and a few other RT API's.
YMMV but both solutions have tradeoffs. There is a paper published (https://www.osadl.org/fileadmin/dam/rtlws/12/Brown.pdf) which compares the two popular Linux RT solutions. Preempt_rt is easier to implement as it is part of the mainline kernel, you only need to include a few headers and some gobals to define the process priority. But in tests it shows higher timing jitter than Xenomai. If you want maximum performance, then you need to look into Xenomai which requires a bit more setup, patching and using the various API's and RT hardware drivers.
BTW, Windows also has RT dual kernel systems. So yes even windows can be an RTOS. Look up Ardence RTX and INtime.