Seeing the terms 'Linux/WinCE' in the same sentence as '8-bit probably comes as a surprise to most people. As the title, 'It takes two to tango' suggests, 8-bit microcontroller units (MCUs) can actually make Linux and WinCE software application development easier. The trick is to divide and conquer the job. First, you have a high-performance microprocessor, such as a Freescale i.MX or Power Architecture host processor, which executes a powerful OS. Next, you have the real-time bare metal code execute on an 8- or 32-bit MCU. The overall system, while more complex, is actually easier for developing and maintaining software.
The key to simplifying a design by adding an MCU is synergy. The MCU must add to the solution, enough to offset the additional cost of the silicon. If the problem is looked at from a purely hardware point of view, it’s hard to see an advantage. It’s only when the software is taken into consideration that the benefits of having the additional silicon is revealed. The software benefits are most apparent when the design calls for real-time I/O or lots of general-purpose I/O.
The addition of Freescale ports of Linux, Android, or WinCE to your system design are many. These operating systems offer great graphical interfaces, media playback capability, and powerful communications stacks. The list goes on and on. To read more about using Android in the industrial space, check out this blog. Although debatable, what Linux and WinCE lack is true real-time support. For the sake of this discussion, when I say real-time, I mean that the latency in response to hardware events is in microseconds.
Real-time is exactly what MCUs excel at. Equipped with peripherals dedicated to do as much real-time processing as possible in hardware, modern MCUs are the perfect solution for the hard timing requirements of most electromechanical systems. Motor control and motion sensing are common design requirements for industrial systems. These design requirements are also perfect examples of where MCUs can significantly simplify the software design.
When working with multiple processors, managing the communications between them is a critical design challenge. Modern application processors have tackled this problem by integrating multiple communication peripherals on-chip, including advanced communication peripherals like Ethernet and USB. Of-course the prerequisite peripherals such as the UART, I2C, and SPI are present. The free public source Linux, Android, and WinCE BSP’s from Freescale include drivers for I2C, SPI. USB host and device profiles are also available. Using these drivers makes communicating with the MCUs easy via a user space application. On the MCU side, Freescale provides free communication stacks for Ethernet and USB peripherals.