Managing the complexity of embedded software development through design automation tools: Page 4 of 5

January 26, 2017 // By Anthony Pellerin
Managing the complexity of embedded software development through design automation tools
The diversity of embedded systems means no single sector dominates the industry; end applications vary widely and even the largest — automotive — represents less than 20% according to some analysts.

An example of how these features can be combined to create a powerful development system comes in the form of Lauterbach’s μTrace for Cortex-M — an all-in-one debug and trace module targeting microcontrollers based on the ARM Cortex-M cores. This debug and trace solution can interface to over 1000 Cortex-M based MCUs and support both high-level (C/C++ source) and low level (assembler) code debugging.

With many advanced features, including simple and complex breakpoints, OS-aware debugging and support for multicore debugging, it can also be used for in-system programming. Trace features include code coverage and task/function runtime analysis, and the ability to measure the energy used by the target during runtime.

The μTrace for Cortex-M is just one of Lauterbach’s embedded development tools and is complemented by software-only debuggers, in-circuit emulators and logic/protocol analysers.

With most of a system’s complexity residing at the firmware level, it is essential to choose the most productive tools and understand fully the features they offer.

Figure 2 – Screen capture from QtCreator.

Application Development

In the Internet of Things era even deeply embedded devices are connected and will likely offer services that can be shared with other devices or even people.

The main form of accessing these services, wherever they may be, is through Applications; they now form the User Interface in many instances, exploiting the hardware platforms we carry with us, such as Smart Phones or Tablets, as well as PCs and, increasingly, Smart TVs. Developing an application that can execute on all these platforms is rapidly becoming the domain of cross-platform solutions.

A cross-platform solution allows a single application to target a range of hardware/software platforms, irrespective of the processor or operating system present. This usually lowers the cost of developing and maintaining an application.

 

Cloud-based Development

Cloud developments are involving tools that are no more specific to embedded systems but come from the standard IT development. You’ll find here all the tools for developing and testing PHP, C#.NET, JAVA or similar, which usually brings tools like Visual Studio, Eclipse or IntelliJ. We can also highlight some advanced text editor like SublimeText or Atom

While those tools are not that much specific to the IoT types of scenario, the way they are being used especially in the debugging and instrumentation phase might differ a little from what is usually being perceived in standard cloud processing applications and in particular due to the need of specific environment with object, databroker or any kind of device connectivity.

Besides, what we see emerging right now are tools that allows setting up and configure an IT infrastructure, which can be either SAAS or PAAS oriented. Indeed, Cloud service providers like Microsoft for instance make those tools (Visual Studio and WebMatrix) available in order to deploy cloud solution but also smoothen the connectivity of embedded system to Cloud systems for companies with limited knowledge, experience or resources on the IT side.

 

Quality Control

Quality is often subjective and difficult to define because it can be difficult to quantify. With software, however, there are very quantifiable methods of measuring quality and first among them is coding standards.

Many industries now rely on coding standards such as MISRA for assessing software quality and the task of comparing source code against coding standards falls to static analysis tools. These tools, such as QA·C or Coverity from Synopsys, are widely adopted in safety-critical sectors such as aerospace and automotive, but are increasingly used in the Industrial sector, as well as some light industrial and consumer applications.

Static analysis returns errors and warnings when source code fails to comply with coding standards, and while it doesn’t guarantee the software meets the requirements (or is bug-free) it does indicate how well the code has been written, and that can often help minimise or expedite the debug process.

Design category: 

Vous êtes certain ?

Si vous désactivez les cookies, vous ne pouvez plus naviguer sur le site.

Vous allez être rediriger vers Google.