Real-time Embedded Linux and POSIX RTOSs For Microcontrollers (MCUs)

Thursday, August 4, 2011

Myopic MCU Software Approaches - Part 1

I talk to people doing MCU software everyday and the variance in the skill set and understanding of the key issues is large. I spend my days educating others on what is really important for their product development and companies in terms of MCU software.

With an MBA and an MEng along with 25 years of experience applying these skills in embedded software, I have an advantage over most others. I've been there and done that 100 times and seen all the mistakes several times. For the next few weeks, I thought that I would highlight the repeated mistakes I see others making in the marketplace.

The biggest mistake that I see is that technical people often don't understand the effects of time to market. Even very experienced and accomplished managers who apparently understand time to market often miss apply this knowledge because the decision criteria are complex.

Basic ideas on Time to Market costs are found here.

On a company basis, managers have to plan for Total Cost of Ownership minimization for lines of products. This involves lean product development or a platform based approach. This approach should not lock them into a single vendor if done correctly, or may do that but with unlimited rights, it is not expected to be an issue for many years. Most understand and strive towards this but fail to make sure that the decision minimizes time to market for upcoming projects.

Often, managers don't understand software engineering. Their experience is in hardware and are less familiar with software due to the technology shift in the market. Some managers know enough to listen and others do not. By using open standards in software, we have learned for the past 30 years that costs are minimized because we can quickly adapt the software to fit new customer requirements. This leads directly to minimal time to market for development. It is an often missed issue.

The reasons people use for locking their company into a single vendor, proprietary solution are varied. Generally they ignore Total Cost of Ownership and Time to Market. Here is a sample:

- The operating system is free with MCU-X and it is so expensive from other vendors we should just do this and the overall project cost will be minimal. This ignores the cost of training and development for a proprietary system as well as the main benefits of open systems - software reuse.

- We don't need an operating system - the application is simple. Here, the manager is thinking about past implementations on MCUs where the software was minimal. This is not the case today. As users demand new features, the lack of operating system will push out time to market and hamper the introduction of competitive features.

- A kernel is an operating system. Actually, most don't even know the difference between a kernel and an operating system. They start with a kernel, which the vendor may call an operating system even when its not, and then find out later that they are wasting many person years of time because they did not get the correct platform to develop their products. An operating system includes a complete set of standardized I/O modules and drivers along with other libraries to provide high level abstractions which eliminate many person months of effort.

- Performance of the kernel/operating system doesn't matter, they are all the same. Driven by hardware oriented thinking, software performance is often ignored. Managers are unaware that the cost of optimization for a specific function is often 10X the cost of a non optimized solution. Out of the box modules optimized for size and performance can save huge amounts of time, minimizing time to market. If the kernel is inefficient, this inefficiency can drive performance optimization everywhere with big delays and lost market share.

- We don't need feature X today; a minimal solution is enough, we will add it later. Although this is apparently a good choice today, the long term cost of adding feature X may be significant. By using an operating system which has provisions for adding a broad set of features, time to market is minimized as customers demand new and unexpected features.

By simply planning ahead and using the same ideas that have minimized time to market and total cost of ownership for larger systems, optimal results can be achieved for MCU based products as well. Here is a short list of things to do in order to minimize time to market and total cost of ownership for your product line.

- Use mainstream languages and tools.
- Use open standards where practical.
- Pay attention to off the shelf solutions which minimize time. The cost of purchase is far less than the cost of development in 99% of cases if time to market is considered.
- Fight not invented here - software reuse is your friend while in house development is extremely expensive.
- You can use an OS provided by a vendor, just make sure you have hardware options and other sources for the OS to avoid lock in.
- Get off the shelf features if possible.
- Planning is required even with a few developers. Make a good project plan.


-

No comments: