Embedded software plays a critical role in these kinds of devices. “In general, software architecture is a very important topic, but especially in embedded software because it has one main role and is very dependent on the hardware,” said Haris Turkmanovic, embedded software lead at Vtool, who is also a teaching assistant in the Department of Electronics, School of Electrical Engineering at Belgrade University. “At the same time, good embedded software is not dependent on the hardware. Why? Because if you create a very good software architecture, then that software will not be dependent on the hardware.”
To Turkmanovic, a good software architecture must be composed of multiple layers, including a driver layer, a middleware layer, a service layer, and an applications layer. “Generally, all software must have some layers. In embedded software, it is even more important because it usually happens that the hardware is changed. If you architect the software to be well written, then changes are minor. But if you don’t have a plan and a good design of the software, you have big problems. The other side is if it is one big project. Here, it is critical to design the software well because many people will work on it. A version control system also makes it much easier to manage the software development, and the number of conflicts when merging key branches will be much lower.”
A third aspect, he said, is when software divisions are created. “Let’s say the divisions are vertical and horizontal. Horizontals are the layers mentioned above, with the vertical divisions set up as services, which are a compound of several layers. If you create software like this, it’s much easier in the final development steps to maintain and test that software because it’s organized and documented. Whatever we choose as the base for our software must be designed in multiple layers. But the complexity of the layers depends on the main program flow. Is it bare metal or is it RTOS base software?”
Click here to read the entire blog post in Semiconductor Engineering.