Nowadays technology is an integral part of our lives and we can find electronic devices all around us. The hardware is getting cheaper and faster with time and now we can start experimenting with the creation of complex devices on our own.
Raspberry Pi and Beagleboard are two of the many prototyping boards that you can use to create new and exciting technology. But it doesn’t matter if we are in our bedroom or in a factory, when it comes to embedded systems, there are choices we have to face when designing new hardware, and one of them is which operating system we are going to install in our board.
We can find many operating systems available for embedded systems. Before choosing one, let's see some basic concepts that can help you make the right decision when starting a new project.
Definition of the Embedded Operating Systems
An embedded system is a device with a computer designed for a specific purpose. To achieve that, the device needs an operating system that can respond fast and is prepared to keep working in any event. That is why we cannot rely on a general-use OS, but an embedded operating system.
An embedded operating system is an OS designed and optimized to:
- improve the efficiency of managing the hardware resources
- reduce response times specifically for the task the device was created for
Some examples of embedded systems are industrial robots, smart devices, IoT machines, drones, medical systems, video game consoles, and many others.
Operating Systems for General-Use vs Embedded Systems
As mentioned before, the embedded operating system differs from its general use counterpart. Let’s see an overview of the main aspects that are handled differently:
Features
Embedded Operating Systems
General-use Operating Systems
Primary Goal
Embedded Operating Systems
Run a single application
General-use Operating Systems
Run many applications
App Distribution
Embedded Operating Systems
Generally, the application and the system are distributed as a single image
General-use Operating Systems
The applications and the operating system are distributed separately
Architecture
Embedded Operating Systems
Designed for a specific purpose
General-use Operating Systems
Designed for general use to solve all kinds of tasks
Processing
Embedded Operating Systems
MCUs and CPUs
General-use Operating Systems
CPUs
The Difference Between OS & RTOS
Another thing you have to take into account is how fast your application has to react to an event. If you require that the system reserves resources to execute our task in real-time - or in other words at the moment an event occurs - it will be a good idea to choose a real-time operating system.
A real-time operating system (RTOS) is an operating system that manages resources in such a way that it processes data at the time it is inputted into the system, lowering the processing time.
One use case for RTOS is in self-driven vehicles. In these types of vehicles, we have real-time inputs that we must process really fast to avoid a car crash and ensure the safety of the passengers.
There are three types of RTOS: Hard RTOS, Firm RTOS, and Soft RTOS.
- Hard RTOS: If any task misses a deadline, even if only once, it generates a total system failure. Delivering results in real-time is a hard requirement for the system.
- Firm RTOS: If tasks infrequently miss the deadline it may degrade the system quality. In case the system frequently fails to deliver in time it can not operate correctly.
- Soft RTOS: The system can still operate correctly if a deadline is missed. If a task takes too long the quality of the service is degraded though.
Choosing a real-time system will depend on how fast your system must react. For example, a Hard RTOS is used for medical systems and soft RTOS is used in video streaming like Chromecast.
Now that you know basic concepts about embedded operating systems, let’s see the different choices you have at the moment to start an embedded system project.
This post will cover everything you need to know about Embedded Linux, QNX, VxWorks, and INTEGRITY, their differences, and how to use Felgo and Qt in those systems.
Embedded Linux
Mastering Embedded Linux Programming
Embedded Linux refers to the use of Linux in robots, routers, prototyping boards, or any electronic device that possesses a microcontroller (MCU). Embedded Linux differs from Linux mainly in size, because a great part of the system is not required for your embedded device.
With Embedded Linux, you have a variety of options. You can build the system image yourself using Yocto Project or Buildroot. You can also use a prebuilt image like OpenWrt if you are working with routers, or Ångström if you have a prototyping board like BeagleBoard or Raspberry Pi. Also, you can use a more known distribution such as Debian, Ubuntu, or even Android (please note that Android is not a Linux distribution, but uses Linux as its kernel). Additionally, depending on what board you choose to use, you may have a Linux image already being distributed by the manufacturer.
When in need of an operating system with enough flexibility and customization options, we can choose the Linux version that fits our requirements better.
Security, Performance & Features of Embedded Linux Development
You can achieve great performance with Embedded Linux. However, due to a variety of options, it will depend on what distribution you choose or how you desire to build it. Because of that, Linux will be a great place to learn how to tweak things around and get a customized experience.
In terms of security, Linux is a very secure OS. But still, if you choose to build it, you will have to configure it yourself in most cases. Especially if you are planning to implement networking capabilities into your application.
Some features that Embedded Linux distributions share are:
- Free license and open source software
- Support around 150 processors
- True multitasking
- Real-time kernel
- Support for many file systems
- Protected mode so programs or users can't access unauthorized areas.
- Networking with TCP/IP and other protocols.
- Multi-user capability.
- Many shared libraries and development tools
Tools & Ecosystem of Embedded Linux Development
You can find a large set of toolkits, software development kits (SDKs), and libraries for Linux. As your embedded programming language, C and C++ are used the most in embedded systems. C++ brings a lot of advantages at the time to develop an embedded application. One of them is the number of libraries that C++ has in its arsenal. Among them is Qt that counts with great growth in the embedded system world.
Linux has a plethora of documentation and resources online for free. You can consult on forums, blogs, wikis, IRC, email lists, YouTube channels, and user groups. Also, there are big communities that can help you. If your project needs professional support, you can use the paid support service offered by the system developer or you can choose from many companies that specialize in Embedded Linux support.
Are you looking for Qt Training, Consulting and Professional Embedded Software Development Services?
Real-Life Examples of Embedded Linux Development
Embedded Linux is used in a vast amount of fields. It’s safe to say that it’s a general-purpose embedded OS; routers, Chromecast, GPS are some of the devices where you can find Linux or Android. As you can see, due to the flexibility of the system, Linux can be used in any application.
Overview of Embedded Linux Development
The usability and learning curve will depend on which option you choose for your operating system. If the system is not provided by the manufacturer or if you need to customize the system for your application, you will need to learn how to build a Linux operating system. You’ll also need to learn how to create the image of the system and how to configure and use the cross-compile toolkit for the programming tools you choose. In case you are just starting in the embedded world, it’s advised to choose a prebuilt distribution and start learning from there.
When it comes to cost, you can find free versions of the system online. Thus, it’s a perfect choice if you are a beginner or prototyping a device.
Regarding the licensing, Linux is free software and it’s licensed under the GPL.
Advantages of the Embedded Linux System
- It is a free license
- It is inexpensive
- It has plenty of documentation
- It offers free and paid support
- It is highly customizable
Disadvantages of the Embedded Linux System
- It can be difficult to use
- You must implement the security
- If you choose to build your own Linux, the performance will depend on how you configure your system
QNX
Building Embedded Systems with QNX
Originally developed by Quantum Software Systems in the early 80s. Now it’s owned by Blackberry. QNX is an embedded RTOS destined to develop critical mission systems and is a UNIX-like microkernel-based operating system.
Security, Performance & Features of the QNX Embedded OS
QNX is a real-time embedded operating system that focuses on performance and reliability. Its features are designed to keep the embedded device running its task without flaws and in time.
Some of the most relevant QNX characteristics are:
- Microkernel architecture
- Support for multicore
- Hardware optimized composition manager supporting HTML5, Kanzi, OpenGL ES, Qt 5, Storyboard, Video, and other 3rd party HMI technologies
- Supports multi-touch input and video capture
- Secure boot
- Encrypted file system
- Self-verifying file system
- Heap, stack and memory protection
- ASLR
- Rootless execution
- POSIX PSE52 certified
- Wifi 802.11 a/b/g/n
- Full IPv6 and IPv4 stack support
- USB 3.x, Host, Device and OTG support
- Bluetooth v4.2 Classic and Low Energy
- Support for the latest ARMv8 and x86-64 processors
- Continued 32-bit support for ARMv7 and x86
Tools & Ecosystem of the QNX Operating System
For QNX you can choose between C++, HTML5, Qt, Python, or Java as your programming language to develop your application. Also, you can port your Linux applications to QNX.
You can choose the QNX SDP and the QNX Momentics Tool Suite with Eclipse or Qt Creator as your development tool.
The QNX website offers full documentation about the operating system and the SDK. Also, you have forums and technical support programs to ask for assistance. For using the Qt framework on QNX you can find some resources on the Qt or Felgo website.
Real-life Examples of QNX System
QNX is being used in the following fields:
- Automotive
- Heavy Machinery
- Industrial Control
- Medical Devices
- Rail
- Robotics
One use example of QNX is in the Jaguar Land Rover.
Overview of QNX
QNX is designed with critical mission situations in mind. You can create an embedded system that makes sure your application completes its tasks within the time-frame that’s required by your project. The system is mostly utilized in the industrial, automotive and medical fields.
QNX has a proprietary license with the option to acquire an academic license. You need to get in contact with the company to discuss your use-case and project in order to get a price offer.
Advantages of the QNX Embedded System
- It is a real-time operating system
- It supports many architectures
- You can port Linux application to QNX
- It supports Qt5 and Felgo
Disadvantages of the QNX Embedded System
- It is privately licensed
- It is quite expensive
INTEGRITY
Embedded App Development with INTEGRITY OS
Integrity is a POSIX-certified RTOS developed by Green Hills. One of the most relevant aspects of this system is the fact that it is a hard real-time operating system.
Security, Performance & Features of the INTEGRITY OS
INTEGRITY is an RTOS for embedded devices applied in many areas such as satellites, rail trains, or industrial robots. Because of its features, its use is very extended, which makes it a very tested and stable OS.
INTEGRITY comes with:
- Wi-Fi support: WPA2, Bluetooth, 3G
- Pv4/IPv6 host and routing networking stacks
- FFS, FAT, NFS, and journaling file systems
- 2D, 3D, and OpenGL graphics
- Security and Safety certification for in medical devices, railways control systems, industrial control systems, automotive amount other
- Support many architectures such as x86, Power Architecture, ARM, MIPS, OMAP, amount others
- Hard Real-Time
- Advanced Multicore support
Tools & Ecosystem of the INTEGRITY Operating System
INTEGRITY offers its very own development kit: MULTI. It supports C, C++, Embedded C++, and ADA as programming languages. Nintendo used MULTI as the development environment for the Wii U game console. There are reports from some game developers that MULTI is really hard to use, and consumes too much time during the linking and debugging process compared to other tools.
Qt is also supported by INTEGRITY and uses MULTI’s toolchain to cross-compile applications for the INTEGRITY OS.
Green Hills offers support to its customers. You can also find supporting documentation on Qt’s and Felgo’s website.
If you want to know how to develop your application for INTEGRITY, feel free to schedule a consulting session with one of Felgo’s embedded development experts.
Real-life Examples of INTEGRITY OS
The INTEGRITY operating system is used in aerospace, automotive, military, industrial, medical, and consumer fields. Some examples of the devices that used the OS are:
- Boeing 787 Dreamliner
- F-22 Raptor Jet
- Toyota Prius
- Ford Lincoln Aviator
- Bombardier Train Control Mgmt System
- Stryker Endoscopy Arthroscopy Resection System
Overview of INTEGRITY OS
INTEGRITY is one of the heavyweights in the industry. It is used in many fields and comes with an extended group of partners. Many companies use this operating system for their embedded application development. On the downside, existing reviews about the development environment state that it is hard to use compared to other tools. Still, if you are planning to develop a great scale project in your company, INTEGRITY may very well fit your needs.
The INTEGRITY OS has a private license and the MULTI development environment has a cost of $6000 per developer.
Advantages of the Integrity Operating System
- It is a hard, real-time operating system
- It tests on a lot of devices
- It supports a large variety of CPU and MCU architectures
Disadvantages of the Integrity Operating System
- It is quite expensive
- It can be tedious to find the right source for the documentation
- According to reports, the MULTI IDE is difficult to use and is slower than its competitors
VxWorks
Developing Embedded Apps with VxWorks
VxWorks is the last operating system this post will cover. It is an RTOS developed by Wind River Systems. VxWorks is a proprietary system designed for several industries like aerospace and defense, medical devices, industrial equipment, robotics, energy, transportation, network infrastructure, automotive, and consumer electronics.
Security, Performance & Features of the VxWorks OS
Although VxWorks comes with many security features, last year ARMIS exposed 11 critical vulnerabilities of the system, including remote code execution, denial of service, information leaks, and logical flaws. ARMIS publishes a video on Youtube showing how to exploit these vulnerabilities to get unauthorized access to a network where a VxWorks device is connected.
VxWorks have the following characteristics:
- Support for single and multicore
- Separation between the kernel and memory-protected user-space environments
- POSIX Conformant
- Support for ARM, IA-32, Intel 64, MIPS, PowerPC, SH-4, StrongARM, xScale architectures
- Support C++ 11, 17 and 20, Python and Rust programming languages
- Support dos-FS and HRFS file systems
- General-purpose and real-time IPv4/IPv6 network stack
- Time-sensitive networking (TSN)
- EEE 1394
- Socket Controller Area Network (SocketCAN)
- USB (host, target, and OTG)
- Support for multimedia: OpenCV, OpenGL ES 1 and ES2, JPEG and PNG image libraries, PCM audio and mouse, touch, screen, and keyboard support
- Secure boot, ELF loader, and storage
- Kernel hardening
- Security events
- Built-in access controls
- Advanced user management
- Cryptography
- Arm TrustZone with OP-TEE support
- TPM 2.0 support
- Network security protocols
- GE Digital® Achilles Level II certified for compliance with IEC 62443 part 4-2
- Safety certifications for DO-178C, IEC 61508, IEC 62304, and ISO 26262
Tools & Ecosystem of the VxWorks Operating System
For VxWorks application development there are two tools by Wind River Systems:
The first one is Wind River Workbench, an Eclipse-based IDE.
The second one is Wind River Simics, a simulator that will let you virtualize your hardware and make the development process easier. It also comes with continuous integration tools.
VxWorks development tools let you use the C++ 11 and C++ 14 standard, as well as cross-platform libraries like Boost, OpenCV, and Qt5 to create applications.
VxWorks has almost as many documentation resources as Linux. On their website, you can find many resources about how to program applications for the OS and how to apply continuous integration to your development process. You can find blogs, webinars, whitepapers, and even an academy. VxWorks also offers a great support service.
Real-life Examples of the VxWorks Embedded OS
VxWorks is used in a long list of embedded devices. One example is Honda’s robot Asimo or NASA’s Curiosity Rovers. These are some more fields where the embedded system has been used so far:
- Spacecraft: Curiosity Rover, the Mars Reconnaissance Orbiter, the Deep Impact space probe, the SpaceX Dragon, amount others.
- Aircraft: Airbus A400M Airlifter[, Boeing 787
- Space telescopes
- Automotive: European Volkswagen RNS 510 navigation systems, Bosch Motorsports race car telemetry system
- Industrial Robots
- Test and Measurement
- Transportation
- Controllers
- Storage Systems
- Imaging
- Medical
- Networking and Communication Infrastructure
Overview of VxWorks Embedded OS
The system has a simulator and continuous integration tools that will make your life easier developing for this platform. Also, it is very widely used and has a lot of resources and documentation.
The license is private and you have to register as a customer to know the pricing. They offer a 30-days evaluation period.
Advantages of the VxWorks Operating System
- It has a simulator
- It supports cross-platform libraries
- It provides support for many 32 and 64 bits architectures
- It tests on a lot of devices
- The documentation is available on their website
Disadvantages of the VxWorks Operating System
- Only a few programming languages are available
- It has a slight security issue
Conclusion
After seeing some of the features that these four embedded operating systems offer, you can see that many industries apply these systems within their embedded application.
One of the most commonly used is VxWorks with some important clients. Wind River Systems had made its way through some of the most advanced scientific fields in the world. You can find embedded operating systems in several NASA’s space missions or in cars, printers, networking, or medical devices. In comparison to QNX and INTEGRITY, VxWorks has more visible and abundant documentation and training resources. This comes very handy during the embedded app development process and lifespan.
Another industry favorite is INTEGRITY, a heavyweight in the aerospace, automotive, and military embedded systems. Some reports say that the MULTI IDE is quite difficult to use. On the other hand, INTEGRITY has a solid presence in the embedded operating system business.
In general, QNX offers quite an extensive information and documentation package. Their resources cover everything from how to use the tools to how to apply the operating system. On the downside, QNX does not show off all its clients as much as its competitors.
Finally, Embedded Linux is a world on its own. With the biggest number of options, applicability, customization, level of specialization, and hardware support, Linux is by far the most adaptable system. Its characteristics can be the biggest advantage and disadvantage at the same time. It’s easy to start a new embedded project as it comes with the support of great communities and companies like Debian or Canonical with its Embedded Ubuntu version.
Embedded Linux is the way to go if you already have a Linux background and want to be more familiar with the system, the tools on your desktop, your servers, and your embedded devices. It is also a great choice if you’d like to take advantage of the free software licenses and development communities that it comes with.
Embedded Operating System Comparison Table
So, let's see our four embedded operating systems side by side. In the next table, the embedded operating systems will be compared based on the following 8 categories: programming tools available, documentation & support, supported hardware, and licensing & pricing.
Features
Embedded Linux
QNX
INTEGRITY
WxWorks
Programming Languages Supported
Embedded Linux
You can use the programming language of your choice
QNX
C++, C, HTML5, Java, Python
INTEGRITY
C++, C, Ada
VxWorks
C++
Qt & Felgo Support
Embedded Linux
Yes
QNX
Yes
INTEGRITY
Yes
VxWorks
Yes
CPU/MCU arch supported
Embedded Linux
A great number of CPUs and MCUs architecture supported. Check the following link for the list of processor supported https://bit.ly/397Tikz
QNX
IA-32, MIPS, PowerPC, SH-4, ARM, StrongARM, XScale
INTEGRITY
ARM, XScale, Blackfin, ColdFire, MIPS, PowerPC, x86
VxWorks
ARM, IA-32, Intel 64, MIPS, PowerPC, SH-4, StrongARM, xScale
Usability
Embedded Linux
Hard to use depending on your choice
QNX
Easy to use
INTEGRITY
Hard to use
VxWorks
Easy to use
Documentation
Embedded Linux
A great number of resources online
QNX
Can find Documentation on the OS website and paid training. Also can find tutorials on Youtube and online resources.
INTEGRITY
Offers documentation with the purchase of the license
VxWorks
A lot of documentation and on VxWorks website and courses in their Academy
License
Embedded Linux
Free
QNX
Private
INTEGRITY
Private
VxWorks
Private
Support
Embedded Linux
Forums, communities, Mailing list, amount others. Paid support available
QNX
Forums and paid support
INTEGRITY
Paid support
VxWorks
Paid support
Pricing
Embedded Linux
Free
QNX
Depends on the Project
INTEGRITY
$6000 per developer
VxWorks
Depends on the project
Develop Embedded Applications with Qt and Felgo
Fortunately, all the previous operating systems also support Qt as a feature-rich development framework. This means you also have the option to use Felgo. But before getting into it in more detail, let’s take a look at how to use Qt.
Each of the embedded operating systems offers their own development tool to create embedded applications. Especially Linux, which offers a plethora of languages, tools, IDEs, and so on. But one of the advantages that you can exploit as a developer is the support and portability that you get when using Qt.
Qt is a C++ cross-platform library that covers everything from the user interface to networking and multimedia. One of the biggest benefits of using Qt is that the library supports all the systems previously mentioned in this article.
With Qt, you can develop your application once and deploy it in any system, including Android. So imagine you are working with Linux and suddenly you need to migrate your application to VxWorks. With Qt, you only need to configure the VxWorks compiler in the Qt Creator (Qt’s IDE) and run your application in the new system without virtually changing anything in your code. That portability means a reduction of costs and time in the event of migration, removing the needs to retrain your development team, and making the change transparent for every part involved in the project.
And this is the point where Felgo makes its entry. Felgo extends Qt and makes the development even easier. But how? Felgo comes with a lot of components that offer great features for your embedded applications. These are only some examples:
Adaptive UI, Navigation Components, and Controls: Felgo allows you to create state-of-the-art user experiences and brings best practices from the mobile development world to other supported platforms, like embedded, desktop, or web. You get all the tools you need for creating user interfaces that look and feel nice, while also supporting all kinds of different screen sizes and densities.
Maps, GPS and Sensors: You can use these components to create an application that tracks the position of the embedded device. For example in a vehicle or to show maps to the user, you can access the native sensor of your hardware and start getting location data really easy.
Connectivity and Networking: With Felgo, you don’t have to implement the communication between your client and server parts from scratch. With the HttpRequest API, you can connect to Restful services really quickly. You can also dynamically fetch assets or code at runtime with DownloadableResource. This allows you to keep the initial app size minimal and load content as required.
Apart from the SDK components, Felgo also provides tools that will ease your development process. The first one that will save you a lot of time is QML Hot Reload. This feature will let you see changes in your code in real-time.
The second one is the Cloud Builds CI/CD. Felgo offers a continuous integration and continuous deployment service to test and deploy your software for any platform like Embedded Systems, Android, iOS, Desktop or Web. By using Qt and Felgo services, you can simplify the development process and put yourself in a more advantageous position.
If you would like to jump-start your embedded app development, feel free to contact Felgo’s team of experts. From comprehensive, remote or on-site training, webinars to professional consultation and app development services, Felgo provides all the resources you need to develop your next embedded application.
Related Articles:
How to Build GPS Navigation Into Your App
How To Add Augmented Reality to your App
How To Add Machine Learning to your App
3 Practical App Development Video Tutorials
Most Popular Programming Languages
Demo Videos:
Amazing UI with Felgo Controls, APIs and Qt3D on Embedded Linux