Member-only story
Embedded Linux 101

Getting started with Embedded Linux development can be incredibly confusing. There is a lot of terminology, and there is a steep learning curve associated with diving into the source code and using various tools and frameworks commonly used in the Embedded Linux ecosystem. This brief guide will go over some of the key background knowledge which newcomers to the space will need to start developing as soon as possible.
What is Linux?
Linux is an operating system much like MacOS or Windows. The kernel is the piece of the Linux OS which provides an abstraction over the hardware the operating system is running on. It handles I/O operations, memory management, threading, process management, and much more. The other part of Linux is the bootloader. The bootloader is responsible for loading the kernel into memory when the machine powers on, thereby starting the operating system.
What is Embedded Development?
Loosely defined, an embedded system, also known as a cyber-physical system, is a software and hardware system which “operates in the real-world.” Frequently, this means it is attached to sensors and actuators which provide it information and allow it to interact with objects in its surroundings. Embedded devices are what power the Internet of Things (IoT), industrial automation, robotics, and more.
A System on Chip (SoC) is a core component of Embedded Systems. These are chips which include not only a CPU, but also internal subsystems and other circuitry which enable it to be connected to other peripheral devices. Developers buy SoCs from chip manufacturers and build a board, which includes the SoC as well as any peripherals the developer wants for their final device.
What is Embedded Linux Development?
Succinctly put, Embedded Linux Development is the engineering which goes into making the Linux kernel work with SoCs and different boards. Although Embedded Systems often only run a single application, the benefits provided by a kernel may outweigh the power, storage, and computational costs since the execution environment for the application will look as if the embedded system was just a normal PC. This makes it easier to run complex applications which require features like network connection…