Since version 4.8 the Linux kernel has a new interface based on character devices for accessing and managing GPIO lines in user space. Linux kernel GPIO interface GPIO stands for General-Purpose Input/Output and is one of the most commonly used peripherals in an embedded Linux system. Internally, the Linux kernel implements the access to GPIOs […]
A few days ago I decided to reverse engineer my router’s firmware image with binwalk. I’ve bought the TP-Link Archer C7 home router. Not one of the best, but good enough for my needs. One thing I always do when I buy a new router is install OpenWRT. Why? Because the manufacturer’s firmware quality is […]
This article is going to be an introduction to embedded Linux security. Since this topic is quite extensive, I divided into two parts. In this first part, we will have a small introduction to security concepts and threat modeling and then focus on some mitigation techniques to improve the security of an embedded Linux device, […]
A Trusted Execution Environment (TEE) is an environment where the code executed and the data accessed is isolated and protected in terms of confidentiality (no one have access to the data) and integrity (no one can change the code and its behavior). We may not be aware, but a lot of devices around us make […]
Container technology in general and Linux containers, in particular, have become increasingly popular in recent years. The use of containers in data centers and cloud computing environments is growing every year and tools like Docker and Kubernetes have become quite popular. And it’s no different in the world of embedded Linux since some container-based Linux […]
One of the most effective ways to identify problems in applications that crash is through core dump analysis. Core dump is a disk file that contains an image of a process’s memory at the moment of its termination, generated by the Linux kernel when processing some signals like SIGQUIT, SIGILL, SIGABRT, SIGFPE and SIGSEGV. For […]
This article is an introduction to embedded Android from the perspective of an embedded Linux developer. If you are an embedded Linux developer but have never worked with embedded Android, this article is for you. If you develop or maintain Linux distros, and I want to start developing Android distros, this article is for you. […]
Tracing is a useful technique to find bugs in software, and ftrace is the tracing framework built into the Linux kernel. But before we start talking about ftrace, let’s define what tracing is. What is tracing? Tracing is the specialized use of logging to record information about a program’s flow of execution. You know when […]
AddressSanitizer (ASan) is an instrumentation tool created by Google security researchers to identify memory access problems in C and C++ programs. When the source code of a C/C++ application is compiled with AddressSanitizer enabled, the program will be instrumented at runtime to identify and report memory access errors. But what are memory access errors and […]
The Embedded Online Conference is an online conference for embedded systems, DSP, machine learning and FPGA engineers and it is starting today May 20th 2020. If you registered for the conference, you will be able to watch a lot of talks, and I hope you enjoy mine about developing embedded real-time applications with heterogeneous multiprocessing […]