Hi there,
So it is revealed…
Holly smokes. I started with the same 6502, Z80, Z80A,B,C all the peripherals CTC, PIO , SIO all of them, PAL chips , GAL chips (glue logic) DTACK type , 68000, 68020 You know what I’m saying. MASM or ASSembly there where no “Interpetures” LOL , Hell “C” was still B. ![]()
but I digress.
I totally hear you — anyone who lived through the 6502/Z80/8051 era earned their stripes the hard way. Back then, ‘bare metal’ literally was register twiddling because there was nothing else. No HALs, no CMSIS, no middleware… just you, the silicon, and the datasheet. (always stamped “Preliminary”) ![]()
But the landscape changed. Modern ARM and RISC-V parts ship with layered abstractions, toolchains, drivers, and an RTOS that barely gets in your way if you don’t want it. Nordic’s definition isn’t marketing fluff — on today’s MCUs, ‘bare-metal’ means no OS scheduler, but you still get to talk straight to registers whenever you want. The toolchain doesn’t stop you. Zephyr doesn’t stop you. Even MCUBoot doesn’t stop you.
If someone wants to keep doing ‘Direct Register Programming,’ that’s still absolutely possible. It’s just no longer the only way to run on the metal. The world evolved, and Nordic evolved with it.
End of the day, whether you type *(volatile uint32_t*)0x40004000 = 1; or use a driver call, you’re still in full control. That’s the spirit that matters.”
HTH
GL
PJ ![]()
I’m betting in 3 hours, You could be up to 3/4 speed on the Nrf_sdk.
Grab a Libation, go watch the DEV academy videos, try some of the examples and Bob’s your uncle
if you can handle Arduino, it’s truly the next step.
don’t get too nostalgic
some then and now pics I used in a presentation…LOL ![]()


