ARM TF-A Day 5: BL2 Deep Dive - Image Loading Framework
Hey there, welcome back! In Day 4, BL2 successfully initialized the DRAM and the UART console. The platform is stable. Now, BL2 must execute its …
ARM TF-A Day 4: BL2 Deep Dive - Platform Initialization
With BL1 having done the heavy lifting of raw architectural setup, we have arrived at BL2 (Trusted Boot Firmware).
BL1 was executing out of ROM; BL2 …
ARM TF-A Day 3: BL1 Deep Dive - Memory Management and Handoff
Hello! To recap in Day 2’s article, we covered the primary CPU core wake up, disable its caches, set up a stack pointer, and finally jump into …
ARM TF-A Day 2: BL1 Deep Dive - The First Breath
In Day 1, we established that TF-A operates as the gatekeeper of the system, and that the boot process is a chain of trust broken into several stages. …
ARM TF-A Day 1: Introduction to Trusted Firmware-A and The Execution Architecture
Hey there! Welcome to a brand new deep-dive series. If you followed my previous arm64* exception levels and bare-metal series, you know I love getting …

3 Must Have Skills to Ace Lower Level Software Engineering!
The three key skills you need to start your career as an embedded software engineer. Spoiler alert! It’s C-Language, 32-bit CPUs, and a good …

Function Pointers - Everything you need to know!
In this post, we explore what a function pointer is, what it really means for the machine, how to define it, and how to use it.
fig 1. The kernel code …

But, What is a System Call?
This note explains what a system call is, what you should imagine when trying to understand it and how you can design one.
The CPU - Privilege Levels …

Soan Papdi FPGA - Setup Guide
A Quick Guide to getting up and running with the Soan Papdi FPGA board. A quick guide to getting up and running with the Soan Papsi FPGA board. …

Building an Audio Visualizer in C using Fast Fourier Transform(FFT) and XCB
I made this project to understand how audio data can be analyzed and displayed visually. The idea was to take a WAV file, process its samples using …

How to Embedded Systems?
Embedded systems are specialized electronic setups designed to handle specific tasks by sensing environmental conditions, processing the data, and …
Debugging an Embedded System - Day 1 - Introducing different Tools
Let’s now actually understand the need and usage of GDB, OpenOCD, JTAG, SWD, etc. Let’s go over some of the use-cases to see how all of …
Debugging an Embedded System - Day 0 - Understanding What is Debugging
GDB, OpenOCD, JTAG, SWD etc are terms often thrown around when it comes to debugging in an embedded environment. They are naught but just tools made …

ARMv8a Procedure Call standard and GPRs
ABI and Procedure call standard are backbone to safe-guard compatibility and inter-operability. Let’s see how and why.
ARMv8-A Procedure Call …

ARMv-8a IRQ handling
Interrupt handling is a very critical part of any architecture. For ARM64, they are looked at from a certain lense. Let’s see how.
ARM64 IRQ …

ARMv-8a EL0<->EL1 Switching
Syscalls and switching between different exception levels is a very intricate topic filled with minute details which are often overlooked. Let’s …

From Design to Tapeout (Physical Design) - Beginner's guide
If you’ve ever wondered how the tiny chips powering your smartphone or laptop come to life, you’re in for a treat.
Creating a semiconductor chip is …

ARMv-8a Exception Levels
ARM-A is the most prevalent architecture out there powering billions of devices. We will be covering these topics over the course of multiple articles …

System on Chip (SoC) and Bare-Metal Programming
A System on Chip (SoC) is an integrated circuit that combines multiple components of a computer or electronic system into a single chip.
Unlike …

Power Management IC (PMIC)
Nordic nPM1300 PMIC Evaluation Board! A Power Management Integrated Circuit (PMIC) is a critical component in modern electronic devices, designed to …
