ROM and RAM in ARM

You say “different than what we think of”, as if everyone thinks in the same way 🙂 I would guess that you are coming from low-end microcontrollers which often have separate program and data address spaces. On ARM the situation is different: program code, data and peripheral registers all reside in the same flat 32-bit … Read more

How to create a QEMU ARM machine with custom peripherals and memory maps?

In order to add your own machine, you need at least create one source file, containing the parameters and peripherals of your machine. After that, add a entry inside Makefile.objs, under qemu/hw/arm/. STM32 P103 machine entry. Let’s take as example Olimex STM32 P103 Development Board: Olimex STM32 P103 Development Board code. In lines 105 and … Read more

What does ‘bank’ing a register mean?

Register banking refers to providing multiple copies of a register at the same address. Taken from section 1.4.6 of the arm docs The term is referring to a solution for the problem that not all registers can be seen at once. There is a different register bank for each processor mode. The banked registers give … Read more

What is the difference between the ARM, Thumb and Thumb 2 instruction encodings?

Oh, ARM and their silly naming… It’s a common misconception, but officially there’s no such thing as a “Thumb-2 instruction set”. Ignoring ARMv8 (where everything is renamed and AArch64 complicates things), from ARMv4T to ARMv7-A there are two instruction sets: ARM and Thumb. They are both “32-bit” in the sense that they operate on up-to-32-bit-wide … Read more

What are the purposes of the ARM ABI and EABI?

An ABI (Application Binary Interface) is a standard that defines a mapping between low-level concepts in high-level languages and the abilities of a specific hardware/OS platform’s machine code. That includes things like: how C/C++/Fortran/… data types are laid out in memory (data sizes / alignments) how nested function calls work (where and how the information … Read more

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)