Didier's recent blog, Moving Code From 8051 to ARM, raises an interesting question: What is the role of 8-bit MCUs in the emerging Internet of Things (IoT)? Your instincts may say that the IoT needs 32-bit power, but that depends on what you're trying to do.
If your MCU-based design is to connect to the Internet in some way, one of the core things you will need is the TCP/IP protocol for communications to the network. For 8-bit MCUs, there are several ways you can obtain this capability. Certainly the easiest from a programming standpoint is to use an add-on communications module that handles the network and interacts with the MCU through a simple serial connection.
A wide variety of such modules is available. TI, for instance, offers the Stellaris Serial-to-Ethernet module that provides such functions as a Web server and the ability to obtain dynamic IP addresses. For WiFi connectivity, there are modules like the Digi XBee. Cellular Internet connectivity can be implemented using one of the available modules for CDMA, GSM, or LTE networks, like the ones from Adaptive Modules.
Modules like this one from TI can be one way of adding Internet connectivity to 8-bit designs.
The problem with such modules, though, is that they were designed to bring connectivity to existing products and designs. They have their own MCU at their core, often a 32-bit device, and are relatively expensive for the typical cost-conscious 8-bit application. If you're creating a new design, it seems terribly inefficient to use an 8-bit device for the application and a separate 32-bit MCU to handle communications. Integrating all the functions into a single device seems the more logical solution.
Fortunately, implementing a TCP/IP protocol on an 8-bit MCU is a very viable possibility. ARM's Keil tool division offers a number of alternatives for TCP/IP on 8051 devices. Atmel has a full appnote on implementing not only TCP/IP but a full Web server on its AVR MCUs.
Academia has also provided solutions to 8-bit TCP/IP. The Swedish Institute of Computer Science, for instance, has both authored papers addressing the challenge and created an open-source stack, the uIP. More recently, India's SASTRA University presented its mini TCP/IP in a paper for the Journal of Theoretical and Applied Information Technology.
But becoming part of the IoT requires a design to have more than just connectivity. Increasingly, IoT devices need to address the issues of security. That connection to the network is an open door for miscreants to steal data, usurp control, or create a tunnel past a network firewall using the IoT device.
True, security does not have to be implemented at the IoT device level. Higher-level devices such as a gateway or server can provide security functions. But implementing security at every node in the network, endpoints included, provides the greatest measure of protection.
There are many aspects of security that need consideration in an IoT device design. The communications over the network should, of course, be secured through encryption. But there may also be a need to provide encryption in MCU memory, tamper detection, authentication for data the device sends, and validation of commands received.
The security needs of the IoT could be what ultimately pushes 8-bit devices out of that market. Combined with the communications protocols, encryption, and other security protocols may prove too much for an 8-bit to handle, despite the best efforts of clever programmers. They simply take up too much code space and too many clock cycles.
The question then is, will your current 8-bit product need to become network connected sometime in its next few upgrades? If so, you might want to do like Didier and begin learning about 32-bit devices now.