 tricky memory bugs and achieve real-time performance.
Compared to Software Software is so much easier to develop because it is always running on known-working hardware. Also, the operating system provides robust and comprehensive tools for running threads, interacting with devices, storing and retrieving data from the filesystem, managing memory, and debugging. So out of the box, software starts with the application where firmware starts with third party code and libraries and require source-code integration.
Putting it Together
If the application is simple (like they were twenty-plus years ago), the same hardware-focused firmware engineer can handle the whole project. However, with more complex chips and more complex software requirements (over-the-air updates, security, TCP/IP stacks, displays, etc), a good firmware engineering teams needs:
- A hardware-focused firmware engineer to tackle hardware design and manufacturing problems
- A microarchitecture-focused firmware engineer to ensure the processor meets the real-time requirements of the application
- An object-oriented-software-focused firmware engineer to design scalable, reusable architectures that can meet the complex software requirements driven by internet connectivity
A very small percentage of firmware developers have a proficiency in the above three categories. Some can do two well. This means your firmware team needs either one very talented engineer or two to three (or more) that can cover the array of skills needed and work well together as a team.
If you are missing a hardware-focused engineer, you will have a hard time getting your firmware to interact with the hardware and may end up with finger pointing between hardware and firmware engineers.
If you are missing the software-focused engineer, you will end up with code that is extremely difficult to maintain and manage long term.
If you are missing the microarchtecure-focused engineer, you will have a hard time getting the microcontroller to do exactly what you want when you want.
When putting it all together is a very difficult and challenging endeavor indeed. I have witnessed projects that are taking many months or even years longer than expected due to these skills not coalescing in the right way.
How Stratify Labs can Help
Stratify Labs licenses and supports a high level operating system for microcontrollers called Stratify OS which turns a firmware problem into a software problem. Unlike other microcontroller operating systems (commonly called an RTOS), Stratify OS completely abstracts the hardware away providing firmware application developers with:
- Device Drivers
- Memory Management
- Debugging Tools
- Automatic over-the-internet updates
- Networking Stacks
Using Stratify OS greatly reduces the firmware skills required to build sophisticated internet connected devices on microcontrollers.
- Complete hardware abstraction minimizes the need for hardware-focused engineers
- Built-in memory and task management negates the need to have microarchitecture-focused enginners
- Supporting hardware-independent applications written in C++ gives object-oriented software programmers the tools they need to be effective
What to do now?
If you are interested in learning more about Stratify OS and how it can streamline your IoT development, please request a demo.