5 Tips for speeding firmware development
A quick time to market can be vital to ensuring a product's success. So, the pressure to deliver embedded software projects within short development times can be high among start-ups and small businesses. Here are five tips for speeding firmware development that, although they might seem obvious, are rarely implemented in practice.
Tip #1 – Set a realistic schedule – I have encountered dozens of projects in the last couple of years where developers are automatically weeks behind schedule the moment the project starts. Management ignores functional complexity and technical hurdles and draws a line in the sand as the deadline of impending doom if the product is not completed by the selected date.
The problem with always being behind the eight ball is that the developers tend to be stressed out. When in a stressful situation, the human body releases cortisol into the brain. Cortisol has the effect of diminishing the effectiveness of reasoning and judgment! Not exactly what you want to be happening with your engineering team that needs to be at their peak to meet a deadline. Setting a reasonable schedule can help decrease stress, making engineers more effective. It might even allow the project to be completed on schedule.
Tip #2 – Develop an architecture first – When deadlines are short most developers' first instinct is to ditch the project's design and architecture phase and jump right into the software implementation phase. The thinking is that having a documented software architecture is nice, but it takes too much time. And time is in short supply.
The problem with this approach is that in order to speed up implementation, developers need to properly think through the design and to plan what they are building. The architecture is the blueprint of the software. A builder wouldn’t attempt to construct a building without a blueprint and a developer shouldn’t attempt to write firmware without one either!
Tip #3 – Don’t roll your own scheduler – Writing a real-time scheduler or RTOS can be an exciting and rewarding endeavor for an embedded developer. The problem with developing a scheduler from scratch, though, is that proving that the scheduler behaves properly under all operating conditions is not a trivial endeavor. A developer can waste a lot of time reinventing a firmware component that already exists in the dozens of RTOSes on the market. Some RTOSes, such as FreeRTOS, are free of charge while others require only a minor expense. Using a commercially-off-the-shelf scheduler instead of writing one can decrease development time and may also drastically improve the system's quality and reliability.
Tip #4 – Leverage existing middleware and driver frameworks – Microcontrollers have become extremely complicated devices, now much like the general computer processing units of the mid 90’s. High end microcontrollers have on-board cache, DMA, and a host of peripherals and run at clock rates in excess of 200 MHz. Starting from scratch in developing drivers for these complex devices will take a long time.
Instead of attempting to master the microcontroller hardware, focus on finding vendor drivers and third-party components that abstract the hardware and assist in jump starting the implementation stage. Leveraging existing middleware and driver frameworks allows developers to focus on the product differentiators and features rather than concerning themselves with how the hardware works.
Tip #5 – Use subject matter experts – Engineers are a very intelligent bunch and can do just about anything. The problem is that sometimes doing that anything can take a long time if the engineer doesn’t already have experience in the application area.
When time is short, don’t put an inexperienced rookie on the project. Instead, opt for a subject matter expert. Using a subject matter expert may seem obvious, but when timing gets tough many teams simply throw bodies at a project – ANY body – and the real result is a loss of traction and delayed deliverables. It may cost more monetarily in the short term to use a subject matter expert, but the long term benefits of having the project delivered on time and functionally correct will far outweigh that cost.
Final thoughts: When it comes to tips on how to decrease project time pressure and deliver projects on time, one might feel that I've done nothing more than stating the obvious. These five tips seem like common sense. But when the pressure is on, common sense often gets thrown out the window. Only careful disciplined engineers and teams keep their heads on straight and will follow these common sense tips.
When timelines are short, which of these tips do you follow and which do you throw out the window?
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. Feel free to contact him at firstname.lastname@example.org, at his website www.beningo.com, and sign-up for his monthly Embedded Bytes Newsletter here.