Raspberry Pi 4: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
m (Raspberry pi 4 with 8 GB memory are now available)
 
(8 intermediate revisions by 4 users not shown)
Line 2: Line 2:
== 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 ==
== Hardware ==


CPU is a BCM2711, containing 4 Cortex-A72 cores. In Linux they appear as
- Video Core VI. Compatible with Video Core IV. New open source driver exists

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.
- 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. Likely attached to pci-e as well.
- 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.


- SD controller is now a SDHCI thing. Should work according to spec.
- WLAN controller is connected to mmc0 using SDIO.

- SD controller is now a SDHCI thing. Should work according to spec (except for [https://github.com/torvalds/linux/blob/master/drivers/mmc/host/sdhci-iproc.c#L188 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.
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
GPIOs are similar, but have more options: https://elinux.org/RPi_BCM2711_GPIOs

== See Also ==
* [[Raspberry Pi Bare Bones]]

[[Category:ARM]]
[[Category:Raspberry Pi]]

Latest revision as of 11:39, 10 February 2023

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

See Also