How to simplify your embedded development project
When undertaking a new embedded development project, you may face two significant challenges: selecting a microcontroller (MCU) that meets your application’s needs, and implementing your design by writing firmware for the target MCU.
To further complicate the development process, energy-conscious applications must meet strict power-budget requirements that normally require extensive knowledge of the intricate inner workings of an MCU. In the current embedded market, learning how to use and configure an MCU can often take more time than what is allotted for the development project.
To make matters more challenging, configuring an MCU to meet advertised data sheet specifications can be an extremely tedious and complex task as MCU vendors advertise power numbers that are not easily reproducible. These factors all combine to make embedded development more complicated than it needs to be. MCU developers should be able to leverage new, innovative MCU designs in their applications to create optimal embedded solutions. 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. Longer battery life can reduce end product costs and give the product an edge over the competition.
The best way to accomplish such tasks is to use a comprehensive development platform, not just an integrated development environment (IDE). First, let’s define the criteria for a “comprehensive development platform” (Figure 1) as follows:
- Complete and educational view of available products
- Quick and easy way to order or sample a device or kit
- Ability to configure, develop, analyze and optimize code for a target MCU
- Technical resources for development hiccups
- Automatic updates to provide the most up-to-date documentation, software, and examples
Software tools that provide solutions to the criteria above can simplify the development process and reduce time to market. Let’s take a look at how the first development challenge (complete and educational view of available products) fits into the comprehensive development platform.
First, developers must identify an MCU that meets the specifications for a new application. 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 searching for a target device, developers typically have several design requirements for a system that can help guide their search.
For example, a battery-powered application may require an energy-friendly MCU that can extend the battery life as much as possible while also providing a fast and efficient core that can handle computationally intensive operations. A battery-powered smart watch is a good example of this type of power-sensitive application.
In this example, the developer could narrow the search to ARM Cortex-M3 MCUs that are optimized for ultra-low-power operation. This narrows the search to a handful of vendors, but still leaves questions open for which specific device to use. To help developers quickly narrow their search, a comprehensive development platform should include some form of a search tool or educational resources to help educate developers on a given MCU portfolio.
Today’s leading MCU suppliers offer extensive MCU portfolios, making it challenging to identify the optimal MCU product for an embedded application. A searchable MCU development tool can help developers narrow their search to 10 to 20 MCUs after a few clicks of a mouse.
After identifying the ideal MCU solution, developers must consider development cost and development time associated with the 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 our previous example, reducing power consumption in a battery-powered application can extend battery life, improving performance and reducing costs. In this example, it may be beneficial for developers to use a more energy-efficient device.
Use an intuitive, graphical configuration tool that configures the MCU
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 (Figure 2) 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 universal asynchronous receiver/transmitter (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.
After finalizing MCU and peripheral configuration code, developers can turn their attention to optimization. Software-optimization 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 optimize 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 profile the application (Figure 3) to 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 optimizations. Again, this “energy-aware” capability can be especially critical in battery-powered applications where every micro amp and even nano amp 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 applications 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 documentations, and software at all times. Ideally, a software development tool will provide with all the required support in one location. After solving these issues, developers move on to production-related questions.
Simplifying embedded development
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. 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. In addition, 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.
When identifying potential MCUs for a new application, embedded developers should not overlook the importance of software development tools, which can simplify the development process and enable the most energy-efficient applications. Developers should identify a comprehensive development ecosystem that is easy-to-use and provides all the resources they need from initial concept to final product in a single software package. The ideal development ecosystem helps the embedded designer identify target MCUs for a given application, helps developers create energy-friendly applications, and reduces development time and time to market.
Evan Schulz is a microcontroller product manager at Silicon Labs. The company provides a comprehensive development ecosystem for its 32-bit and 8-bit MCUs called Simplicity Studio, downloadable at no charge. He currently focuses on Silicon Labs’ MCU and Smart Interface USB Bridge portfolios. Previously serving as an applications engineer in the company’s MCU group, Mr. Schulz joined Silicon Labs in 2008 as an associate applications engineer. He holds a bachelor’s degree in Electrical Engineering from the University of Texas at Austin.