Simplifying your embedded development project
Design starts with the very first choice made; now software tools can help engineers make that an informed choice.
By Greg Hodgson, MCU Marketing Director, Silicon Labs.
Two of the biggest challenges encountered when undertaking a new embedded development project are selecting the MCU that meets all the application requirements, and then implementing the design by writing the necessary firmware for that target MCU. This is further complicated by considerations for energy-conscious applications that must meet strict power-budget requirements; something that normally requires extensive knowledge of the intricate inner workings of an MCU.
In the current embedded market, learning to use and configure a new MCU can take more time than allowed for in a routine project plan. Added to which, configuring an MCU to achieve data sheet performance specifications, especially headline power numbers, can be tedious and often seems to make embedded development more complicated than it ought to be. Ideally, MCU developers should be able to leverage new, innovative MCU designs in their applications to create optimal embedded solutions with ease. For example, a low-power MCU should be easily configurable to achieve the lowest power operation, enabling the longest battery life for a given application, as this can reduce end product costs and give the product an edge over the competition.
The solution to this perennial dilemma is a comprehensive development ecosystem, one that goes beyond the offerings of MCU vendors that pay lip service to the concept of an IDE. Key elements of such an ecosystem include the ability to view all available products in a way that enables developers to quickly narrow their search by first understanding the features common to a family of MCUs before making a final selection based on more specific attributes. It should then be quick and easy to obtain a sample device or application board for evaluation purposes. Beyond this the software tools to configure, develop, analyse and optimise code for a target MCU are vital, as are the technical resources to support development by providing answers to commonly encountered problems, along with example application code. Providing automatic software updates and the most up-to-date documentation are naturally pre-requisite.
Choose your MCU
The enormous selection of MCU products available to developers in today’s market can seem overwhelming, and finding the ideal MCU can be a tough task. When trying to identify a target device, developers typically have several design requirements for their system that can guide their search. For example, a battery-powered application such as a smart watch may require an energy-friendly MCU that can extend the battery life as much as possible while also providing a fast and efficient core to handle computationally intensive operations. This might lead the developer to conclude that ARM Cortex-M3 MCUs, which are optimised for ultra-low-power operation, might be suitable. This narrows the search to a handful of vendors but still presents questions about which specific device to use. This is where a searchable MCU development tool, such as Silicon Labs’ Simplicity Studio, with associated educational resources can help developers narrow their search to just a dozen or so MCUs after a few clicks of a mouse.
Figure 1 - Silicon Labs’ Simplicity Studio
After identifying the ideal MCU solution, developers must consider the development cost and development time associated with a new MCU. Obviously, using a known MCU requires less development resources, however, new MCUs may be able to achieve significantly higher performance or less power consumption. Continuing with the previous example, reducing power consumption in a battery-powered application can extend battery life, improve performance and reduce costs. In this case, it may be beneficial for developers to use a more energy-efficient device.
Ideally, development tools will provide a graphical interface that doesn’t require developers to tediously read data sheets or application notes to determine how to correctly use a device. A software platform should abstract those complexities and instead provide developers with a portal to configure the device via checkboxes, drop-down menus and text fields. Although this seems like a simple concept on the surface, development tools with this capability can significantly streamline design time, reducing time to market. In addition to providing guidance, these software tools can provide error checking and intelligence through calculators that further ease the development process.
Graphical configuration tools should be able to resolve errors associated with pin configurations (pin out conflicts or mode settings), clock gating (if a peripheral is configured without enabling a clock to the module), or peripheral configurations. In addition to checking and resolving errors, calculators can also make development easier. For example, configuring a baud rate field on a UART may depend on the system clock and other register settings. Intelligent software tools will abstract that computation, allowing developers to enter the desired baud rate without consulting a data sheet or reference manual.
Figure 2 - Simplicity Studio’s Configurator
Power profiling
After finalising MCU and peripheral configuration code, developers can turn their attention to optimisation. Software-optimisation tools that monitor real-time power consumption can quickly identify portions of code that consume the most power. All applications can benefit from being power conscious and this is especially critical for battery-powered applications. Measuring average power consumption can help tell the entire application’s ‘energy story’, but knowing where the real-time power consumption occurs helps identify where developers can optimise their code. For example, the ability to view a graphical output of current consumption quickly shows if there are any significant increases in consumption. Taking this a step further, having the ability to click on a point in the graph and show the corresponding line of C code associated with that current consumption is extremely valuable to low-power developers. This means that developers can trace spikes in current consumption to specific lines of code and perform optimisations. Again, this ‘energy-aware’ capability can be especially critical in battery-powered applications where every μA or even nA counts.
When driving toward creating a final code image, developers will surely need some form of technical support or design resources. Comprehensive development ecosystems have integrated resource portals that allow developers to reach technical support, community forums, knowledge bases and application notes within a single click. This may seem like a minor point, but when your final code image is due the next week or day and you hit a design issue, quickly finding design support is absolutely critical. You do not want to waste time trying to find the correct support portal. In addition to support channels, providing developers with the most up-to-date information is key to make embedded development simpler. This means that developers will always have the latest code examples, technical documentation and software at all times. Ideally, a software development tool will provide all the required support in one location. After solving these issues, developers can move on to production-related questions.
Figure 3 - Simplicity Studio’s Profiler
A comprehensive development ecosystem can abstract complexities associated with firmware development. Although most developers only look at MCU specifications, software development tools should not be overlooked. Development costs can quickly balloon and impact the overall schedule and costs of a project. MCU vendors that provide everything developers need in a single software platform can simplify the design cycle, reducing development time, development costs and time to market. In today’s competitive environment, an advantage like this cannot be overlooked.
Battery-powered applications benefit from software tools that provide guidance to developers to create the most energy-friendly applications. After all, an MCU’s performance is ultimately limited by the developer. If the developer does not know how to configure a device for the most efficient mode, the capabilities of an MCU are wasted.