Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Raspberry Pi 5のRP1でも自作プログラムをうごかしたい!

Avatar for hotaru hotaru
August 21, 2026
88

Raspberry Pi 5のRP1でも自作プログラムをうごかしたい!

Avatar for hotaru

hotaru

August 21, 2026

Transcript

  1. 自己紹介 ほたるいか 東京科学大学 学士3年 ロケットサークルCREATE、デジタル創作同好会 Trap所属 サイボウズ・ラボユース ‘25 SecHack365 '25

    坂井ゼミ セキュリティキャンプ 2024 全国大会 ハイパーバイザ自作ゼミ ハードウェアとソフトウェアの境界で遊んでいます 詳細なプロフィール ハイパーバイザ 基板作成 コンパイラ/リンカ作成 2
  2. 独自3rd stage bootloaderでロードする BCM2712のCortex A76側でもRP1のfirmwareの変更は可能なので、3rd Stage Bootloaderを作成して 起動することにした この3rd Stage

    BootloaderはSD bootの他にもTFTP bootに対応したので、ネットワークブートで RP1のプログラムを書き換えられる SPI flash firmware VideoCoreVI VPU内 bootrom bootsys BCM2712 bootmain Trusted Firmware 独自3rd Stage Bootloader Linuxなど I2C I2C SRAM 64KiB SRAM 64KiB RP1 RP1をリセット Raspberry Pi 5の今回の初期起動プロセス RP1 11
  3. RP1がBCM2712から見えなくなった プログラムのロード以外でBCM2712からRP1に通信を行うためには、PCIeを経由する必要がある RP1の通常のプログラムでは適切にPCIeのendpointとして見えていたが、RP1のcustom firmwareを 入れたら、GPIOによるLチカはできている状態でもPCIeのendpointが見えなかった PERST# assert PCIe bridge /

    Root Port reset SERDES IDDQ 解除 MDIO設定 PCIe window 設定 RP1のPCIe endpointを リセット状態にする BCM2712側PCIeコントローラを 初期状態に戻す PCIe PHYを低消費電力 状態から起こす PCIe PHYのアナログ・ リンク関連設定を行う CPUアドレスとPCIeアドレス の変換領域を設定する Root Bridge 設定 BCM2712をPCIe Root Complex として動作させる PERST# deassert Link Up待ち Configuration scan BAR割当て RP1 endpointのPCIeリセット を解除する PHY間のLink Trainingが 完了するまで待つ PCIe Configuration Space を読んでRP1を探す RP1が要求するMMIO領域へ CPU側アドレスを割り当てる Raspberry Pi 5におけるRP1のPCIeの初期化プロセス 13
  4. RP1で必要なendpoint設定 公式firmwareを解析したところ、endpoint設定を行う必要があるとわかった endpoint設定は、BCM2712での変更に対応する形で設定していく必要がある BCM2712 RP1 firmware start SRAM → ISRAM/DSRAM

    PERST# assert 〜 Root Bridge 設定 PERST解除待ち PERST# deassert reset release CORE_ALIVE Link Up待ち DBI / iATU / BAR LTSSM LINKUP Configuration scan BAR割当て 通常firmware処理 15