I'm learning bare metal programming on the RPi. My main experience is from using 8-bit PIC microcontrollers. Reading from SD cards is comparatively high level. How does the CPU achieve this? Does it have ROM like PIC MCUs, with firmware pre-loaded that does this for us? Or is it built into the hardware? If it has firmware, how is it programmed? If it's hardware, are there alternate configurations the CPU supports?

1 Answer 1


The ARM side of the SoC has quite a few hardware peripherals (e.g. UART, SPI, I2C, etc).

In particular it has an External Mass Media Controller (EMMC) SD card interface.

See page 65 of BCM2835 ARM Peripherals.

The SoC has firmware which uses that peripheral to boot from SD card.

The SoC firmware is not writable by anyone but Broadcom.

  • 1
    The SoC firmware is "honest-to-god mask ROM (read only memory)" and can not be modified by anyone after the chip already has been produced or even built into a Pi.
    – flakeshake
    Commented Feb 8, 2017 at 11:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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