Time Management Subsystem in ARMv8

Time Management Subsystem in ARMv8

Reposting an article;https://kernel.meizu.com/2023/12/13/Full-stack-resolution-of-the-Linux-time-subsystem/The time management in ARMv8 is primarily based on the same time base + different offsets = specific time.Let’s take a look at the main data structures.Used to calculate the time value under a certain offset; assuming we read the real time starting from 1970.Here, the current base + offset 【【TK_OFFS_REAL】 is equal … Read more

Understanding the Low-Level Implementation of Atomic Operations in the Linux Kernel (armv8-aarch64)

Understanding the Low-Level Implementation of Atomic Operations in the Linux Kernel (armv8-aarch64)

Typically, a line of code like<span><span>a = a + 1</span></span> translates into three assembly instructions: ldr x0, &aadd x0,x0,#1str x0,&a That is, (1) read the variable a from memory into the X0 register, (2) add 1 to the X0 register, (3) write the value of X0 back to memory a. Since there are three instructions, … Read more

Detailed Explanation of ARMv8/ARMv9 Interrupts: Software Aspects – An Introduction to Linux Kernel Interrupts

Detailed Explanation of ARMv8/ARMv9 Interrupts: Software Aspects - An Introduction to Linux Kernel Interrupts

Table of Contents 1 Definition of the Linux Kernel ARM64 Interrupt Vector Table 2 Setting the Base Address of the Interrupt Vector Table in Linux Kernel ARM64 3 Introduction to the kernel_ventry Macro 4 Unimplemented Exception Vectors: elx_yyy_invalid 5 Introduction to el1_irq – Jumping to the Registered Handler Function 6 handle_domain_irq 7 Introduction to Interrupt … Read more

Understanding and Practicing ARMv8 Bare Metal Code – The Concept of Bare Metal Code

Understanding and Practicing ARMv8 Bare Metal Code - The Concept of Bare Metal Code

This example code is derived from the sample code included in the ARM Development Studio: Arm\Development\Studio 2022.0\examples\docs\baremetal_v8. The following is an interpretation based on this type of example, gradually analyzing the implementation logic of bare metal code in conjunction with the characteristics of the ARMv8 architecture. 1. What is Bare Metal Code? Bare Metal code … Read more

Firmware System Architecture Based on ARMv8

Firmware System Architecture Based on ARMv8

The firmware system based on the ARMv8 architecture The firmware system based on the ARMv8 architecture consists of multiple layers and modules designed to provide secure, flexible, and efficient booting and management for ARMv8-based servers and embedded devices. Its design structure typically includes the following main components and stages: 1. Overview of Firmware Architecture The … Read more

Introduction to the Current Program Counter (PC) in ARMv8

Introduction to the Current Program Counter (PC) in ARMv8

Term: PC-relative address — pc-relative address 1. Introduction to the Current Program Counter (PC) The current Program Counter (PC) cannot be treated as a general-purpose register, and therefore cannot be used as a source or destination for arithmetic instructions, nor as a base, index, or transfer register for load/store instructions. Methods to read the PC … Read more

System Practice Learning ARMv8 Assembly – Course 4

System Practice Learning ARMv8 Assembly - Course 4

Course 4: Detailed Explanation and Practical Application of ARMv8 Assembly Pseudo Instructions Pseudo instructions (Directives) are auxiliary instructions provided by the assembler to control code generation, data allocation, segment structure, etc.,which do not directly translate into machine code. Below is a classification and example analysis of commonly used pseudo instructions in ARMv8 assembly: 1. Segment … Read more

Deep Dive into ARM Embedded Systems | ARMV8 Linker Script u-boot.lds Source Code Analysis

Deep Dive into ARM Embedded Systems | ARMV8 Linker Script u-boot.lds Source Code Analysis

u-boot.lds is the linker script file for the u-boot project, which plays a crucial role in the compilation and linking of the project. It determines the assembly of u-boot and instructs the linker on how to combine the sections from various source files (such as assembly and C source files) into the final executable file. … Read more

System Practice Learning ARMv8 Assembly – Course 2

System Practice Learning ARMv8 Assembly - Course 2

Course 2: Stage 1 – Basic Preparation (Week 2) Topic: Detailed Explanation of ARMv8 Registers and Instruction Set, Bare-Metal Programming Practice 2.1 In-Depth Analysis of Registers Classification of ARMv8 Registers: General Purpose Registers (31): <span>X0</span>: Function Argument 1 / Return Value. <span>X1-X7</span>: Function Arguments 2-8. <span>X8</span>: System Call Number. <span>X29</span>: Frame Pointer (FP). <span>X30</span>: Link … Read more