I always wanted to develop my own crappy operating system, but the many weird legacy quirks of the x86/PC platform kept me from doing so (e.g. real vs protected mode, only low resolutions available in VGA/VESA, etc.). Now I realized, that maybe one of the many SoCs used in smartphones would be a better platform for developing an operating system as they are all-in-one solutions without downward compability considerations and therefore better design (even though I am not the biggest fan of the ARM instruction set).

Even better: There are many single board computers, which bring SoC, RAM, USB ports for connecting mouse/keyboard and hdmi for connecting a monitor for a cheap price... a perfect platform for dabbeling into OS development I thought...

The most established of the single board computers seems to be the Raspberry Pi and I also found 2 tutorials on OS development for them online (https://hackaday.com/2018/01/19/roll-your-own-raspberry-pi-os/). I thought the tutorials would serve as a nice intro, but actually I was missing a lot of info in the tutorials so I tried to get hold of the official documentation which of there is very little... too little in order to really develop bare metal.

Some issues I ran into:

  • there is a peripherals documentation for the raspberry 1, but not for the raspberry 2/3, which have totally different base addresses
  • the RB3 for example has a wifi chip (BCM43438), but I can't find any official documentation on how it is connected to the RB3 SoC (BCM2837)
  • the tutorials hint at the mailbox concepts for getting a framebuffer/get output via hdmi going, but I can't find any useful information on framebuffer/mailboxes in the official documentation
  • same with the boot process... it is nowhere explained in the official documentation
  • on the official broadcom website, I can't find the BCM2837 at all!
  • when looking at other SoCs like the S905 (in the Odroid C2) it has ethernet directly connected to the SoC (instead of through USB like the RB has), but I can't find any information on how to program it
  • besides the framebuffer topic of the tutorials I didn't find any instructions on how to program the GPU (e.g. for 3D rendering). There is a architecture document describing the VisualCore GPU, but not how it has to be interfaced...

Why is the documentation/specification so bad? Is it that the SoCs aren't directly sold to endcustomers and therefore their documentation is confidential? Is it only some SoCs and there are actually some with a proper documentation?

  • 3
    \$\begingroup\$ I don't believe there is not enough documentation about virtually any aspect of RPI of any version. \$\endgroup\$
    – Eugene Sh.
    Jul 23, 2018 at 13:49
  • 2
    \$\begingroup\$ Just a reminder: SoC means system on a chip. Quite often, it happens that the SoC manufacturer purchases and uses external IP blocks, which might influence the amount of available documentation. \$\endgroup\$
    – AndrejaKo
    Jul 23, 2018 at 13:52
  • 2
    \$\begingroup\$ I had the impression the BCM2837 was produced through an exclusive deal for the RPi and not available to anyone else. So there would be no reason to produce any public documentation. \$\endgroup\$
    – Finbarr
    Jul 23, 2018 at 13:59
  • \$\begingroup\$ @Finbarr There is still available documentation: github.com/raspberrypi/documentation/files/1888662/… \$\endgroup\$
    – Eugene Sh.
    Jul 23, 2018 at 14:00
  • 1
    \$\begingroup\$ Pardon me if I am mistaken, but isn't it true that writing an OS is kind of a 10-men-year effort for a seasoned professional? \$\endgroup\$ Jul 23, 2018 at 17:06

1 Answer 1


At least the NXP i.MX6 has most of the documentation publicly available (except for the GPU). There are many development boards (SABRE, Boundary Devices, Novena or systems-on-module for this SoC (check for example Variscite).

Check out also the "big" SAM line from Microchip.


Not the answer you're looking for? Browse other questions tagged or ask your own question.