Embedded system design is one of the oldest, most legendary disciplines in electronics. Over the decades, billions of embedded products deployed in the field have changed the world in untold ways. Yet today, while other types of software and application development have moved to the cloud, cloud-based embedded development remains emergent – with many embedded applications still created locally on desktop computers.
There are various reasons for this. Chief among them is the traditional risk aversion of embedded developers: in a high-pressure atmosphere with tight time-to-market windows, embedded developers are often reluctant to change their tooling and design flows. But another key reason is this: the validation process relies heavily on target hardware and that hardware connects to desktop computers. In fact, local tool installation as an interface to real target hardware is often a requirement.
Now, as the promise of the Internet of things (IoT) unfolds, this decades-old approach is undergoing tremendous change thanks to the cloud. Cloud-based embedded development tools such as Arm Keil Studio can help to improve the development flow for embedded, all the way from product evaluation to model- or simulation-based validation with continuous integration flows, model optimization for machine learning, up to device provisioning for deployment.
In software development, version management and the associated management tools such as issue tracking are increasingly being relocated to the cloud. Today, it is more economical for multinational corporations to use services like GitHub instead of having their own IT and server infrastructure. This also enables decentralized development teams or collaboration with other companies that should not have direct access to the company’s IT.
Four key advantages to cloud-based embedded development for embedded developers
This design flow is coming to embedded, and it promises to transform embedded design and spark a new wave of innovation and design effectiveness.
There are four key advantages to cloud-based embedded development:
1. Software-as-a-Service (SaaS) with ready-to-use development tools
Instead of installing an integrated development environment (IDE) and the associated software development environment locally on a computer, you can use a complete setup from a cloud service provider. The IDE runs in the internet browser and the actual compilation takes place on a cloud server, usually far more quickly than with a desktop flow.
With cloud-based embedded development, developers can simply connect evaluation boards from various semiconductor manufacturers via USB and immediately load, test, and change various sample programs on the target system using a web browser. There is no need for a complicated tool installation and the software examples are always up to date. If you want to evaluate microcontrollers, you save time and effort as the setup is ready to use. This gives teams flexibility in the type of computing and operating systems they can develop with.
2. Software updates for deployed systems
Over-the-air (OTA) update is already available on many devices, but often requires user interaction. OTA is becoming increasingly automated and can also be used for small microcontrollers such as Arm Cortex-M. This allows software development to be staged, and you can initially bring a system with minimal functions to market more quickly. You can then expand this functionality via OTA and thus adapt a product generation that is already deployed to new requirements. This improves competitiveness but can also lead to new business models in the future.
3. Data analysis for predictive maintenance
The IoT systems can deliver valuable data to the manufacturer via IoT connectivity to the cloud. If, for example, you report important status parameters about a system, you can identify potential issues that may lead to a system failure at an early stage – before it becomes a problem. The maintenance effort is more cost-effective as it targets only systems that potentially fail. But you should consider also operating data, i.e. the data that the system receives from the environment via sensors? If you discover anomalies in the operation that were not taken into account during development, you may be able to improve the functionality of your system. And cloud-based embedded development gives you enough computing power to use artificial intelligence (AI) and thus analyze data sets from an extensive installation base.
4. Continuous integration (CI) of software modifications
Version management services such as GitHub also offer a virtual machine with runners to execute various test jobs. This is already common practice for many applications. The problem with embedded applications is typically the target hardware, but through Keil Studio we can offer powerful simulation environments for cloud-based embedded development that model a Cortex-M sub-system with options for I/O stimuli.
Once a continuous integration (CI) system is integrated into the flow, the software developer receives automated information – for example, whether a modification has a regression or has been correctly integrated. This typically increases employee motivation, spots potential errors early, and therefore leads faster to better quality. Such CI flows are already popular in the automotive industry, but this will spread to the entire embedded industry as common practice in the coming years.
In fact, when you consider CI as a service in the cloud context, CI testing using virtual platforms simplifies development even more. The advantages include:
- Speed: Virtual platforms have no overhead for flashing the application on physical hardware. This saves time on small and fast unit tests.
- Scale: Virtual platforms can scale to run many tests in parallel. This makes virtual platforms more cost-effective than a farm of physical hardware.
- Maintenance: Unlike physical hardware, virtual platforms do not overheat, wear out from overuse, break from misuse, or use physical space and resources.
- Upgrades: Virtual platforms can be adapted and re-configured to match corresponding changes to the underlying hardware platform that is under development.
A hybrid approach
While the emergence of cloud systems is important, such systems have limits, not the least of which is because cloud systems naturally require internet connections. That doesn’t always satisfy development requirements. For instance, instruction trace in software development requires both real-time processing and high bandwidth for the data. Such systems will therefore require local computing power for the foreseeable future and require a local tool installation on a desktop computer.
So there’s a requirement at the moment for a hybrid approach to our software development tools: cloud and desktop. The cloud version of Keil Studio, for example, can load projects directly from the desktop version, Keil MDK, and vice versa. This gives the necessary flexibility and allows you to switch to cloud technology step by step.
More efficient embedded development is here
Multinational corporations have embraced the cloud, leveraging its numerous advantages, ranging from decentralized development teams to product life cycle (PLM) management of the installed devices.
Innovative embedded products with the associated services depend frequently on cloud computing. For example, applications like voice recognition are inconceivable without the cloud. The cloud is also attractive for smaller companies, which can simplify their IT infrastructure.
Integration of cloud services in IoT edge devices is still a challenge, but it’s an approach that has a bright future. That’s why we’re working with various industrial partners on software stacks that reduce complexity and with initiatives such as PSA Certified for device security.
In the future, the cloud will be indispensable for both development processes and the functional properties of embedded systems, and we’re dedicated in our focus to make cloud-based embedded development simple and effective.
We will showcase these technologies at the upcoming Arm DevSummit virtual event:
19 Oct | Talk with live Q&A: CI/CD and MLOps workflow for IoT endpoint development
19 Oct | Talk with live Q&A: Enabling Cloud-Based Software Development for the IoT Long Tail
21 Oct | Workshop: IoT DevOps Made Simple and Scalable in the Cloud