0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MPFS-DISCO-KIT 向け Ubuntu 22.04 の構築(イントロ編)

Last updated at Posted at 2024-12-14

はじめに

MPFS-DISCO-KIT(Microchip PolarFire SoC FPGA Discovery Kit) で動作する Ubuntu 22.04 を構築する方法をいくつかの記事に分けて説明します。

上記の記事で構築した MPFS-DISCO-KIT 向け Ubuntu 22.04 Root File System、Linux Kernel、Boot Loader は次の URL にて公開しています。なお、これらはオフシャルなものではなく、筆者の魔改造がはいっています。ご使用の際はこの点にご留意してください。

この記事では、MPFS-DISCO-KIT の簡単な紹介、ブートシーケンス、クロス開発環境について説明します。

MPFS-DISCO-KIT とは

MPFS-DISCO-KIT(Microchip PolarFire SoC FPGA Discovery Kit) は、Microchip Technology 社の PolarFire SoC FPGA(MPFS095T_1FCSG325E) を搭載した開発用のキットです。主な構成は次のとおりです。

  • PolarFire SoC FPGA with 95k LEs
  • 1GByte main memory
  • 1x Gigabit Ethernet
  • 3x UART
  • 1x micro-SD interface
  • Form factor 4.1" x3.3"

詳細は次の URL を参照してください。

PolarFire SoC FPGA とは

PolarFire SoC FPGA は Microchip Technology 社が提供する SoC(System on Chip) FPGA ファミリの一つです。PolarFire SoC FPGA の主な構成は次のとおりです。

  • MSS(Micro Processor Sub System)
    • CPU Core Complex
      • 1x E51 RISC-V Monitor Core(RV64IMAC + 16KB iCache + 8KB DTIM)
      • 4x U54 RISC-V Application Core(RV64GC + 32KB iCache + 32KB dCache + MMU-Sv39)
      • 2MB L2 Cache or 1.8MB LIM
      • Branch Prediction
      • TileLink (Cache Coherency Inter Connect)
      • DMA Engine(4x independent DMA channels)
      • WCB(Write Combining Buffer)
      • PLIC(Platform Level Interrupt Controller)
      • CLINT(Core Local Interrupt Controller)
    • System Controller
    • pNVM(private Non-Volatile Memory)
    • AXI Switch
    • User Crypto Processor
    • DDR Memory Controller
    • Peripherals
      • 2x GbE
      • eMMC SD/SDIO
      • 2x CAN
      • 2x SPI
      • 2x I2C
      • 5x UART
      • 3x GPIO
      • 1x USB 2.0 OTG
      • RTC(Real-time Counter)
      • Timer
      • Watchdog
      • Frequency Meter
      • MSS-Fabric Interrupt Controller
      • 128KB eNVM(embedded Non-Volatile Memory)
    • FIC(Fabric Interface Controller)
  • FPGA Fabric

詳細は次の URL を参照してください。

ブートシーケンス

PolarFire SoC MSS には4つのブートモードがあります。

  • ブートモード0 はブランクデバイス、または組み込みソフトウェアのデバッグ時に使用されます。
  • ブートモード1 は MSS が電源投入時に eNVM からセキュアでないコードを実行を開始する場合に使用されます。
  • ブートモード2 はユーザー定義のセキュアブート認証を実装するためのものです。
  • ブートモード3 は Microchip 社が工場出荷時に提供する eNVM のセキュアブート認証を実装するためのものです。

今回説明する Ubuntu 22.04 システムでは、ブートモード1 でブートします。ブートシーケンスは次の手順で進みます。

ステージ0 (内部ROM)

ステージ0 のブートプログラムは内部 ROM にあり、PolarFire SoC のシステムコントローラーが実行します。

電源投入直後、PolarFire SoC のシステムコントローラーは デバイスのコンフィギュレーションが完了するまで、MSS をリセット状態に保ちます。その後、システムコントローラーは内部ROM のコードを実行します。pNVM に格納されたコンフィギュレーションデータに基づいて Core Complex(1x RISC-V CPU + 4x RISC-V CPU)をコンフィギュレーションします。

ステージ1 (HSS - Hart Software Services)

ステージ1 のブートプログラムは eNVM にあり、MSS が実行します。

今回説明する Ubuntu 22.04 システムでは HSS(Hart Software Services) を使います。

HSS は eNVM にプログラムされたステージ1 のプログラムで、主に次のような役割があります。

  • ブートローダーとしての機能
    • MSS の RISC-V Core (Hart: Hardware Thread) を初期化。
    • 外部ストレージ(eMMC、SD-Card、QSPI フラッシュなど)や内部ストレージからアプリケーションをロード。
    • 各 Hart に対応するコードを割り当てて実行を開始。
  • マルチコア管理
    • マルチコアシステムでの Hart の役割を設定。
    • 必要に応じて Hart を停止、再開、リセット。
    • 各 Hart のリソースを制御し、アプリケーションの分散実行をサポート。
    • 各 Hart 間のデータ共有や同期を提供。
    • メッセージパッシングや割り込み制御をサポート。
  • セキュアブート
    • セキュアブートプロセスを管理し、不正なコードの実行を防止。
    • 暗号化されたイメージの複合や検証を実行。
  • 仮想化サポート
    • 仮想化のための環境を準備し、各 Hart が異なる OS や RTOS を実行可能にする。
  • 周辺機器の初期化
    • DDR Memory やクロック、その他の周辺デバイスの初期化を担当。
    • PolarFire SoC 全体のシステムの初期化を実施。
  • コンソールとデバッグ支援
    • シリアルポート経由でデバッグコンソールを提供。
    • PolarFire SoC のデバッグや状態監視を支援。

なお、eNVM の内容を MSS から読むことは出来ますが、書き込むことは出来ません。
eNVM に書き込むには JTAGを介して行われます。

・ステージ2 (U-Boot)

ステージ2 のブートプログラムは外部ストレージにあり、DDR Memory にロードされて、MSS が実行します。

今回説明する Ubuntu 22.04 システムでは U-Boot を使います。

U-Bootはファイルシステムを使えたり、スクリプトや環境変数などが使えるので、その設定にしたがって、Linux のカーネルイメージ、Device Tree、場合によってはルートファイルシステムを DDR Memeoryに ロードします。その後、Linuxカーネルイメージに制御を移します。

クロス開発環境

U-Boot や Linux Kernel をビルドするためには RISC-V 用のコンパイラが必要です。また開発環境として PC を使う場合はクロス開発環境が必要です。
Ubuntu には gcc-riscv64-unknown-elf というパッケージがあるのですが、残念ながらこちらのコンパイラでは上手くいきませんでした。

そこで定番の riscv-gnu-toolchain をビルドして使います。詳細なビルド方法に関しては、以下の URL や参考をご覧ください。

今回説明する Ubuntu 22.04 システムでは riscv64-unknown-linux-gnu- を使います。

参考

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?