“Everything should be made as simple as possible, but not simpler.”
Thoughts on Novos Environment Selection
The Novos operational environments for embedded systems were created especially for use with microcontrollers such as those found in sensor-based and wearable technology and the Internet of Things (IoT), especially those with small amounts of RAM. Estimates are for billions of the processors used in tens of thousands of applications. The likelihood is high that they will employ many different types of processors, including 8-bit, 16-bit and 32-bit CPUs. It is equally likely that a significant portion of those processors will have constraints on them in either the amount of RAM and ROM they can use but also their power budgets. System design thinking has to keep such constraints in the sights at all times.
The approach to a successful design is dictated by the application’s requirements and the operational environment used as the application’s foundation. Central to the operational environment is how the application uses a single primary resource – the processor. It is rare that one code entity will consume 100% of the processor. Instead, it is usually shared amongst several code entities. The essence of processor sharing is best described as “scheduling”, of which there are many types. Some are simple and some not so simple. Does the application need pre-emptive scheduling? Is a cooperative scheduling policy sufficient? Is deterministic performance necessary? Answers to these and other similar questions will guide a developer to the selection of the best environment.
Is there one environment that will do it all? Probably not. There are many different environments that can and will be used for small applications but a good engineering practice is to use the simplest one with the simplest scheduling policy that fits the application’s requirements. Just follow Albert Einstein’s thinking when he said “Everything should be made as simple as possible, but not simpler.” This dictum makes good sense because simpler environments tend to make development, documentation and testing easier. Taken together, the use of the appropriate scheduling concept in the application greatly improves the probability of achieving a successful result.
Many application developers default to the selection of pre-emptive priority scheduling because that is what is most commonly available from commercial RTOS suppliers. One of the principal goals of the Novos family of operational environments is to provide options for application developers so that they can keep things as simple as possible and still meet the application’s requirements. In many applications, pre-emptive scheduling is not a requirement for success but except for ad hoc environments, it is the only game they know. That’s fine if such an environment makes it possible to meet the temporal requirements of the application’s performance.
The Novos PPS environment offers pre-emptive, priority scheduling and then some. There are four other solid options available to the developer when the application requirements do not require pre-emptive scheduling. From simple Foreground/Background models (Novos FB and Novos EFB) to First Come, First Served scheduling (Novos FCFS) to Round Robin scheduling (Novos RRS), there is a Novos family member that can meet most application requirements for shared usage of a RAM-constrained microcontroller.