ZedBoard(Zynq)の構成と起動フローまとめ
Wifiの解剖のため、これからOpenwifiで使うZedBoardについて調べたことをまとめてみた。
一、全体構成(PS + PL)
ZedBoard は Zynq-7000 SoC をベースとしたボードで、主に以下の構成から成ります:
Zynq SoC
├── PS(Processing System)
│ ├── ARM Cortex-A9
│ ├── DDR コントローラ
│ ├── 各種周辺機能(UART / SD / Ethernet)
│ └── OCM(オンチップメモリ)
│
└── PL(Programmable Logic)
└── FPGA(ユーザー定義ロジック)
🔹 PS(プロセッシングシステム)
- CPU(Cortex-A9)
- Linux を実行
- 周辺機器の制御
- DDR / SD カードへアクセス可能
🔹 PL(プログラマブルロジック)
- FPGA 領域
- bitstream により回路を構成
- AXI を介して PS と通信可能
二、メモリ構成
メモリ構成
├── OCM(オンチップメモリ)
│ └── 起動初期(FSBL)で使用
│
└── DDR(外部メモリ)
└── U-Boot / Linux / アプリを実行
| 種類 | 位置 | 特徴 |
|---|---|---|
| OCM | チップ内部 | 小容量・高速・電源投入直後から使用可 |
| DDR | チップ外部 | 大容量・初期化が必要 |
三、SDカード構成
SDカード
├── パーティション1(FAT)⭐ 起動用
│ ├── BOOT.bin
│ └── image.ub
│
└── パーティション2(ext4)⭐ rootfs
├── /bin
├── /etc
├── /home
└── ユーザプログラム
🔹 各ファイルの役割
| ファイル | 説明 |
|---|---|
| BOOT.bin | FSBL + bitstream + U-Boot |
| image.ub | Linux カーネル(U-Boot 用) |
| rootfs | Linux システム + アプリ |
四、BOOT.bin の構成
BOOT.bin
├── FSBL(First Stage Boot Loader)
├── bitstream(任意)
└── U-Boot
五、起動フロー(全体)
電源投入
↓
BootROM(チップ内蔵)
↓
SDカードから BOOT.bin を読み込み
↓
FSBL を OCM にロード
↓
FSBL 実行
↓
DDR 初期化
↓
PL 設定(bitstream 書き込み)
↓
U-Boot を DDR にロード
↓
U-Boot 実行
↓
image.ub を DDR にロード
↓
Linux カーネル起動
↓
rootfs をマウント
↓
/sbin/init 実行
↓
ユーザプログラム起動
六、各コンポーネントの役割
| コンポーネント | 役割 |
|---|---|
| BootROM | FSBL をロード |
| FSBL | ハード初期化・U-Boot ロード |
| U-Boot | Linux をロード |
| Kernel | ハード制御・システム管理 |
| rootfs | 実行環境を提供 |
七、重要な概念
🔹 PS と PL
- PS = CPU + OS 実行
- PL = FPGA(ハードウェア処理)
🔹 image.ub
-
U-Boot 用の起動イメージ
-
内部構成:
- Kernel
- Device Tree
- initramfs(任意)
🔹 rootfs
-
Linux のルートファイルシステム
-
内容:
- コマンド(ls / bash)
- 設定ファイル(/etc)
- アプリケーション
🔹 bootargs
- U-Boot から Kernel に渡す起動パラメータ
- rootfs の場所やコンソール設定を指定
八、まとめ
ZedBoard の起動は以下の流れで進む:
👉 BootROM → FSBL → U-Boot → Linux → アプリケーション
✔ 役割整理
- BOOT.bin → 起動用
- image.ub → カーネル
- rootfs → システム環境
九、補足ポイント
- OCM は起動初期のみ使用
- DDR がメインメモリ
- PL は bitstream が必要
- rootfs が「実行環境」の本体