
DevOps, as a new methodology in the field of software engineering, emphasizes a culture of communication and collaboration between software development teams (Dev) and operations teams (Ops), enabling developers to build, test, and release software more quickly and reliably. DevOps encompasses Agile Development, Continuous Integration (CI), Continuous Delivery (CD), and application monitoring (or Continuous Deployment, CD).
This article aims to systematically review the current state of the DevOps toolchain in embedded software development and outline its benefits and challenges.
01
Introduction to DevOps
DevOps is a compound term that expands to Development and Operations. It is a marvel in the fields of automated programming and virtualization, with capabilities for continuous improvement and development, emphasizing collaboration and the use of new tools, focusing on improving communication and collaboration between teams, and enhancing software system quality and customer satisfaction through regular automated software releases. According to the latest global survey by CA Technologies, companies implementing DevOps have achieved a significant increase of up to 52% in customer satisfaction and a noticeable improvement of up to 50% in employee productivity.
02
DevOps Toolchain
The DevOps toolchain includes continuous development, continuous testing, continuous integration, continuous delivery, and continuous deployment, as shown in the figure below:

▲Figure: DevOps Toolchain
*TFS: Team Foundation Server, a platform tool provided by Microsoft for managing and developing the entire lifecycle of software projects, which can maintain project documentation and to-do items during the design phase;
*Git: An open-source distributed version control system used for code development and review;
*Jenkins: An open-source continuous integration tool primarily used for continuous integration and continuous deployment;
*Klockwork: A static code analysis tool for code defects and security vulnerabilities;
*TICS: A synthesizer software from Texas Instruments used for static code analysis;
*Docker: An open-source application container engine used for building and containerization;
*Ansible: An automation tool used for configuration management;
*Nagios: An open-source free network monitoring tool.
1.Git Version Control
Git is a distributed version control system. Developers can easily work offline or remotely using a fully functional local repository: committing work locally and synchronizing the repository’s copy with the server’s copy. Git overcomes the drawback of centralized version control systems that require code to be synchronized with the server first, and it has a good failover and backup mechanism: when the server fails, users can recover data from any client repository back to the server.
The advantages of Git include:
-
Free and open-source;
-
Suitable for distributed development;
-
Less pressure and data volume on public servers;
-
Implicit backups stored in metadata, with complete cloned repositories;
-
Prevents data tampering, ensuring security;
-
Simple branching, supporting quick branch switching and easy merging.
2.Jenkins
Jenkins is an independent, open-source automation server for continuous integration, capable of executing various tasks such as automated builds, testing, and delivery, and can integrate with other testing and deployment technologies. The following figure illustrates a simple workflow of Jenkins:

▲Figure: Jenkins Workflow
3.Static Code Analysis
As the functionality of embedded systems continues to increase, the reliability of software becomes crucial; even a minor change can pose risks to the overall reliability of the system and potentially threaten life and property safety. Static code analysis refers to analyzing the semantics and behavior of code without actually executing the program, identifying abnormal program semantics or undefined behavior caused by erroneous coding, which is a critical step in embedded software development.
Static analysis can discover various issues in the code during the early stages of the software development process without waiting for all code to be written, building a runtime environment, or writing test cases, significantly reducing the likelihood of faults in the development and testing platforms, aiding in achieving test automation and improving the development efficiency, quality, and reliability of embedded system software.
Currently, mainstream static code analysis tools include: Klockwork, Cppcheck, CppDepend, Parasoft C/C++test, PVS Studio, Coverity, Polyspace, Flawfinder, Helix QAX, etc.
4.Docker
Docker is an open-source project implemented in Go (application container engine) that allows developers to package their applications and dependencies into portable containers in a unified manner, deploying them to any server with a Docker engine installed (such as Linux, Windows). Docker uses a sandbox mechanism (an environment that restricts applications’ access to system resources), ensuring that there are no interfaces between them, thus masking environmental differences: as long as the program is packaged in Docker, its behavior remains consistent regardless of the environment in which it runs.
The advantages of Docker include:
-
Efficient use of system resources;
-
Shorter startup times;
-
Consistent runtime environments;
-
Facilitates continuous payment and continuous deployment;
-
Easy maintenance, expansion, and migration.
03
Benefits of Adopting DevOps in Embedded Software Development
Embedded systems consist of embedded hardware and software. Embedded software refers to the operating systems and applications that run on embedded hardware and serve embedded systems, closely linked to external hardware and devices, with each embedded software having its unique application environment and practical value. Due to the typical requirements of embedded systems for small size, limited storage space, low cost, and low power consumption, the code of embedded software is often more streamlined than that of large machines. In safety-critical areas, embedded software needs to operate reliably and stably, with error handling and fault recovery capabilities.
The benefits of adopting DevOps in embedded software development include:
-
Faster release and deployment cycles;
-
Improved communication efficiency between development and operations teams;
-
Minimized deployment time for new features or services;
-
Increased productivity of operations teams;
-
Establishment of easily replicable standardized processes to enhance delivery speed;
-
Improved quality, reliability, and reusability of all system components;
-
Minimized downtime during deployment;
-
Increased success rate of enterprise digital transformation strategies.
04
Challenges Faced When Adopting DevOps
When DevOps is applied to the embedded field, the following challenges may arise:
-
Some hardware and interfaces may have dependencies, not following a modular approach;
-
The software environment needs to be compatible with the current hardware version;
-
Integration of new tools with existing tools is required;
-
The current embedded field lacks suitable automation tools;
-
Software needs to be cross-compiled to be applicable to embedded platforms;
-
Limited visibility in the production environment of embedded systems;
-
Lack of suitable resources to configure the environment;
-
Limited hardware resources and poor scalability;
-
Ingrained mindsets and cultures within organizations are hard to break;
-
Relevant laws and regulations are not yet well established.
05
Solutions
As a culture and concept, DevOps aims to improve communication and collaboration between development and operations teams. The fundamental reason for the bottlenecks in its practice is that the operational and development team processes cannot synchronize. The following solutions can be referenced:
-
Identify all hardware and software dependencies in the system and prioritize them;
-
Design after fully understanding the hardware and software architecture, ensuring the architecture follows a modular approach;
-
Reduce communication barriers between development, testing, and operations teams;
-
Pre-assess the costs and potential risks of using DevOps;
-
Maintain a good organizational management structure;
-
Provide relevant DevOps training for teams;
-
Hire DevOps experts for guidance.
SkyEye, the full name of which is Tianmu All-Digital Real-Time Simulation Software (click to view details), is a hardware behavioral simulation platform based on visual modeling, with built-in automated testing capabilities, and can generate test reports after automated testing is completed. Embedded code can run on a PC through SkyEye without being burned onto the device. Additionally, SkyEye provides command-line tools for simulation control, which can be integrated into continuous integration workflows to support DevOps practices.

References
1. https://www.researchgate.net/publication/349623190_AUTOMATION_OF_DEVOPS_IN_EMBEDDED_SYSTEM_DEVELOPMENT_TOOLS_CHALLENGES_AND_SOLUTION
2. https://baijiahao.baidu.com/s?id=1675253978950340809&wfr=spider&for=pc
3. https://m.php.cn/docker/486869.html
END
Recommended Reading


Product Introduction




DiJie Software is a leading provider of embedded digital prototypes in China, with the mission of “empowering the leap of China’s high-end equipment manufacturing industry” and aims to “become an internationally renowned basic software supplier”.
