The field of automotive software development is highly varied, and it’s evolving rapidly. Technology is advancing all the time, and consumer expectations are growing, so car manufacturers and automotive developers are in a constant battle to offer the best performance possible while minimizing development time and cost. This battle drives innovation and can significantly shorten the time to market for new vehicles and automotive software.
With so many providers and products to choose from, it can be difficult to know where to begin. But the decision is important. Each type of ecosystem — usually modeled on the base Linux kernel — requires different training and specialized talent, so making the right decision can have a big impact on the length of the embedded software development cycle, and the cost of developing a new vehicle. Additionally, the choice can also impact the quality of the final product.
So what are the most popular (and best) tools used by today’s automotive software developers? Before we dive in, it’s worth understanding the foundation for most of these projects – Linux distributions.
What is a Linux distribution?
A Linux distribution, or Linux distro, is a collection of open-source projects compiled into a unified operating system that can be installed and booted up on almost any system. As they are open source in nature, anybody can assemble or write a Linux distro.
Each distro features the standard Linux kernel, which is the base of the operating system, along with a basic terminal interface and commands (GNU shell utilities), a desktop environment, the X server, an installer, and a package managment system.
Due to its versatility and reliability, most automotive development ecosystems are built around the base Linux kernel.
Yocto – the standard for embedded systems OS building
Yocto encompasses three main components:
- OpenEmbedded-Core – the metadata containing recipes and other related files
- BitBake – creates recipes and parses metadata, functioning as a build system engine
- Poky – a Linux-based platform used to rapidly develop novel systems
Yocto is not a distribution, but rather a framework that enables users to develop distributions. It is a very popular tool with developers, largely due to its ability to help them create Linux versions, customized to the particular software, hardware, and required functionality of each vehicle. It also allows developers to build in other important elements, including LLVM, Chromium, and others.
Benefits and downsides
Yocto is supported and used widely, which is a huge benefit for developers and the automotive companies that hire them. Due to its popularity, there is a highly active community, along with regular updates and good support. Additionally, Yocto uses layers, making it versatile, adaptable, and more future-proof than some other systems.
A downside of Yocto is its relative complexity. It can be difficult to use, so developers need to spend some time learning the ropes, and this can result in projects taking longer and costs being higher. While this is not an insurmountable hurdle, it is worth taking into account when deciding whether to use Yocto or Buildroot (or another similar product).
QNX – the most popular real-time OS (RTOS) development platform in the industry
Owned by BlackBerry (yes, turns out they’re still a successful company), QNX software has been widely adopted by developers and is used by many automakers. In fact, software built with QNX has been deployed in a staggering number of vehicles, totaling hundreds of millions globally.
The applications of these software products vary greatly, ranging from entertainment systems to driver assistance, digital interfaces, and much more. Companies that use the software include some of the world’s top car brands, including Toyota, Mercedes-Benz, BMW, and many others.
Benefits and downsides
QNX has an efficient development cycle, with a complete integrated stack. It also boasts adaptable frameworks that enable straightforward integration of new features and third-party software. This is handy for regional variations in strategy, regulations, and so on. QNX is also compatible with all leading automotive-grade platforms, and it can be deployed flexibly either wholesale or piecemeal.
A drawback of QNX for some is the cost. While it’s a great system, and the most dominant in its niche, users generally need to pay for the license and pay a royalty fee for each vehicle it’s used in. For this reason, some companies looking to absolutely minimize development costs may choose another solution.
AOSP – a critical platform for many embedded onboard platforms
Android Open Source Project (AOSP) is Google’s contribution to the automotive software development space, and since it’s open source, anybody can use the code. However, it only really covers the basics, including a simple home screen and a few basic apps for things like media, climate control, and so on. To make their products market-ready, developers need to do a significant amount of customization.
To bypass this need, Google offers Google Automotive Services (GAS), a set of proprietary APIs with navigation, Google Assistant, and so on to turn the software into a fully functional product.
Benefits and downsides
For car manufacturers, the major attraction of AOSP is that it can significantly reduce development costs, as well as the cost of maintaining systems. Developing your own system from scratch is costly and time-consuming, and often unreliable. AOSP enables auto companies to access an out-of-the-box solution for a fraction of the cost, and much faster. Even if they do choose to significantly redesign the system, it is relatively cheap to hire Android developers, so costs will still be fairly low.
A downside, for some, is the fact that AOSP can limit creativity and make it difficult to offer a completely unique, on-brand experience to consumers. Additionally, some manufacturers (and their customers) may have concerns about undesirable data collection by Google.
AUTOSAR – open, standardized software architecture for automotive electronic control units
The AUTomotive Open System ARchitecture (AUTOSAR) standard is a development network/partnership made up of organizations involved in vehicles, semiconductors, software, and electronics. In short, it is a constantly evolving, open system that provides the standards used to create automotive software for a range of applications.
Benefits and downsides
As it is built on a network of relevant organizations, AUTOSAR benefits from the combined experience of these members, including most of the top auto manufacturers and suppliers. As such, it is varied, versatile, and broadly compatible with different workflows and file formats. It also enables smooth collaboration between partners, and generally makes life easier for developers. This, in turn, can cut development time and, as a result, reduce costs.
While AUTOSAR is a very useful tool, it does require developers to have a long-term outlook. It is constantly evolving to reflect new practices and standards, and this can cause teething problems fairly regularly. For this reason, it’s important for developers to be proactive about monitoring and making improvements to the ecosystem, rather than blindly following it and assuming the basic updates will fix everything.
Bazel – automating the building and testing of software
As an open-source tool, also provided by Google, Bazel is used to build and test software and shares many similarities with other platforms such as Gradle, Maven, and Make. It offers support for various languages and platforms, and is popular with multiple prominent companies in the automotive space, including Uber Advanced Technologies Group, Peloton Technology, Apollo, and many others.
Benefits and downsides
Bazel is popular for several reasons, such as:
- Offers support for codebases spanning various repositories
- Uses a language readable by humans, simplifying much of the development process, including when working with linkers and compilers
- Is reliable and fast, cutting down development time and keeping costs from spiraling out of control
- Is easily scalable, as it can work with multiple repositories and user bases and a large number of source files
However, it’s worth pointing out that Bazel can be complicated to use initially, which can, counter-productively, serve to negate some of the efficiency gains it offers.
So, what’s the best automotive software development ecosystem?
In an industry that’s evolving all the time, with so many ecosystems on offer all offering different things, there is no one-size-fits-all solution for automotive software development. Choosing the right ecosystem (or ecosystems) for your development projects will largely depend on unique factors such as the time frame (because nobody likes long build cycles) and the budget of your project, the expertise of available developers, and the precise requirements of your end solutions.
However, the industry moves fast, and in the coming years, it is likely to consolidate. With big players like Google and Apple vying for dominant market shares, there is a lot more change on the horizon. What’s popular now may not be relevant in just a couple of years, so the most important thing is to stay informed and up to date with the industry.
For more insights into the ever-changing world of software and development, explore the Incredibuild blog.