We know that microcontroller can be programmed like we do with Arduino, also some micro controllers can run special versions of operating systems including Linux. or Run OS. What is Difference Between Linux-Based Embedded System Vs Microcontroller-Based Embedded System? It obvious that Linux system will be much more power hungry and not friend to battery, also may require cooling, and total thing is costly. For working on Linux-based embedded developmental boards, this idea needed for various reasons.
Linux-Based Embedded System Vs Microcontroller-Based Embedded System
Linux is also not a true RTOS. There is difference between embedded Linux and RTOS. So implementing precise timing for various protocols and interfaces may be difficult. If your embedded system is meant to do a single task or a small set of task repeatedly, ordinary microcontroller does that job. But, if you are building a smarter robot, not only you need a system with more powerful processor, but you’ll want the system to have more robust programming platform which supports advanced 3rd party libraries. This is where question of Linux based or other OS based embedded system arrives. Real-time OSes provide an upper bound to the time it takes to complete an application task. Systems utilize hardware elements like Watchdog timers.
Programming a microcontroller is like writing own operating system and the application on that operating system. This becomes a difficult task, especially if the application is complex. But if the application is simple, it makes a sense, since you will not at least some of the functionalities of an OS. All you need is to control a stepper motor or LED display, that is easy.
Microcontrollers are very simple devices, have limited memory, a lot of on-board peripherals, maybe DMA and most definitely a single core, no MMU, so all your memory is on-chip.
But in some cases your application is too large to need to use of an OS, which provides thread scheduling, I/O, interrupt handling, data protection etc. Such minimal OSes are like FreeRTOS which are nano kernels, providing just the bare minimum necessities. Your application is like integrated with the kernel.
For a fully operational operating system, you have hardware options like LPC Dual-Core MCUs ARM Cortex-M0 & M4F|NXP where on-board peripherals and memory, and additional memory and peripherals can be added. The advantage of these systems is that the hardware design is simple as RAM and program memory living on board the chip. So things are much simpler interfaces than on a full blown microprocessor. For such hardware, you will definitely want an OS. But with less powerful processing element, you need a scaled down version of the OS, where the question of using uCLinux arises.
Traditional Linux is a poor choice in real-time applications, since the kernel is not a Real-time Pre-emptive kernel. We can use RTLinux or RTAI or can use an RTOS like QNX Neutrino. A pure Linux system would have many things against various real-time systems in real life.