The automotive industry undergoes technological change faster than others. This phenomenon is driven by the need to accommodate new standards and market demands. Stringent CO2 levels and emission limits set new goals for technical specialists and designers.
The IT sphere, in turn, sets trends for progress in automation and infotainment. All aspire to meet customer expectations for performance, comfort, and utility. New features open paths to new user experiences.
Moreover, automotive software development is a perfect niche for programmers. The community of these specialists is small and secluded. Yet, the knowledge that revolves there is unique. Soon, cars will become more autonomous, and programmers capable of controlling them will be in high demand.
Programs enter our lives as they get built into the products that we use every day. The amount of code in a modern car is a hundred times larger than the one in an F22 fighter. Moreover, this figure continues to grow, with new features appearing in internet-connected cars. This trend mirrors a shift towards self-driving, hybrid and electric vehicles use.
A Bit of History
The first automotive software dates back to the 60s. As a result, the industry has changed. Soon after its introduction, electronics took over as the main source of innovation.
The brains of the car enhance reliability with active and passive safety systems. Such systems are anti-lock brakes and Electronic Vehicle Stability. This aspect has been paramount for automated cars.
Yet, the trend shifts towards entertainment and comfort-related automation. For example, the first programs were used to control engines and prevent carjacking. Now cars have pre-installed media centers, cameras, lighting, and voice control.
Initially, in the last century, ASM was used as the primary programming language. The Xi programming language gained popularity in the 90s. Robert Bosch and other vendors were the first ones to use the software using control and simulation technologies.
The CAN bus systems make vehicle’s brains quite complex. The reason is that they do not exclude interactions between programs of different ECUs. Modern luxury cars can contain a complex network of 80 ECUs with a total of up to 100 million lines of code.
This trend means that most new cars run on tens of millions of lines of code, controlling everything from your brakes to the volume of your radio. These elements are now indivisible from the driving experience and car control.
The Main Components of the ECU
Automotive expert software depends heavily on signal-scanning units. Those thousands of lines of code would be worthless without them.
- Analog to Digital Converter (ADC). Equipment designed to take readings from automotive sensors.
- A program for controlling digital equipment (uses signals conversion).
- Digital to Analogue Converter (DAC). A unit that gives analog signals to actuate certain components of the engine.
- Communication Chip. It enables a variety of communication standards found in a vehicle. The most common is Controller-Area Networking (CAN).
Features and Variations that Drive Complexity
New safety and entertainment features became essential in every automobile. Over the past two decades, they have transformed cars from conventional vehicles into mobile computing centers. Instead of server racks and high-speed optical interconnects, control units and wiring harnesses send data throughout the vehicle and beyond. And then there are tens of millions of lines of code that run every time you go to the grocery store.
More changes will happen in the coming years as more automakers commit to phasing out their internal combustion engine (ICE) vehicles to meet global mitigation goals. Thus, the automotive software companies will end up replacing ICEs with electric vehicles (EVs). These innovative cars will be able to operate autonomously or semi-autonomously.
Software used to only be a part of the car. The current software determines the value of the vehicle. Also, the success of a car in the market depends heavily on the software rather than the mechanical functions. So, IT advancement beats old reputable metalware.
Cars Software Structure
The car software comprises many components. Just like in any PC, there are perceived functions of the software, application- and platform software. The latter partially depends on the hardware. The interaction between all functions is defined in the architecture. It may display info in different ways and forms.
The static display hierarchically describes functional groups, signals, and resources placement. So, a functional display shows the flow of a signal through various functions. Time-dependent dynamic display analyzes the click-through response of tasks.
As the number of ECUs in cars grows, developers have to create sophisticated structures of in-car networks. Designing those requires more complex structures. Let’s consider the main differences between car software and other digital technologies:
- The car software has a more complex ECU network that remains rigid during the entire period of use;
- Safety functions. ESC and the braking system must operate without flaws. This option already implies strict requirements for software and the very stage of automotive software development;
- Interaction speed. The instant reaction of electronic components of the car (up to milliseconds);
- Robust architecture. Vehicle software must maximize electromagnetic compatibility and resist the effects of distorted signals;
These systems should also work for as long as possible. Your PC breaking down barely threatens your workday. Often, a user could substitute a PC with a phone or a tablet. If a car’s mechanism gets damaged somehow, this leads to way more serious consequences.
Automotive software needs more testing. Driving cars is related to safety. So, it is best to test functions as early as possible.
- Virtual prototyping. The prototype gets tested in a virtual environment model. The operating system of a newer ECU (eg. RTA) runs in an experimental environment.
- Actual testing. It is possible when software is already installed in the car.
The first method requires IT and simulation specialists. The second one is more expensive and far in the development process.
Challenges and Prospects
Software complexity has quadrupled over the past decade.
The programing complexity outstrips the abilities to develop and maintain it. Trends show that the complexity of the system is likely to triple another threefold over the next decade. Automotive manufacturers and suppliers alike struggle to bridge the development versus performance gap.
What About Drivers?
Drivers’ experience and comfort are the main drives of progress. The automotive industry is rapidly adopting driver assistance systems starting with parking, lane departure warning, and more. The new systems offer emergency braking and limited autonomous driving in stop-and-go mode.
Soon even control decisions will be related to the vehicle’s software and not directly to the driver. This philosophy raises complex questions of responsibility and liability in the event of an accident. From a legal perspective, the simplest solution is to keep the driver in a loop, establishing a connection between the driver and the car. In this system, the car should fulfill the driver’s orders.
So, yes, here we face the Terminator conundrum. There is no need to be present in the car as it operates by itself. Machine learning helps car software process new situations on the road. The driver becomes an observer of the vehicle’s decisions, to which he delegates the task of driving.