Hacker News new | past | comments | ask | show | jobs | submit login

Sure it's low level in that you're poking at physical memory registers, but to me, low level in this context (thinking microcontrollers) means replacing the Linux kernel binary with your own application that does its own direct memory poking.

Low level: directly accessing hardware. To immediately equate low level with 'you need to roll your own kernel' is a redefinition of terms that makes no sense to me. After all, even a Linux device driver still makes use of all the facilities the kernel provides and yet it is definitely low level programming.

This has been here last year:



Also there are a few other things which come in handy like those two:



The cambridge tutorial is armv6 assembly only though. Which is kinda neat to poke around with, but not that much fun (imo). But doing baremetal for the raspberry is fun, just because it is a different architecture. The only problem I had with it was that the bcm-datasheet felt not very nice. It's kind of hard reading yourself through this. Or maybe it was so hard, because the topic in itself is pretty complex

Not 100% agreeable with you. If you are writing a Linux device driver, accessing the registers, memory, IO ports are still considered as low level programming.

But you are right, to be really low level at C, nothing beats writing to the bare metal. There are plenty of guides floating about for this. Here is an example.


No, to really be low level, you have to implement your stuff in FPGA. But that's not truly low level. To truly be low level, you have to forego pre-fab hardware and fully implement your logic in RTL yourself. But to really be low-level, that isn't sufficient. You must shed your digital abstractions and implement the whole thing in analog circuits.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact