はじめに
Raspberry Pi 5 にはメインとなるSoCである BCM2712 の他に I/O chip である RP1 なるものも載っています。
今回は、RP1 について調べてみました。
RP1
arch/arm/boot/dts/rp1.dtsi の中を覗いてみたら、下記のような機能が入っていました。
- raspberrypi,rp1-clocks
- pl011-axi : rp1_uart0, 1, 2, 3, 4, 5
- snps,dw-apb-ssi" : rp1_spi0, 1, 2, 3, 4(target/slave), 5, (6), 7, 8
- snps,designware-i2c : rp1_i2c0, 1, 2, 3, 4, 5, 6
- raspberrypi,rp1-pwm : rp1_pwm0, 1
- snps,designware-i2s : rp1_i2s0, 1, 2
- raspberrypi,rp1-sdio-clk : rp1_sdio_clk0, 1
- raspberrypi,rp1-adc : rp1_adc
- raspberrypi,rp1-gpio :
- cdns,macb : rp1_eth
- raspberrypi,rp1-cfe : rp1_csi0, 1
- snps,dwcmshc-sdhci : rp1_mmc0, 1
- snps,axi-dma-1.01a : rp1_dma
- snps,dwc3 : rp1_usb0, 1
- rp1_gpio
- drm
- raspberrypi,rp1dsi : rp1_dsi0, 1
- raspberrypi,rp1vec : rp1_vec
- raspberrypi,rp1dpi : rp1_dpi
この中で使っている機能は、
- i2c0: &rp1_i2c0 { };
- i2c1: &rp1_i2c1 { };
- i2c2: &rp1_i2c2 { };
- i2c3: &rp1_i2c3 { };
- i2c4: &rp1_i2c4 { };
- i2c5: &rp1_i2c5 { };
- i2c6: &rp1_i2c6 { };
- i2s: &rp1_i2s0 { };
- i2s_clk_producer: &rp1_i2s0 { };
- i2s_clk_consumer: &rp1_i2s1 { };
- pwm0: &rp1_pwm0 { };
- pwm1: &rp1_pwm1 { };
- spi0: &rp1_spi0 { };
- spi1: &rp1_spi1 { };
- spi2: &rp1_spi2 { };
- spi3: &rp1_spi3 { };
- spi4: &rp1_spi4 { };
- spi5: &rp1_spi5 { };
- csi0: &rp1_csi0 { };
- csi1: &rp1_csi1 { };
- dsi0: &rp1_dsi0 { };
- dsi1: &rp1_dsi1 { };
- dpi: &rp1_dpi { };
- vec: &rp1_vec { };
まとめると、
です。
下図は、ここ から説明のために引用します。
左側にあるのが RP1 です。RP1からGbEコネクタとUSB 3 (x2)コネクタへ配線しているのが見えます。また、CSI/DSIの2個のコネクタも RP1 と接続しています。
BCM2712 と RP1 は、PCIe Gen2 x4 で接続しています。
おわりに
BCM2712は 28nm、RP1は 40nmで開発したようです。BCM2712 の PCIe は Gen3 ですが、RP1 の PCIe は Gen2 のようです。
追記)、2023.10.07
なんと、Cortex M3が2個載っている。下図を説明のために引用します。
Raspberry Pi Nanoに載っているのは、Broadcom BCM2835
追記)、2023.10.10
追記)、2023.10.12
From the RPi forums:
— Longhorn (@never_released) 2023年10月11日
The RP1 firmware is uploaded over I2C. PCIe link not initialised until that firmware is uploaded. No plans to open-source RP1 firmware.
RP1のfirmwareはI2C経由でダウンロードされ初期化されるまでは PCIe が使えない。。。この部分の公開の予定は無さそう。