Back in 80s, a lot of manufacturers worked on introduction of handheld PCs (or pocket PCs). These devices started their
life with introduction of products like Psion's organizer (no touch screen, but considered as one of the first of its kind). Then other products were introduced,
like Apple's Newton, IBM Simon, Nokia 9000 communicator, etc.These devices were called personal digital assistants or PDAs. These PDAs used various operating systems - EPOC16, PalmOS (Psion), Newton OS (Apple), PEN/GEOS 3.0, Symbian (Nokia), Windows CE, etc.
Most important features of the PDAs were:
- touchscreen (sometimes combined with a special pen)
- data storage
- wireless connectivity (IrDA, Wi-Fi, Bluetooth)
- wired connectivity (UARTs, USB, more rarely proprietary interfaces)
- synchronisation with desktop PCs, etc.
In parallel, the development of mobile phones added more and more functionality to them (mostly borrowing from the PDAs set of features).
The expanded functionality of the phones posed the need to use some more sofisticated operating systems. These operating systems were called mobile operating
systems due to their specific focus on mobile phones. The mobile phones, which use operating system are called smartphones.
When Apple introduced their iPhone (in 2007), they also introduced their proprietary OS - iOS.
In 2010 Google bought Android Inc. and thus got Android OS, which they continued to develop. Android OS was focused on mobile phones almost from the foundation of
Android Inc. company.
On the other hand, when Microsoft purchased mobile phone business from Nokia, they introduced range of smartphones running Windows phone OS. It worth to mention
that we can find roots of Windows phone OS (known before that as Windows mobile OS) back in Windows CE.
We can say that now the smartphones combined all the features of a PDA with wireless phone functions.
Together with the smartphones we saw the rise of tablets in the recent years. Most advanced of them combine the functionality of laptop with a mobile phone. They provide big touchscreens and powerfull CPUs, so to meet the computing and communication needs of the customer in one device. Almost all tables on the market use the same OSs like the smartphones.
As of 2023, there are two major mobile phone OSs left on the market. They are iOS and Android. While iOS is used exclusively by Apple for their products, the Android OS is free and is used by all other smartphone manufacturers.
The widespread use of Android also means that there is a huge variety of platforms, tools and applications, which are available. A lot of newly introduced system
on chips (SoCs) and system on modules (SoMs) have support for Android. Android OS may have started as OS focused on smartphones, but now it also can be found in
IoT devices and various embedded devices.
We can say that no Android OS is used by smartphones, tablets, Set-top-boxes, IoT devices, consumer electronics (like cameras, etc.).
Various versions of Android OS run on ARM, x86, x86-64 and RISC-V platforms.
Android OS uses customized Linux kernel. Then it adds all the necessary software on top of it to provide the functionality we are all used with.
According to Wikipedia: "Android is known as Android Open Source Project (AOSP) and is free and open-source software (FOSS) primarily licensed under the
Apache License.". However Android ecosystems are provided by various suppliers. The most notable suppplier is Google Inc. Google provides application store,
along with other important parts of the ecosystem. Most of the smartphones/tablets manufacturers use AOSP with Google ecosystem and add customized UI on top,
so to provide their unique user experience to their customers.
Building an Android device usually includes several steps:
1. Chosing CPU platform.
2. Design HW on top of the cosen CPU platform.
3.Customize Android OS for this platform. Bring up the device.
3.1. Use CPU manufacturer provided bootloader and relevant configurations. Usually this is U-Boot bootloader. Add speciffic settings on top of it.4. Optionally, implement dedicated Android application to deal with specific device functionality.
3.2. Use CPU manufacturer provided configurations for Kernel and Android OS fs, etc. Add speciffic settings on top of it.
3.3. Use CPU manufacturer provided device tree definitions as a base and add, if necessary, speciffic settings.
3.4. If needed, implement missing drivers to handle the device HW functionality.
With regards to the above described process, Mina soft focuses on points 3 and 4 and provides outsourcing services in these areas.