Single Board Computers (SBCs) have existed since well before the Raspberry Pi hit the market in 2012, spawning what seems now like a revolution in compact computing platforms for hobbyists, students, as well as professionals. But what makes an SBC unique? What makes them a class of compact computers in terms of architecture, operating systems, applications, and more? What is the future of single board computers? These questions and plenty more will be discussed in this learning module, which will examine the entire class of SBCs from their origins in the 1970s to the present day.
Upon completion of this module, you will be able to:
PCs or laptops are generally built around a motherboard which holds the CPU and other basic minimum components required for the CPU to run. Based on the defined requirements of each system, other components like HDD, SSD, DVD Drive, SMPS, and Graphics Card are connected to the motherboard. The connection is enabled by industry standard cables and dedicated connectors.
An SBC is a full-fledged computer built upon a single printed circuit board (PCB) with all the required basic components like CPU, Memory, Inputs/Outputs, and additional system components required to meet the full functional requirements of the computing system. Most of the SBC works out of the box, i.e. no additional configuration or setup is required, except connecting it to a power source. Many of them feature eMMC or FLASH memory onboard to accommodate the Operating System, thus eliminating the need to add external memory such as an SD card to run the software.
In order to get to know SBCs better, we will compare SBCs to PCs, microcontroller boards, and other development boards. This comparison will give you a better understanding of the entire class of SBCs.
- 4.1 SBC vs. PC
Compared to PCs, which come in a variety of configurations of processing power and resources, SBCs are limited in terms of computing performance and speed. This limits the kind of applications that can be performed on an SBC, as opposed to a PC that can be scaled and configured for a variety of applications.
SBCs come in very small form factors and are used in space-constrained applications that require lower performance characteristics. An SBC features low power consumption, and hence is used in applications such as battery-operated systems.
PCs are traditionally based on Intel architecture X86 processors from Intel or AMD. Though earlier in their application SBCs used X86 processors, the majority of modern SBCs are based on ARM processors which offer high performance with very low power consumption.
SBCs have limited expansion capability as compared to a PC, where the user can extend its performance by adding elements such as more RAM, SSD, HDD, and GPU. The PC exposes external interfaces like HDMI, USB, and Ethernet. Apart from the interfaces like HDMI, USB, and Ethernet, SBCs provide additional hardware level interfaces like I2C, SPI, CAN, ADC, GPIO, etc., which enables them to be connected to sensors and actuators.
SBCs and PCs feature almost the same functional features like O/S, RAM, Power Management, Connectivity (Ethernet/ Wi-Fi/ Bluetooth), and display interfaces (VGA/HDMI), but what differentiates them are size, power consumption, cost, and performance. Due to the low cost of SBCs, they have become an easy platform to learn programming and electronics as well.
- 4.2 SBC vs Microcontroller Boards
Another comparison of SBCs can be done with microcontroller board platforms such as the Texas Instruments Launchpad, Arduino boards, and NXP Freedom Boards. The SBC ends up on the superior side, since the microcontroller boards have far less processing power and peripherals. The microcontroller boards are based on a variety of architectures like ARM Cortex and PIC clocked at low speeds. The boards designed around these controllers are primarily evaluation boards or development platforms used to design and prototype products around these controllers. They generally feature almost all low-end communication interfaces like I2C, SPI, and UART. They generally lack some high-end connectivity options like Wi-Fi, Ethernet, and Bluetooth, which are more prominent in SBCs. But some of the latest development boards do support such connectivity by adding external dedicated controllers for such interfaces but with lower data throughputs.
An SBC features a full-fledged operating system (OS) and the application layer built on top of the OS uses a variety of programming languages and standard applications available on the OS. Development boards, on the other hand, support a lightweight RTOS, but a majority of applications are built by bare metal programming using C, C++, or any other supported language without an OS. Multi-threading is very common in the case of the SBC, since the OS takes care of the backend operations. In a development platform, the software developer has to take care of resource allocation and management by manual calculations. In terms of power consumption and pricing, development boards are clear winners and hence find applications in battery operated systems. To illustrate the difference between an SBC and a microcontroller board, Table 1 shows a comparison between the Arduino UNO development board and the very popular Raspberry Pi.
|Arduino UNO||Raspberry Pi|
|Controller||Atmega328P-PU Microcontroller||BCM2835/36/37 SOC|
|Clock||Up to 16 MHz||Up to 1.4GHz|
|RAM||Few KB||Up to 1GB|
|GPIO||31 Pin GPIO Header||40 Pin GPIO Header|
|DC Input||Available through GPIOs||Not Available|
|Wi-Fi & Bluetooth||Need External Shields||On Board (3B, 3B+ & 0 W)|
|Ethernet||Need External Shields||On Board (Except A and 0 Models)|
|Operating System||Not Required||Supports Raspbian and Windows 10 IOT Core and other flavors of Linux|
|Programming Tools||Arduino IDE||Any tool depending upon the programming language of choice|
|Application Size||Limited by 32KB of FLASH||Limited by size of SD Card|
|Supported Language||C++||Any traditional programming language|
|Multimedia Input/Output||Not Available||HDMI, Analog Video Out, Stereo Audio Out, CSI and DSI Input|
Single board computers go back to 1976, when the first true SBC, the Dyna Micro, was launched. Dyna Micro employed the Intel C8080, the second 8-bit Microcontroller released in 1974, and Intel's first EPROM C1702A. At about the same time, Dyna Micro got rebranded as MMD-1 by E&L Instruments. In the early days, home PCs like the BBC Micro (released in 1981), and Acorn Electron (released in 1983) were also built around the SBC. Other early SBCs include the KIM-1 based on the Motorola 6502 released in 1976.
- 5.1 BeagleBoard
Jason Kridner, along with a group of enthusiastic friends, started working on the BeagleBoard concept with a vision to bridge the gap between computers and electronics. Around 2008, Texas Instruments, in association with Digikey and Element14, produced the open-source, low-power BeagleBoard. The first version of the BeagleBoard was designed around Texas Instruments’s OMAP ARM-based SOC which featured standard expansion buses like USB 2.0, SDIO, and DVI-D. With the exposed interfaces, a user can connect peripherals like a Monitor, Keyboard, etc. to expand the functionality of the BeagleBoard. Thus, a low cost, fan-less yet scalable SBC with almost all expansion interfaces like a standard PC was created.
- 5.2 Raspberry Pi
A team from the University of Cambridge Computer Laboratory, including Eben Upton, Rob Mullins, Jack Lang and Alan Mycroft, started working on some early versions of the Raspberry Pi around 2006. In 2008, the Cambridge team started collaborating with Pete Lomas, Director of Engineering of Norcott Technologies, and David Braben, the co-author of the seminal BBC Micro game, Elite, and they formed the Raspberry Pi Foundation. Three years later, the Raspberry Pi Model B was born. It had sold over two million units within two years of mass production.
The earliest computers were built around large vacuum tubes and were of very large size. Later on, with the invention of the transistor and other semiconductor devices, researchers were able to fit a computer into a board. The first SBC had only about 5,000 transistors inside the CPU core, while present day SOCs may contain millions of transistors. Gordon Moore (Intel’s Co-Founder) predicted that the “transistors incorporated into a single chip will double every 24 months,” and this holds true till now. This has become known as Moore’s Law.
The primary goal of a BeagleBoard, Raspberry Pi, or any other SBC has been to make them affordable, low power, small form factor, and easy to use so that it can be accepted by everyone, from students to makers. The availability of high-density IC (i.e., 40/28nm technology) has enabled the integration of many peripherals in a single package.
Single Board Computers are available in various sizes and form factors. Some of them are as small as a credit card, like the Raspberry Pi. There are a number of different standards used today, but the form factor of each of them is generally similar. Table 2 below shows the form factors of the Raspberry Pi and some industry standard form factors for SBCs.
|Length (in mm)||Width (in mm)|
|Raspberry Pi Model ‘B’||85.6||56.5|
|Raspberry Pi Model ‘A’||65||56.5|
|Raspberry Pi ‘Compute Modules’||67.6||30/31|
|Raspberry Pi ‘0’||65||30|
|AdvancedTCA (Blade Size)||322||280|
|Half-sized ISA SBC||121.5||185|
|Half-sized PCI SBC||122||185|
|3.5" Embedded System Board||102||146|
In this section, we will discuss the elements of the architecture of a single board computer.
- 7.1 Slotted vs. Non-slotted
While most SBCs are non-slotted, since they are self-sufficient, there are slotted SBCs which come with edge connectors, enabling other application boards to be plugged into the SBC board. There are different types of edge connectors and protocols like PCI, PCI Express, or ISA used to facilitate such systems.
A slotted SBC exposes all of the GPIOs and peripherals of the SOC or the onboard processor. Alternatively, there are processor boards which come with edge connectors or SODIMM interfaces, allowing designers to design carrier boards specific to a target application and/or end products. With the system bus of the processor exposed, there is no limit to the data bandwidth, which enables high-speed communication.
While the Raspberry Pi falls into the non-slotted category, the SBC PCA-6743 from Advantech is a slotted SBC. It has onboard interfaces like Ethernet and VGA, and also an ISA interface through edge connectors to use with peripheral boards for I/O expansion, A-D Conversion etc.
Another example is the Raspberry Pi compute module, which doesn’t feature any onboard interfaces and has SODIMM connectors to be connected to a desired breakout board or carrier board. This lets the user take full advantage of the BCM2837 SOC used in the module; all of the GPIOs of the SOC are exposed.
Expansion buses expose the system buses to external devices with full read and write capability, making the computing system modular. The first such standard expansion slot, known as Industry Standard Architecture bus (ISA Bus), was introduced by IBM in their PCs in 1981. In 1991, the PCI bus was introduced in place of ISA, and is found in almost all computers along with PCI Express, which was introduced in 2003. PC/104 includes a type of PCI standard known as mini PCI suited for embedded systems.
- 7.2 Components of an SBC
In this section, we will discuss the typical components of a single board computer.
The CPU or Central Processing Unit is basically the brain behind any computer, and it carries out all the arithmetic & logical computations and Input/Output control as per applications or instructions. A CPU typically contains an ALU, Registers, Control Unit, and Cache Memory. The ALU is the unit which carries out arithmetic and logical operations. The Registers work directly with the ALU to feed and fetch data involved in different operations. The Control Unit controls all the operations executed in the CPU. The Cache memory works as a temporary memory for the CPU and stores the most recent and used operations. This reduces the time required to access the data directly from RAM for each and every operation. The CPU may come in multi-core flavors, with more than one processor interconnected in a single package.
The SOC (System on Chip) is an advanced CPU which has many additional peripherals like GPU, Wi-Fi, BLE, Ethernet, USB interfaces, etc. in a single substrate/package. Some SOCs also feature an internal clock source to avoid the need of an external clock circuit. This reduces the number of onboard components needed to build the SBC, and hence the overall size of the board. The SoC consumes less power but is limited by performance, due to lower thermal capability. Low power consumption also makes the SOC an obvious choice for an SBC and mobile computing platforms.
An SBC may need external chipsets onboard to expand its functionality. Some chipsets include USB Hubs, PMIC, Bluetooth/Wi-Fi, USB, and PCI converters. In the case of the Raspberry Pi, the Broadcom SOC lacks multiple USB ports and a native Ethernet interface. These features are enabled on the board by using a USB Combo hub/Ethernet chip.
Timers are an integral part of processors, and help in carrying out functionalities like scheduling software processes, clocks, time-based event processing, PWM wave generation, etc. Timers are typically 8, 16, or 32 bits, making it easy to read and write to them using standard 8, 16 or 32-bit variables. The steady stream of pulses that a timer can count is usually called the timer "clock." The steady time output signals that a timer can be configured to are usually called "ticks." A timer clock can be the same as the CPU (or system) clock, or in some cases it can be of lower or higher frequency.
Cache is often found wherever data processing occurs. It can be a hardware or software component that stores data so that if the same request is received in the future it can be served faster. Cache is relatively small in size as compared to RAM or HDD/SSD memory. The cache retains data that may be raw or the output of a previous computation. Cache memory is the fastest memory for the processor. If more data is served from the cache memory, the system will run faster since information is accessed quickly from the cache rather than having to get it from the main memory. There are different types of Cache that are used for data and instruction caching.
Caches are classified as:
Basic Input/Output System (BIOS) is often a nonvolatile firmware found in computing platforms that handle the hardware initialization during the booting of the system. BIOS helps in connecting basic I/O devices like a keyboard, mouse, and display to the system. BIOS is the first firmware that gets executed when the system is powered up. The BIOS resides on a flash memory which can be updated. Unified Extensible Firmware Interface (UEFI) is a successor to BIOS, which overcomes the technical shortcomings of a BIOS.
System Memory is the memory used by the CPU during the computation process for retaining and storing data. In an SBC, system RAM forms the primary system memory. There are other onboard memories like eMMC or FLASH memory. Some SBCs use μSD cards to hold the Operating System.
A system bus is a single bus that connects to all the major components of a computer system. It combines the functionality of a Data, Control, and Address bus. A data bus (as the name indicates) transfers data between the various peripherals. The Address bus carries the memory address to fetch/write data, whereas the control bus carries all the control signals, including a clock for synchronization between the peripherals. The width of the bus depends on the simultaneous parallel data bits that it can carry at any time.
I/O & Interfaces
SBCs or PCs feature a variety of I/Os, which include USB, HDMI, RS232, VGA, UART, GPIO, etc. to interact with external devices. Modern SBCs targeting Embedded System applications like IoT provide a large number of GPIOs, ADC, and other interfaces like SPI, I2C, CAN, 1-W, PWM, and UART. The availability of such interfaces enables an SBC to communicate with Sensors and Actuators. Apart from the low-end interfaces, an SBC may feature other connectivity I/Os like Ethernet, Wi-Fi, Bluetooth, LoRA, ZigBee, and RF Communication modules. Some SBCs also feature interfaces like SATA, PCIe, and M.2 Slot for extending performance and functionalities.
Peripheral Component Interconnect (PCI) is a part of the PCI Local Bus Standard. Devices connected to the PCI bus appear to be connected directly to the bus master of the processor and are assigned addresses in the processor's address space. It is a parallel bus, synchronous to a single bus clock. Attached devices can be an integrated circuit fitted onto the motherboard, called a planar device in the PCI specification, or an expansion card that fits into a PCI slot. Network cards, sound cards, modems, TV tuner cards, and disk controllers are some examples of PCI connected devices. PCIe or PCI Express succeeded PCI with better performance, higher throughput, and minimized pin counts.
An operating system is a collection of software that interacts with SBC or PC hardware and provides services to the applications to be run on top of it. A few of the most popular architectures for operating systems are mentioned below.
Batch Processing OS
Batch OS is one of the earliest types of OSs where similar types of jobs are grouped together to form a batch. Job batches are stored to offline devices like punch cards and then submitted to the system by the operator to process. The system then performs all the required operations in sequence. An error in the input or the punch card affects rest of the inputs. Debugging is difficult and time-consuming. Example: IBM’s OS360.
In a multiprogramming OS, many programs are loaded into the memory and are ready to execute. Only one program at a time gets the CPU for execution, while others wait for their turn. Maximization of CPU usage time is the main advantage of a multiprogramming OS. If the current process is executing some I/O tasks which do not need the CPU, the OS may interrupt the process and the control will be passed to the next process in the memory, and it continues until the CPU is released or is kept idle. The CPU is never idle as long as there are processes existing in the memory.
Time Sharing OS
A time-sharing system can execute multiple tasks or jobs at the same time by sharing the CPU between the jobs. Though the tasks appear to be executed simultaneously, the CPU actually switches between the jobs one after the other very quickly. Time-sharing systems minimize the response time rather than maximizing the CPU usage. Example: UNIX.
These are systems in which data is stored and processed on many machines which are connected by a network. To make it more simple, distributed systems are a collection of several separate (individual) systems, which communicate (through a LAN or WAN) and cooperate with each other (using some software) in order to provide the users access to various resources that the system maintains. One important point to note about distributed systems is that they are loosely-coupled, i.e. hardware and software may communicate with one another, but they need not depend on each other. Example: Solaris Operating System.
Network Operating Systems (NOSs) are similar to distributed systems but they differ in the way they access resources. The NOS needs special functions/protocols to facilitate connectivity & communication among the systems. The NOS employs a client-server model, whereas a Distributed OS employs a master-slave model. In the NOS, data has to be transferred to the server for processing. There are two models used in Network Operating Systems, namely the Peer-to-Peer model and the Client-Server model.
The Real-time operating system is defined as a data processing system in which each task has a deadline to complete. Real-Time Operating Systems (RTOS) adhere to this deadline since missing a deadline is undesirable and, in some cases, can be catastrophic. A real-time system has well-defined and fixed time constraints. There are two types of RTOS:
Hard Real-time Systems: Hard real-time systems guarantee that critical tasks complete on time. In hard real-time systems, secondary storage is limited or missing and the data is stored in ROM. In these systems, virtual memory is almost never found.
Soft Real-time Systems: Soft real-time systems are less restrictive. A critical real-time task gets priority over other tasks and retains the priority until it completes. These find application in virtual reality, multimedia systems, and Advanced Scientific Projects like undersea exploration or planetary rovers, etc.
- 8.1 Other SBC Operating Systems
Linux is a family of Operating Systems built upon the Open-Source Linux kernel, which was first released in 1991 by Linus Torvalds. Linux has the largest installed base in the general purpose OS category. Initially targeted towards X86 architecture, it has been ported to low power ARM devices as well. Since the first release of the kernel, Linux has seen many OSs developed around it for SBCs like Raspbian, Fedora, Armbian, etc. Due to the flexibility that the Linux OS provides, it can be tailored for any architecture and peripherals, and hence has become an obvious choice for embedded devices. The wide acceptance of LINUX also accelerated due to the constant updates available from the Linux development community. Because Linux is freely redistributable, anyone may create a distribution for any intended use.
The PC versions of different Linux flavors have been ported for the SBCs, like Raspian for Raspberry Pi, which is the ARM ported version of Debian, and Angstrom Linux or Debian for the BeagleBone. There are other flavors of Linux such as OSMC and LibreElec used for multimedia content. Weather Station OS is available for the Raspberry Pi for making weather stations with the required sensors. Similarly, Kali Linux is available for SBCs to make portable machines to do penetration and other network tastings.
Derived from the original AT&T UNIX in the Bell Labs research center, the development of UNIX was started by Ken Thompson and Dennis Ritchie in 1970 and targeted internal usage. After being licensed to third parties in late 1970’s, a lot of variants of UNIX like BSD, Xenix, AIX, and Solaris were released. Apple’s MAC OS is also based on UNIX and has the largest number of installations. As the complete OS is written in ‘C,’ it makes it portable and available for numerous platforms. Plan9, NetBSD, and OpenBSD are also some of the examples of UNIX OS available for SBC like Raspberry Pi and others.
Android is a mobile operating system targeted towards touch screen based devices like Smartphones and Tablets. Google has developed the Android Operating System based on a modified version of Linux Kernel. In addition to the primary Android OS for smartphones, there are also variants of Android OS like Android TV for Smart TVs, Android Wear for Wearables, and Android Auto for automobiles. The core Android source code is known as Android Open Source Project (AOSP) and is primarily licensed under the Apache License. Android is ideally suited for being used for human-machine interface (HMI) applications. It is supported completely on some of the SBCs like BeagleBone, to target Industrial applications. For applications around IoT, a dedicated version Android Things is available.
Windows is a group of graphical Operating System families, developed by Microsoft. The first version of Windows, released back in 1985, featured GUI as an extension to Microsoft’s existing DOS Operating System in response to the growing demand for GUI-based operating systems in the consumer market. Later on, with the introduction of OSs like Windows 98, XP, and Windows 7, Microsoft captured almost 90% of the total market until Android was introduced by Google. Other than traditional PCs, Microsoft also developed a Windows OS like Windows CE for embedded devices. The latest releases in this segment are the Windows 10 IoT Core and Windows 10 IoT Enterprise. The Windows 10 IoT core targets low power ARM SBCs like the Raspberry Pi. It is a version of Windows 10 that is optimized for smaller devices with or without a display.
In this section, let’s go through some common applications that utilize SBCs.
Internet of Things
A large majority of SBCs feature connectivity peripherals for communication. They also have GPIOs and low-level communication protocols like UART, I2C, and SPI for interfacing sensors and actuators. They have good processing power, and hence are often used as gateways which act as an intermediate device between the end nodes and cloud services. An SBC can connect to cloud services using a TCP/IP connection via the Ethernet / Wi-Fi / GPRS and transfer data aggregated from the local Personal Area Network (PAN). The end nodes of IoT systems are generally made of microcontroller boards with added connectivity.
A simple example is the Raspberry Pi as a LoRa gateway by using the multichannel LoRa HAT for the Raspberry Pi to build an IoT data concentrator. At the backend, the Ethernet or Wi-Fi port of the Raspberry Pi is used to connect to the network and cloud services. The Raspberry Pi concentrates data from the local LoRa nodes and sends the collected data to the appropriate LoRa server.
Raspberry Pi and other SBCs feature on-board BLE/ Bluetooth which can be used to create a local BLE/Bluetooth network and data can be fetched from the local BLE /Bluetooth nodes. The Raspberry Pi will then transfer the fetched data to the desired cloud services.
BeagleBone Black Industrial, which is rated for industrial usage, has onboard communication interfaces like CAN, EtherCAT and PROFIBUS for connecting to industrial devices. It can act as a gateway for IoT enabled applications in Industrial control systems.
Parallel Computing or Clusters
When you think about an application such as simulation that involves tremendous computational power, you will likely think of supercomputers or computer clusters which are a combination of many distributed PCs running specialized software.
A cluster behaves like a multicore system where the core counts can be in the thousands. Such supercomputers are extremely expensive. A less expensive alternative is to use an SBC like the Raspberry Pi instead of a PC. Though not as powerful as a PC cluster, an SBC cluster can be used to learn about things like latency or network reliability that are involved in parallel processing, without a huge financial investment.
You can get a 64-node cluster made from Raspberry Pi at around $3000 USD, in comparison to a cluster from IBM at about $100,000. Although the Pi cluster will take more time to solve a problem, as compared to the IBM cluster, it can be used to learn before deciding on the much more expensive Cluster purchase.
Robots and drones involve multiple sources of intense data processing simultaneously for features like Computer Vision, Text to Speech, Speech to Text, Natural Language Processing, etc. Most microcontrollers cannot execute these algorithms. Hence, an SBC with its multiple external interfaces fits well for connecting sensors and actuators.
A Rover Robot needs image processing, sensors to map its surroundings, actuators to drive its movement, and intense processing to implement navigational logic. An SBC like the Raspberry Pi fits well for this type of application since it has interfaces for a camera, and can be fitted with additional sensors via its USB ports and GPIOs. In addition, its Bluetooth and Wi-Fi connectivity can be used to send out the collected data to a remote device or a cloud service.
The BeagleBone Blue is an SBC built for robotics and has features like 9-axis IMU, Barometer, 8 6V servos, 4 DC motor outputs, and 4 quad encoder inputs. It also provides remote connectivity through the BLE and Wi-Fi ports on board.
The best way to get started with single board computers is to get a starter kit and build a project. In the Related Single Board Computers page of this learning module, we provide additional information about a wide array of SBCs and kits, for makers to professional users.
*Trademark. Element14 is a trademark of AVNET. Other logos, product and/or company names may be trademarks of their respective owners.
Test Your KnowledgeBack to Top
Are you ready to demonstrate your single board computers knowledge? Then take a quick 15-question, multiple-choice quiz to see how much you've learned from this SBC Learning Module.
To earn the SBC Badge, read through the module to learn all about SBCs, attain 100% in the quiz at the bottom, leave us some feedback in the comments section, and give the module a star rating.
1) An SBC with PCI/ISA Edge connector is an example of a ________ SBC.
2) The PCI Bus exposes the system Bus with full Read/Write capability to interface external devices.
3) Which is the fastest memory?
4) Clock for Synchronization is carried by which Bus?
5) ____ is used to handle the initial hardware initialization during boot up in a PC.
6) The Timer and CPU should use the same clock frequency.
7) Arrange L1, L2, L3 Cache, from fastest to slowest with respect to the CPU:
8) Solaris OS is a type of _____ Operating System.
9) UNIX OS is written in which programming language?
10) _____ OS is available from Microsoft for Embedded devices.
11) What is the name of the Android OS available for IoT?
12) Android is based on the ______ kernel.
13) What is most appropriate for an IoT end node?
14) SBC Clusters are more expensive and more power hungry as compared to PC Clusters.
15) A network operating system employs a client-server model, whereas a Distributed OS employs a master-slave model.