Accelerate development of IoT devices
Keywords:embedded systems
Idea #1 – Select an embedded platform
Embedded software engineers have a lot of work to do to get a product connected to the internet: drivers, board support packages, middleware, RTOS integration, web components, and then finally the application code. Starting from scratch or attempting to integrate existing components that weren't designed to work together is not only time consuming, but costly. There are a couple of platforms that have the potential to alleviate some of the time and cost with these tasks. Two that come immediately to mind are the Renesas Synergy Platform and the Electric Imp. These platforms take very different approaches but both allow developers to focus on application development rather than connecting to the internet or writing low level code.
Idea #2 – Adopt an alternative programming language
The C programming language has been entrenched in embedded systems development since the 1970's. The problem with C, and even C++, is that universities and schools no longer teach it! Students and most developers learn an object oriented programming language such as Java or Python. The transition to C from an object oriented language can be mind boggling and the intricate details, quirks and problem points often get overlooked.
The lack of new, professionally trained C developers suggests that either large numbers of developers need to be educated on how to develop software using C or the language of choice needs to be changed. (Feel free to audibly gasp at such an audacious suggestion.) For microcontroller based systems the use of a language such a Micro Python might be an interesting choice. Rather than a large work force of C experts, connected systems can be developed by electrical engineers, or even students with very little formal software training, who can easily develop scripts to run an embedded system.
Idea #3 – Leverage development kits
Developers should write a fairly significant amount of application code using development kits that are all connected together with jumpers rather than on the final target hardware. Ridiculous you may say! The fact of the matter is that out of the dozens of projects I work on each year, the ones that are the most successful, perform most of their proof-of-concept development work using development kits.
The use of development kits removes the question of whether the issue to be resolved is hardware or software related. The development kit can help isolate the issue. Using development costs can also help save tens of thousands of dollars early in the development process of spinning boards. I've seen development teams that rush the design of a PCB in order to get target hardware, only to find that through rushing they made mistakes that waste valuable software developer time (and money). Don't forget, failure is a fact of life, but if failure is to occur we want it to be as soon as possible and hopefully even before expensive hardware is purchased.
Idea #4 – Use modules and frameworks
The day of thinking "I can write all this code from scratch myself" is over. Writing quality code is time consuming and time is of the essence when launching a product. Developers need to set the level of quality they can live with and leverage existing technologies to quickly get to market. For example, why roll your own RTOS when there are dozens of commercially available and proven solutions? Sure it's fun to do but is it practical or necessary in today's market? Select the RTOS that best fits the needs of the application and start writing code immediately!
Idea #5—Don't be afraid to push the envelope
Every now and then an engineer will push the envelope, adopt a new technology, and then get burned. Maybe it was the acceptance of a third party software stack, the use of a hardware module, or some other technology. Whatever the source, the result is that the engineer tells themselves that they won't ever do that again. The problem is that a few years go by, the technology matures, but those who have been burned are still very hesitant to re-examine technology. So engineers continue to develop systems the same way they did before, slow and cost inefficient.
Final thoughts
The on-set of the IoT era is proving to be exciting not only because of the creation of new products but also because of the new techniques becoming available to build those systems. The very way in which embedded systems are being built is beginning to change. Before long, the idea of writing a low level driver or middleware will be as foreign as it is to .NET developer.
About the author
Jacob Beningo is a Certified Software Development Professional (CSDP) whose expertise is in embedded software. He works with companies to decrease costs and time to market while maintaining a quality and robust product.
Related Articles | Editor's Choice |
Visit Asia Webinars to learn about the latest in technology and get practical design tips.