When purchasing an off-the-shelf module or designing a customized module of your own using a design tool like Upverter (previously known as Geppetto), you have to select an operating system. Often, you have a variety of choices. Two popular open source software (OSS) platforms are Linux and Android. If you’re new to design, how do you know which one you want to use?
There are complicated, highly technical answers to this question. However, if you are like many designers, you don’t really care about what’s going under the hood of the operating system. You need a certain level of functionality and just want to know which OS will serve you best. With this in mind, let’s take a simple look at Linux and Android without sweating the details.
First, Android sits on top of Linux. If you’re working with a software image that you upload to your module, then this doesn’t change much other than the size of the image and some of the configuration options. Again, this is an oversimplification, but uploading a software image is uploading a software image.
The difference that you’ll likely care about is what each of these platforms does for you. Being on the bottom, Linux is closer to the hardware and gives you more control. In fact, you’ll have absolute control over software and hardware. You’ll be able to do things like access I/O pins directly. If your application needs to manipulate hardware, Linux is likely your best option.
Let’s consider some specific application capabilities. If your design has IoT gateway capabilities or is for the home automation market, and you are not dealing with a complex user interface, Linux does a fine job. Server-based applications, such as a consolidate nodes for multiple sensors, is also a solid Linux application.
Being on top, Android is more about functionality. Android is user-interface based. It was intended for phones, and the platform is based on visual representation. If your device is going to have a big screen and/or touch capabilities, Android is likely your best option.
You might be able to stop reading right here. Need an intuitive interface? Choose Android. Otherwise, you’ll likely have an easier time interfacing with hardware using Linux.
If your application isn’t so easy to characterize, you might need to consider a bit deeper. Another difference between Linux and Android is the way system resource permissions is allocated. With Linux, permission to access the system, its software, and its hardware, is user-based. With Android, permission is application-based. Effectively, applications are the users, and they have permission to use certain hardware and other software.
For some, this seems like a subtle difference. Which to choose depends upon how you want to interact with the system. For example, do you want to open a channel to the Internet (Android) or do you want to control a Bluetooth radio (Linux)? In summary, the closer you want to be to the hardware, the more likely you’ll want to use Linux.
Take a look at some Gumstix customer success stories or contact us today to learn more about their products, design tools, and services. Or try out Upverter, their customized module design tool, for yourself.