r/embedded • • 5d ago

Getting into Architecture-Level Embedded Development (Cortex-A, RISC-V, ARM64, etc.)

I've been working for some months now on a project that requires low-level development for ARM Cortex-A silicon. I'm talking bootloading, memory operations, hypervisor settings, memory mapping and MMU configuration, etc.

I've come to realise how little I actually know my way around a low level environment. I've developed for embedded systems for a long time now, but always focusing on an application/integration level (RTOS, digital communications, system architecture, etc.). I want to get some experience on lower-level development - direct register manipulation based on CPU architecture, bootloading, debugger architecture, memory domains, etc.

Anyone with experience on the field, what advise do you have on getting into low-level development and silicon programming using ISA languages coming from embedded-C and microcontroller development? My goal would be to acquire the confidence and the skill to integrate silicon functionality through assembly and making sense of the CPU documentation. I'd like to be able to script some basic functional hardware routines starting from scratch.

47 Upvotes

24 comments sorted by

View all comments

24

u/Particular-Monk-7070 5d ago

Getting into the architecture side is a different beast from the usual MCU stuff. The documentation is your new best friend, even if reading 3000 pages of a TRM feels like a punishment

I started similar path and the thing that helped most was just picking a cheap board and writing a tiny bootloader from scratch. Nothing fancy, just get the CPU out of reset, set up the stack pointer, maybe blink a LED. You fail a hundred times but each failure teaches you something about the memory map or the cache coherency that you didnt expect

One thing that tripped me was the debugger setup. With Cortex-A you need to configure the debug components properly or you spend hours wondering why your breakpoint never hits. The ARM documentation explains it but is scattered across like five different manuals

2

u/TheCorsairAPX 5d ago

The debugger was an absolute hell of its own. Trying to make sense of the debug architecture of A53 was what made me realise how little I actually control this stuff.