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 […]
The GNU Compiler Collection (GCC) provides several language features not found in ISO standard C. As I write this article, GCC has more than 60 different extensions that change the behavior or add functionality to the C language (and also C++). Some of these extensions are very interesting, others are a little bit confusing and […]
The best way to spend less time fixing bugs in software is not creating bugs in the first place, and a static analysis tool is perfect for this job. The saying goes that in the software development process, we pass 50% debugging, and the other 50% bugging! A joke, but with an element of truth. […]
Would it be a good idea to use containers on an embedded Linux system? Some time ago I wrote an introductory article on Linux containers. I mentioned in the article that there are already several embedded Linux distributions based on containers, including Linux microPlatform from Foundries.io, Torizon from Toradex and balenaOS from balena. What these […]
JTAG is a physical hardware interface that makes it possible, among other things, to extract the firmware image from electronic devices. The firmware, a program that executes in a dedicated way and with a specific purpose in a microcontroller or microprocessor, is usually stored in a persistent memory device like a NAND/NOR flash or EEPROM. […]
This is the second part of the article about embedded Linux security. In the first part, we talked about some security concepts, threat modeling, secure boot, code and data encryption, encryption keys and key storage techniques. In this second part, let’s keep talking about techniques to improve the security of an embedded Linux device, including […]