Raspberry Pi 4
Raspberry Pi 4
This board is one of the Raspberry Pi models, released in 2019. It has 1G - 8G RAM, ARMv8 (AArch32 and AArch64) CPU, and VideoCore VI GPU.
Hardware
CPU is a BCM2711, containing 4 Cortex-A72 cores. In Linux they appear as
processor : 0 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3
The graphics is done with a Video Core VI. This is backwards-compatible with Video Core IV from Broadcom.
Device memory map
Taken from Linux /proc/iomem as root
00000000-3b3fffff : System RAM fd500000-fd50930f : pcie@7d500000 fd580000-fd58ffff : genet@7d580000 fd580e14-fd580e1c : unimac-mdio.-19 fd5d2200-fd5d222b : thermal@7d5d2200 fe007000-fe007aff : dma@7e007000 fe007b00-fe007eff : dma@7e007b00 fe00a000-fe00a023 : watchdog@7e100000 fe00b200-fe00b3ff : dwc_otg fe00b840-fe00b87b : mailbox@7e00b840 fe00b880-fe00b8bf : mailbox@7e00b880 fe100000-fe100113 : watchdog@7e100000 fe101000-fe102fff : cprman@7e101000 fe104000-fe10400f : rng@7e104000 fe200000-fe2000b3 : gpio@7e200000 fe201000-fe2011ff : serial@7e201000 fe201000-fe2011ff : serial@7e201000 fe215000-fe215007 : aux@7e215000 fe300000-fe3000ff : mmcnr@7e300000 fe340000-fe3400ff : emmc2@7e340000 fe600000-fe6000ff : firmwarekms@7e600000 fe980000-fe98ffff : dwc_otg fec00000-fec03fff : hub fec04000-fec07fff : core0 fec11000-fec1101f : watchdog@7e100000 600000000-603ffffff : pcie@7d500000 600000000-6000fffff : PCI Bus 0000:01 600000000-600000fff : 0000:01:00.0 600000000-600000fff : xhci-hcd
Devices as found by Linux, with addresses and Linux driver name
fd500000.pcie brcm-pcie fd580000.genet bcmgenet fd5d2200.thermal brcmstb_thermal fe007000.dma bcm2835-dma fe007b00.dma bcm2835-dma fe00b840.mailbox bcm2835_vchiq fe00b880.mailbox bcm2835-mbox fe100000.watchdog bcm2835-pm fe101000.cprman bcm2835-clk fe104000.rng iproc-rng200 fe200000.gpio pinctrl-bcm2835 fe200000.gpiomem gpiomem-bcm2835 fe201000.serial uart-pl011 fe215000.aux bcm2835-aux-clk fe300000.mmcnr mmc-bcm2835 fe340000.emmc2 sdhci-iproc fe600000.firmwarekms vc4_firmware_kms fe980000.usb dwc_otg feb00000.hevc-decoder argon-mem feb10000.argon-local-intc argon-mem feb20000.h264-decoder argon-mem feb30000.vp9-decoder argon-mem
Still to write into text
- Standard XHCI USB controller, in addition to the embedded IP block that was in the Pi 1-3. The USB-A connectors are run by the XHCI block now, while the charging port is on the IP block. Previously they were all on the IP block.
- Network devices have a mac address mapping to https://maclookup.app/macaddress/DCA632 - the raspberry pi foundation's own block. Not attached to pci-e, somehow magically part of SoC.
- WLAN controller is connected to mmc0 using SDIO.
- SD controller is now a SDHCI thing. Should work according to spec (except for this, min clock frequency to 200kHz instead of 100kHz).
CPU is similar to the one in the Rpi3, except with the A53 cores replaced in-situ with A72. Same startup logic, same usage. Also limited to max 4 cores per chip by design.
GPIOs are similar, but have more options: https://elinux.org/RPi_BCM2711_GPIOs