The Embedded Developer is Dead – Long Live the Embedded Developer!

Posted by Magnus Unemyr on Jul 12, 2017 5:13:50 PM

Most industries change over time, and some are even significantly disrupted. I would argue the embedded industry is quite conservative and resistant to change. For example, in spite of all the hardware and connectivity changes over the last 20 years the tasks of an embedded developer haven’t changed much.

Read More

Topics: Embedded Software Development

Find Tricky Bugs With a Stack-Depth Analyzer [Cortex-M development with GCC]

Posted by Magnus Unemyr on Feb 2, 2017 10:48:17 AM

Embedded systems often include bugs developers have a hard time to find. One common cause of such tricky bugs are stacks that grow beyond their dedicated memory area, thus causing unpredictable behavior and a malfunctioning system. 

This is because the stack can overwrite important variable values, that thus inadvertently get the wrong value. Alternatively, a variable overwrite the stack, as the stack has expanded into the memory area dedicated to that variable. Upon the next function call return, the software crashes as it returns to the wrong location (the return address is stored on the overwritten stack and execution continues on a random location). Due to these reasons, stack related bugs often appear to be completely random, in most cases making them incredibly difficult to find.

If you use an RTOS running parallel tasks, these problems can multiply. Each task has its own stack, and with more tasks, you get more stacks that can cause stack related bugs. The stack depth analyzer in TrueSTUDIO Pro can help resolve such problems and help develop more robust systems. Read this blog post to learn more on analyzing the stack usage on Cortex-M systems developed with the GNU GCC compiler in TrueSTUDIO!

Read More

Topics: GNU tools (GCC/GDB), Software quality, Atollic TrueSTUDIO, Embedded Software Development

How To Debug the GNU LD Linker Configuration File [ARM Cortex-M Development]

Posted by Magnus Unemyr on Jan 11, 2017 9:00:00 AM

One of the most confusing things in embedded development can be the linker configuration files. Their grammar looks like something from the dark ages, and tends to genuinely confuse even seasoned software developers.

This is a bad thing since the linker configuration file is a common source of problems. To understand what the linker did to your code, you can study the MAP file, which is also hard to understand and cumbersome to use, so few developers do it. A build analyzer tool can come to your rescue and make you a more efficient developer!

Read More

Topics: GNU tools (GCC/GDB), Atollic TrueSTUDIO, Embedded Software Development

How the Right Tools can Help Embedded Consultants and Contractors Improve Their Business [Make Money Developing for ARM Cortex-M]

Posted by Magnus Unemyr on Jan 4, 2017 10:00:00 AM

When meeting embedded developers at seminars and trade shows, it becomes clear that many are consultants or contractors that help their customers develop new embedded systems. You may be one too.

It can be argued that all embedded developers struggle with more or less the same problems, and share similar pain points. From a technical point of view, this may be so. But, it is also true that developers from different organizational backgrounds need different things from their embedded tools. In particular, I believe consultants and contractors need a tool supplier that enables not only technical success but also business success.

Read More

Topics: Atollic TrueSTUDIO, Embedded Software Development

How a Bootloader Saved My Christmas Holiday

Posted by Magnus Unemyr on Dec 30, 2016 10:58:41 AM

It is the time of the year when we all spend time with our family and friends. A great time for sure, and a rare opportunity to meet family members who live far away. Working in the software industry, it is quite common that older and less technology-versed family members ask for help with their computers or electronic gadgets during the Christmas break.

This year was no different; two of my retired family members had technology-related problems waiting for me to solve. In one of the cases, the problem was easily solved using a quick Google search. In the other case, I inadvertently transformed a GPS navigator into a useless brick. No matter what I did, it wouldn't come to life. How embarrassing! As it turns out, a bootloader came to my rescue and saved my face. You might need one too!

Read More

Topics: Embedded Software Development

Using TrueSTUDIO in Larger Organizations: Tool Stability Matters [for Development Managers, part 2]

Posted by Magnus Unemyr on Dec 7, 2016 2:39:02 PM

You are probably all too aware of how complex today's software products can be, and the difficulty to ensure no tricky bugs sneak into them. Development tools are no different. The GNU GCC compiler project for example, consist of some 10 million lines of source code. Proprietary compilers from traditional tool vendors are complex software products too.

This is where open-source projects, like the Eclipse IDE or the GNU GCC/GDB compiler and debugger projects really shine. With the source code open for anyone to study and improve, these tools get so many more eyes on the code a proprietary development team just can't come close to match. This helps improve quality and tool stability. Learn more in this blog post!

Read More

Topics: Embedded Software Development

Using TrueSTUDIO in Larger Organizations: The Benefits of Standardization [for Development Managers, part 1]

Posted by Magnus Unemyr on Dec 6, 2016 1:33:17 PM

As the complexity of embedded development projects increase, engineering managers are increasingly pressured to find cost-effective development tools that help ensure project success, while at the same time supporting the shorter and shorter project schedules that seems to be the norm these days.

For a development- or project manager, it is critically important the team uses the right tools. Making the wrong tool choice can disrupt any embedded project, resulting in inferior software quality, launch date delays, or cost overruns. Read this blog post to learn how standardization can help out.

Read More

Topics: Embedded Software Development

Do embedded developers need to worry more about security now? [in the after-math of the Dyn DDoS attack]

Posted by Magnus Unemyr on Oct 31, 2016 8:30:00 AM

Internet security has been a focused area for PC’s and servers during the past two decades, if not more. So far, most embedded systems haven’t been connected to the Internet, and so Internet security has not been such a major problem for embedded developers. Up till now.

Internet of Things is exploding, with billions of Internet-connected devices predicted in the near future. A major security incident caused by an IoT product was only waiting to happen. And the first major security threat on a global scale - caused by IoT devices - may have been seen last week.

Read More

Topics: Embedded Software Development

Why every Cortex-M developer should consider using a bootloader

Posted by Magnus Unemyr on Oct 28, 2016 8:30:00 AM

Many embedded systems are statically configured, i.e. the software cannot be easily upgraded once delivered. This can cause all sorts of problems. It is clearly very useful if the software can be upgraded “in-the-field”, preferably by the end-user himself.

Consider, for example, a situation where you find critical bugs. Or you need to make security upgrades. Or just add new features. It is very inconvenient to make a large-scale product recall. Having a bootloader in your product is the way to go to overcome these problems. But how do you create a bootloader in an ARM Cortex-M system? This blog post explains how.

Read More

Topics: Embedded Software Development, System design concepts

8 debugging techniques every ARM developer should use

Posted by Magnus Unemyr on Oct 27, 2016 8:30:00 AM

I remember the old times. Debugging was mostly made using printf()-output that was redirected to a UART channel and a serial cable hooked up to a terminal window on the PC. This technique was however too slow when debugging interrupt handlers, so I had to toggle a LED or set a digital I/O pin and let the oscilloscope visualize its value, to see what happened inside the interrupt handler.

Sometimes, a rudimentary debugger with run-stop-step debugging was available, but not always. In a historical perspective, this was not so long ago, although younger developers will probably think it was during the medieval times. Luckily, modern developers now enjoy much better tools to look into the target system and debug it. In this blog post, I summarize my best advice for ARM Cortex-M debugging. I have saved my best advice to the very end!

Read More

Topics: Debugging, Embedded Software Development

Why more meetings can make your code better [software quality for embedded systems]

Posted by Magnus Unemyr on Oct 26, 2016 7:55:23 AM

A major problem in the embedded systems industry of today is inferior software quality, which is much more costly and difficult to address in embedded systems that has been deployed in the field, compared to PC or mobile applications that typically can download new releases automatically from the Internet.

Several approaches are available to improve software quality. One of the cheapest and most effective is to perform source code reviews, where developers study each other’s source code and point out potential problems already at the development stage. By deploying methods and tools outlined in this blog post, you and your team can delivery higher quality software with less effort.

Read More

Topics: Software quality, Atollic TrueSTUDIO, Embedded Software Development

Device Driver Development: The Ultimate Guide For Embedded System Developers

Posted by Magnus Unemyr on Oct 21, 2016 4:29:12 PM

One of many difficulties in embedded systems development is hardware dependencies. A software developer targeting PC/web/mobile platforms generally doesn’t need to understand the hardware, at least not in any detail. To an embedded systems developer, this is critical.

In this blog post, I will explain how embedded software interacts with the hardware to get access to, and to control various hardware resources called peripheral modules. These can be timers, A/D or D/A converters, digital I/O, LCD display controllers, and much more. To use hardware resources like these, you will have to write device drivers, also known as a HAL (hardware abstraction layer).

Read More

Topics: Embedded Software Development