Embedded software: Analysis, design, architecture
It has now become widely known that the VHIT (from brain to terminal) method is no longer compatible with the current and future increasing complexity of embedded and real-time software/real-time systems.
Expertise: Development processes are the basis of modern software development.
Real-time: Embedded programming, operating systems
Based on the software architecture refined in the software design, you as a software developer implement it in a structured, procedural, object-based or object-oriented manner using the programming language C or C++.
Expertise: What does professional embedded software development mean?
Embedded software engineering as a key competence
The consideration of the various aspects of the Internet of Things (IoT) in particular demonstrates the high importance of embedded software engineering.
Expertise: Embedded Software Engineering as a key competence
Zephyr – The flexible open source solution for small embedded systems
With the real-time operating system (RTOS) Zephyr, developers have a versatile open-source alternative at their disposal, optimized for small systems. Unlike Linux, which is designed for high-performance systems, Zephyr is particularly well-suited for microcontroller-based applications where memory and processing power are limited. What exactly makes Zephyr so compelling?
Article: Zephyr – The flexible open-source solution for small embedded systems
Challenges in the software design of modern embedded systems
Software plays an increasingly central role in today's embedded systems. Systems based on complex microcontroller and processor architectures must offer more functionalities – and in shorter development times than ever before. This presents developers with the challenge of designing high-quality software that is both efficient and reliable.
Article: Challenges for the software design of modern embedded systems
Rust for embedded development: Security, speed, and practicality
In the dynamic world of embedded software development, reliability and efficiency are crucial. Choosing the right programming language can have a tremendous impact on a project's success. Rust has established itself as one of the leading options, perfectly meeting the needs of embedded developers.
Article: Rust for Embedded Development
Embedded Software Manager Pattern – Establishing core tasks in a scalable way within the software
Embedded software must coordinate various central tasks across the entire software. The classic example is initialization, which must occur at all levels of the software. Upon closer examination, many more of these software-wide actions can be identified, depending on the product. In this article, we introduce the Manager Pattern for coordinating these tasks within the software.
Article: Embedded Software Manager Pattern
Rust for embedded development: Security, speed, and practicality
In the dynamic world of embedded software development, reliability and efficiency are crucial. Choosing the right programming language can have a tremendous impact on a project's success. Rust has established itself as one of the leading options, perfectly meeting the needs of embedded developers.
Article: Rust for Embedded Development
C++ Programming: Dynamic or Static Polymorphism?
As the complexity of embedded software increases, fulfilling quality criteria such as modifiability, extensibility, adaptability, and reusability becomes ever more important. A key means of meeting these software quality requirements is the application of polymorphic structures in architecture, design, and implementation. Software development distinguishes between dynamic and static polymorphism.
Article: Design for Test and Design for Safety
Design for test and design for safety – Tailor-made software architecture
Our everyday lives are now seamlessly integrated with interconnected devices and systems. Whether using a smartphone to find the fastest route, reading the newspaper on a tablet while relaxing on the sofa, or controlling smart heating via a smartphone app, these systems make our lives more comfortable. However, this increased comfort also necessitates stricter security and safety requirements, which the developers of such systems must meet. This is especially true for autonomous driving – where sound safety concepts are of paramount importance.
Article: Design for Test and Design for Safety
That's why upgrading to the Cortex®-M85 is worthwhile.
While the Cortex-M23 and M33 have gradually gained market acceptance as successors to the Cortex-M0+ and M4, the Cortex-M55, the first member of the Armv8.1 architecture extension released in 2019, went almost unnoticed. Arm closes this gap at the higher end with the Cortex-M85.
Article: Why an upgrade to the Cortex-M85 is worthwhile
Compact video training for automotive body control applications
Learn how to develop TRAVEO™ T2G-based body control applications for the automotive industry from the comfort of your home. In a specialized online video training course, you will expand your fundamental knowledge and develop directly on an Infineon TRAVEO™ T2G Starter Kit, which is free for course participants.
Article: MicroConsult online training Infineon TRAVEO T2G
Trends in microelectronics: New perspectives and requirements for mobile devices
Every year, new and even more powerful microcontroller architectures are announced. This paves the way for increasingly convenient and even autonomous transportation devices for our everyday lives. Besides the increased computing power – MIPS per watt – the enormous demands on safety and security are one of the biggest challenges.
Article: Trends in microelectronics
Software development reimagined
The rapid growth of the Internet of Things, the 5G network, artificial intelligence and cloud or edge computing has a major impact on the development of embedded software.
Part 1: How multicore, safety & security aspects are changing today's software projects
Part 2: Avoiding typical errors with comprehensive software requirements
Part 3: Software Architecture
The embedded technology boom continues – the most important trends
The rapid growth of the Internet of Things, the 5G network, artificial intelligence and cloud or edge computing has a major impact on the development of embedded software.
Article: Boom in embedded technology
Interface designs and their implementation
The use of software interfaces is a fundamental means of developing durable and robust software architectures. Therefore, they should be established as early as possible in the architecture to stabilize it.
Article: Interface designs and their implementation
Embedded Software Redesign Guide
Sometimes simply extending old code isn't enough: a complete overhaul is needed. This series of articles describes the process of embedded software redesign and explains the concepts of reverse engineering, refactoring, and reengineering.
Article: Embedded Software Redesign Guide
Interview: Clean Code and the ideal workflow for an embedded project
In object-oriented software architecture and design, as well as in object-oriented programming (OOP) as a structured software development methodology, similar tasks and problems repeatedly arise. The use of reusable design patterns (proven solution templates) can prevent repetitive software programming efforts.
Article: Clean Code and the ideal workflow for an embedded project
Applying Design Patterns Correctly in Practice
Design patterns are solutions for frequently recurring tasks in object-oriented software design. In this sense, they play a similar role to the multiplication tables, which one learns by heart to avoid having to recalculate the results of frequently occurring arithmetic problems every time.
Article: How to correctly apply design patterns in practice
Save development time with design patterns
In object-oriented software architecture and design, as well as in object-oriented programming (OOP) as a structured software development methodology, similar tasks and problems repeatedly arise. The use of reusable design patterns (proven solution templates) can prevent repetitive software programming efforts.
Article: Saving development time with design patterns
Quality requirements for embedded software
Capturing and managing requirements is a key to project success. Embedded software functionality is easier to describe in requirements than quality attributes. However, quality attributes cannot simply be "tested in" at the end. The more abstract they are, the more complex and time-consuming they are to define. What challenges does this pose for a project?
Article: Quality Requirements Part 1 – Requirements and Myths
Article: Quality Requirements Part 2 – The Recording Method
Article: Quality Requirements Part 3 – A Data Collection Example
Programming guidelines – curse or blessing?
Lectures, articles, and books constantly emphasize that code quality is a crucial factor in a project's success. Therefore, there are ongoing attempts to introduce regulations that improve code quality. However, the code delivered by many developers is anything but elegant. One approach to ensuring code quality is the use of programming guidelines.
Article: Programming guidelines – curse or blessing?
Development processes as the basis of modern software development
In professional software engineering, the development and process steps prior to software implementation are essential. Terms like software analysis and software design, or high-level software design and detailed software design from development processes (for example, the V-Model XT or the industry-specific V-Model Automotive), represent precisely this.
Article: Development processes as the basis of modern software development
Successfully using architectural patterns in the embedded environment
Embedded projects usually start very small. And often, no thought is given to the software architecture in the initial stages. The application is supposed to work quickly – and the problems with the new hardware still need to be solved.
Article: Successfully using architectural patterns in the embedded environment
Embedded software design: Developing requirements and refining architectures
According to experts, predictable maintenance will be the norm for virtually all rotating machinery within the next five to ten years. The rapid development of sensor technology and artificial intelligence is further accelerating this pace. The embedded systems connected to the Internet of Things (IoT) are placing increasingly complex demands on design. Those who develop well-thought-out requirements in advance and consistently refine the architecture with software design ensure software and product quality.
Article: Embedded Software Design: Developing Requirements
Modern low-level driver programming: CMSIS, MCAL and others – off-the-shelf low-level drivers
Embedded systems are found in many areas today. They are often a crucial factor for convenience, safety, sustainability, and innovation. The proportion of software in embedded systems continues to increase. And the hardware, whether microprocessors with external peripherals or microcontrollers, is becoming ever more complex. Multicore systems are already a reality, and more and more manufacturers are bringing new multicore derivatives to market. Knowing—and programming—this complex hardware down to the last bit is no longer feasible within the available timeframe. This makes hardware abstraction indispensable.
Article: Modern Low-Level Driver Programming
Requirements engineering and management
Capturing and managing requirements is a key to successful projects. Whether in a traditional or agile process environment, professional requirements engineering and management for embedded and real-time systems shortens your project timelines and saves on development and maintenance costs. Take on this challenge!
Article: Requirements Engineering and Management
Modern low-level driver programming
Learn about the use of CMSIS (Cortex Microcontroller Software Interface Standard) using a concrete implementation example for an Infineon microcontroller with a Cortex core. Discover the advantages – such as reusability and extensibility – as well as the disadvantages of using pre-built driver layers.
Presentation: Modern Low-Level Driver Programming (ESE 2017, PDF)
Conference proceedings manuscript: Modern Low-Level Driver Programming (PDF)
Warning signs of impending software erosion and what you can do about it
Successful embedded software is usually developed over a long period. During this process, relationships may occasionally be introduced into the code that don't belong there. Over time, the software deviates increasingly from the planned architecture – software erosion is well underway.
Article: Software Erosion
New momentum for the embedded project with C++11
Many embedded projects still use older (and outdated) environments that don't allow developers to use a new C++ standard. This is a mistake. Not only do programmers miss out on the newly added features, but C++11 also fundamentally improved several aspects.
Article: New momentum for the embedded project with C++11
Control sensors with Linux – Use the latest embedded Linux know-how directly in your projects
Your task is the successful implementation of the Linux operating system in your embedded project. The challenge when using real hardware under real-time conditions lies in understanding the correct use of embedded Linux and selecting the appropriate Linux operating system mechanisms.
Article: Addressing sensors with Linux
Software architecture requires responsibility and skill: What topics should a software architect master?
With increasing product complexity and ever more powerful hardware, the scope and complexity of embedded system software are also growing. In many products, the software implements the essential part of the functionality. The departments that develop embedded software are constantly growing. This is also reflected in the current job market. Software is no longer developed in a "one-person show," but in teams distributed across different locations, potentially around the world.
Presentation: Software Architecture (ESE Kongress 2016, PDF)
Conference proceedings script: Software architecture (PDF)
Larger and more universal: All about "Modern C++"
Six years ago, C++11 ushered in a new era for C++. MicroConsult sheds light on modern C++ standards and brings you up to date with C++17 through a specially developed training course.
Article: All about Modern C++
This is what future-proof embedded software development looks like.
Which trends will particularly influence embedded software projects in the near future? What consequences will this have for the necessary knowledge, the required experience, and the way projects and their environments are designed? To find out, the experts at MicroConsult, who have been training, advising, and supporting embedded software developers from virtually all industry sectors for many years, were consulted. The topic of software engineering was examined from a wide variety of perspectives.
Technical article: This is what future-proof embedded software development looks like (PDF)
Safety & Security: Relying on known and proven methods
The operational reliability of software-intensive embedded systems is closely linked to protection against unauthorized access or targeted attacks. The necessary measures pose significant challenges for both software and hardware developers.
Article: Safety & Security Methods
More important than ever: Think in systems and architectures
Looking at the present and the future clearly shows that the embedded world and the IT world are intertwined and will become increasingly so. Embedded systems are becoming part of the Internet of Things, which is evolving into the Internet of Everything and will be a breeding ground for many new business ideas. The major challenge lies in thinking in terms of increasingly complex and dynamic systems and combining the ever-accelerating pace of technological and entrepreneurial developments to create new systems and business ideas. Our trainers have given this some thought.
Article: Thinking in systems and architectures
Renesas Synergy™
In the ever-growing market of Internet of Things (IoT) applications, many developers value a flexible solution that can be quickly and easily adapted to increasingly complex requirements. Renesas responded to this demand with the Synergy™ platform.
Expertise: Renesas Synergy
Useful information about the development and programming of embedded software
Embedded and real-time software development – training & coaching:
Embedded and Real-Time Software Development Training & Coaching
