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)
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
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
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
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
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
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
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
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