As software spreads into more and more devices, the previously separate worlds of embedded and application development are merging
Embedded systems now increasingly combine traditional device level software with application code – in the same product. However, application developers don’t always have access to the same level of debugging tools as their embedded colleagues.
From Walkman to iPhone
For a good example of how things have changed, take the portable music player. The original Sony Walkman of 1979, which played cassette tapes, was purely mechanical. As it evolved and added a LCD display, an embedded microcontroller was needed, with code running on the bare metal of the device. Next, as functionality and complexity increased, an embedded Real-Time Operating System (RTOS) was required to manage drivers, schedulers and sensors.
Fast forward to the classic iPod and the device is running a full blown operating system that manages memory, scheduling, the user interface and application code. While much of the software is still system code, the percentage of application development is beginning to grow. When you get to an iPhone then the roles of embedded and application code have swapped around completely from early iPods. By my calculations, just 20% of the code is system level (running the more involved bits of the operating system), while 80% is application code. Architecturally, modern consumer electronics gadgets look awfully like a regular computer.
This brings new challenges. Embedded code has traditionally been hard to debug as developers had less visibility into what was going wrong, but there was a lot less of it. On the contrary, application developers can see what their programs are doing but have to ensure it works across a whole world of different devices and app environments. The multiplicity of Android phones and tablets on the market are the perfect example of this complexity. And of course modern devices have several orders of magnitude more lines of code than those of just a decade or two ago.
The good news for application developers is that a whole range of powerful debugging tools have been created to help those building embedded systems. And these are increasingly becoming available to application developers.
Consequently we at Undo have partnered with Lauterbach to integrate our high performance reversible debugging software, UndoDB, with Lauterbach’s TRACE32® suite of embedded development tools. This means companies can use the same tools to debug both C/C++ application code on Linux and Android and embedded code, improving productivity and speeding up the debug process.
Lauterbach’s TRACE32 suite provides integrated debug environments for embedded designs. TRACE32 supports all the most common microprocessor architectures in use in the embedded market and is available with dedicated hardware components. Its common user interface and a joint system bus provide a seamless integration of all tools into the debug environment. Lauterbach customers can now access UndoDB through the TRACE32 GUI, which acts as a debug front-end, providing the power of reversible debugging through Lauterbach’s advanced yet familiar and proven interface across the entire development process.
The partnership will also enable Lauterbach to target new, non-embedded markets, such as developers of games and mobile apps as it allows use of some of the advanced features of TRACE32 but without the need to use additional embedded debugging hardware when writing user-level application code.
The integrated solution was demonstrated on both companies’ stands at Embedded World 2015, held between 24-26 February 2015.