LoginSignup
39

More than 3 years have passed since last update.

BCM2711について

Last updated at Posted at 2019-07-01

Raspberry Pi 4 Model Bに搭載されているBCM2711についてまとめてます。

主にベアメタルのプログラミングするときのため用です。

BCM2711のオフィシャルドキュメント

BCM2711のDevice Tree

デバイスツリーを読むとBCM2711に搭載されているペリフェラルと接続が分かります。

こちらのデバイスツリーは何に使うのか不明です。(bcm2838を使った開発ボードかな。)

BCM2711のブート

  • BCM2711はVPU(VC6)でROMにあるコードを起動する。
  • その次にVPU(VC6)でSPI接続されたEEPROMにあるコードを実行する。
  • SD cardにbootcode.binがある場合はEEPROMにあるコードの代わりにbootcode.binを実行する。
  • bootcode.binは署名が必要です。
  • その後にARMを起動する。ARMの起動する冒頭部分のみソースコードが公開されている。
  • armstubs: Add BCM2711 support

CPU

  • ARM Cortex A72 1.5GHz x 4

GPU

割り込みコントローラ

  • BCM2835由来の独自割り込みコントローラ は見当たらない。
  • BCM2836由来の独自割り込みコントローラ は載ってるっぽい。(0x40000000)
  • ARM製割り込みコントローラ GIC400 (0x40041000)が載ってる。
  • どういうルーティングなのか分からん。
  • legacy interrupt controller を使うか、GICを使うかはconfig.txtで設定できる。
  • GICの初期化コードは armstubsに含まれている。
ARM_GICD_BASE 0xFF841000
ARM_GICC_BASE 0xFF842000
ARM_GIC_END   0xFF847FFF
  • PPI はコアごとの割り込み Generic Timerなど
  • SPI はコア共有の割り込み DMA, UARTなど

PCI Express

Ethernet

内蔵USBホスト

  • 内部バス接続 (0x7e980000)
  • RPI2と同じ synopsys designwareのUSBホストコントローラ (0x7e980000)
  • 電源供給用のUSB Type Cのポートにつながっている。 Deviceとしても動く。
  • BCM2711にもUSB3ホストコントローラ(xhci)を搭載しているっぽいが使っていない。

外付けUSBホスト

  • PCIeで外部のUSB3 Host controller VIA VL805に接続。xhci準拠。
  • VL805はPHYを4port分内蔵している。
  • Linuxで動くシンプルな初期化コード xHCI on RPi4

MMC/SD

  • emmc2, mmcnr, sdhostの3つを搭載
  • microsdスロットはemmc2に接続
  • Linuxドライバ drivers/mmc/host/sdhci-iproc.c
  • wlanはmmcnrに接続 nrはnon removeの意味
  • Linuxドライバ drivers/mmc/host/sdhci-iproc.c
  • sdhostは使っていない。拡張端子に割り当て可

I2S

H264 decoder, HEVC(H265) decoder, VP9 decoder

RNG

UART

  • uart2, uart3, uart4, uart5。PL011のUARTが4つ追加。

SPI

  • spi3, spi4, spi5, spi6。SPIが4つ追加。

I2C

  • i2c3, i2c4, i2c5, i2c6。I2Cが4つ追加。

GPIO

また更新する予定です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39