Low Level Programming of the Raspberry Pi in C (2013)
pieter-jan.com
pieter-jan.com
I was able to use one to read in an 8 bit parallel bus at around 8MHz without having to build a separate board with appropriate MCU.
How is the community? Are there ready to go modules for common tasks like actively rectified H-bridge control, CANbus control, etc? (I know the processor itself can do CAN too, but say I have a hard realtime requirement on my CAN network...)
I played with it a couple years ago and the community appeared small, but it is straight forward enough that the examples and docs are likely all you need. I bet the community is stronger but it isn't going to be on stack exchange.
I used it for a proof of concept for a project and ended up taking a different route for the final design due to BOM cost desires. The original plan was to use the beaglecore, which is the core of the thing on a PCB with an LGA bottom. It actually comes in a giant cut tape form factor for mutant pick and place machines. I had never seen anything like that before.
https://news.ycombinator.com/item?id=16180975
Also there are a few other things which come in handy like those two:
https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/
https://wiki.osdev.org/Raspberry_Pi_Bare_Bones
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
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.
http://www.valvers.com/open-software/raspberry-pi/step01-bar...
https://www.reddit.com/r/rust/comments/7pymd9/stanford_cs140...
IMO, just getting a PI and going to town is the best option currently.
[1] https://github.com/rust-embedded/rust-raspi3-OS-tutorials