Raspberry Pi 4
Raspberry Pi 4
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.
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