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

C++ exception overhead

Just my 2 cents… I consult exclusively on embedded systems, most of them hard real-time and/or safety/life critical. Most of them run in 256K of flash/ROM or less – in other words, these are not “PC-like” VME bus systems with 1GB+ of RAM/flash and a 1GHz+ CPU. They are deeply embedded, somewhat resource-constrained systems. I … 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

ARM: link register and frame pointer

Some register calling conventions are dependent on the ABI (Application Binary Interface). The FP is required in the APCS standard and not in the newer AAPCS (2003). For the AAPCS (GCC 5.0+) the FP does not have to be used but certainly can be; debug info is annotated with stack and frame pointer use for … Read more

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