0
0

Petalinux 2021.2 & ZedBoard (2) Linuxを動作させてみる

Last updated at Posted at 2024-08-02

はじめに

本稿はZedBoard上でLinuxやカスタムIPを動作させるための手順をまとめたものである。

目次

(1) 開発環境の構築
(2) Linuxを動作させてみる (今回の内容)

今回やること

PetalinuxでLinuxイメージを作成しSDカードにコピー、SDカードをZedBoardに読み込ませてLinuxの起動およびWindow PCとシリアル通信ができることを確認する。

大まかな流れ

  1. Boardファイルの配置
  2. XSAファイルの作成 (Vivado)
  3. 起動イメージの作成 (Petalinux)
  4. SDカードへのコピー
  5. Linuxの動作確認

手順詳細

1. Boardファイルの配置

まずBoard FileというFPGAボードの様々な情報がまとめられたファイルを所定のディレクトリに配置する必要がある。ZedBoardの場合DiglentのGithubページから入手可能である。ダウンロードしたZIPファイルを展開し、vivado-boards-master/new-/board_filesにある全てのディレクトリを以下の場所にコピーする (zedboardだけでもOK)。

SnapCrab_NoName_2024-8-2_17-13-8_No-00.png

C:\Xilinx\Vivado\2021.2\data\xhub\boards\XilinxBoardStore\boards\Xilinx

ちなみにViado上でBoardファイルを追加することもできる。

2.XSAファイルの作成 (Vivado)

2.1 プロジェクトの作成

Vivadoを起動する。今回はプロジェクト名を"Simple_PS"として設計を進める。基本的にはデフォルトの設定でNextをクリックし続けるが、以下の画面では"Boards"のタブをクリックし、"Search"に"zed"と入力するとZedboardが表示される。ZedBoardの行をクリックし選択状態にしてNextをクリック。確認画面が表示されるのでFinish。

SnapCrab_NoName_2024-8-2_17-21-23_No-00.png

2.2 回路図の作成

左側のメニューのCreate Block Designをクリックし回路図エディタを起動する。画面中央の「+」をクリックすると追加できるIPのリストが表示される。Searchの欄に"zynq"と入力すると"ZYNQ Processing System"が表示される。これをダブルクリックするとZYNQが配置される。SnapCrab_NoName_2024-8-2_17-30-22_No-00.png

画面やや左側上部の"Run Block Automation"をクリックし、デフォルトの状態でOKをクリックする。
SnapCrab_NoName_2024-8-2_17-35-17_No-00.png

ZedBoardに合わせた構成に自動修正されるが、"FCLK_CLK0"のピンをドラッグし"M_AXI_GP0_ACLK"のピンに重ねてこれらの端子間を結線する必要がある。

SnapCrab_NoName_2024-8-2_17-38-16_No-00.png

ZYNQのモジュールをダブルクリックし、Peripheral I/O Pinsをクリックする。"Ethernet 0"の項目をクリックして"MDIO"を表示させる。この状態で画面を右方向にスクロールさせると、"EMIO"が黄緑色でハイライトされた状態になっている。その隣の"MDIO"をクリックすると"MDIO"がハイライトされる。この状態でOKをクリックとZedBoard上のLANポートを使えるようになる。

SnapCrab_NoName_2024-8-2_17-41-54_No-00.png

以下のようなWarningが表示されるが特に問題ない。
SnapCrab_NoName_2024-8-2_17-51-13_No-00.png

左上の"Sources"のタブをクリックし、design_1(design_1.bd)を右クリック"Create HDL Wrapper"をクリックし、トップモジュールを作成、Generate Bitstreamを実行する。
SnapCrab_NoName_2024-8-2_17-52-18_No-00.png

Bitstream生成が完了したら、メニューバーのFileからExport->Export Hardwareを選択する。基本的にはデフォルトのままだが以下の画面では"Include Bitstream"を選択すること。プロジェクトのディレクトリに"design_1_wrapper.xsa"が生成される。

SnapCrab_NoName_2024-8-2_18-2-29_No-00.png

3. 起動イメージの作成 (Petalinux)

3.1 作業ディレクトリの作成

ここからはUbuntuマシンでの作業となる。まず作業ディレクトリを作成する。ここでは~/workディレクトリ以下にzedboardディレクトリ、zedboardディレクトリ以下にxsaディレクトリを作成し、xsaディレクトリにdesign_1_wrapper.xsa、zedboardディレクトリ以下でビルドの作業を行うことにする。

~/work
      -> zedboard
         -> xsa
            -> design_1_wrapper.xsa
         -> (ビルド用のディレクトリ1)
         -> (ビルド用のディレクトリ2)
         ...

3.2 プロジェクトの作成 (petalinux-create)

zedboardディレクトリに移動し、以下のコマンドを実行、プロジェクトを作成する。Simple_PSというディレクトリが作成されるのでそこに移動する。

petalinux-create -t project -n Simple_PS -s /cad/share/avnet-digilent-zedboard-v2021.2-final.bsp
cd Simple_PS

3.3 プロジェクトの設定 (petalinux-config)

以下のコマンドを実行し、Petalinux設定画面を起動する。

petalinux-config --get-hw-description=../xsa/design_1_wrapper.xsa

以下のようなウィンドウが起動する。カーソルを"Yocto Settings"まで移動させEnter、以下のようにそれぞれ設定する。設定が終わったら"Exit"を選択し、設定を保存して終了する。

Add pre-mirror url -> file:///cad/share/downloads
Local sstate feeds settings -> /cad/share/sstate_aarch64_2021.2/aarch64
[ ] Enable Network sstate feeds (Spaceキーでチェックを外す)
[*] Enable BB NO NETWORK

SnapCrab_NoName_2024-8-2_18-31-20_No-00.png

次に./project-spec/meta-user/conf/petalinuxbsp.confをvi等のエディタで開き、以下の2行を追加する。

DL_DIR = "/cad/share/downloads"
SSTATE_DIR = "/cad/share/sstate_aarch64_2021.2/aarch64"

以上でビルドの準備が整った。

3.3 ビルドの実行 (petalinux-build)

以下のコマンドでビルドを実行する。結構時間がかかる。ちなみに上記のdownladsとsstateを設定しないと30分以上かかる…。

petalinux-build

3.4 イメージファイルの作成 (petalinux-package)

以下のコマンドでイメージファイルを作成する。ちなみに2回目以降は末尾に"--force"オプションが必要。

petalinux-package --boot --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/*.bit --u-boot

以下の3つのファイルが作成されていることを確認する。

  • BOOT.bin (起動イメージ)
  • image.ub (Linuxカーネルイメージ)
  • boot.scr (起動スクリプト)

SnapCrab_NoName_2024-8-2_18-56-50_No-00.png

4. SDカードへの書込み

SDカードをUbuntuマシンに接続し、dmesgで識別番号を確認する。ここでは"sdb"として作業を進める。管理者権限でfdiskコマンドを実行する。

sudo fdisk /dev/sdb

始めに"p"を入力し、既存パーティションを確認する。2つのパーティションがあることが分かる(ちなみに作成済の起動イメージが入っている)。これを削除するために"d"を入力しパーティション情報を削除する、これを2回行う(この段階ではまだ反映されていない)。
SnapCrab_NoName_2024-8-2_19-4-51_No-00.png

再度"p"を入力しパーティションが消えていることを確認し、"w"を入力して反映させる。ここで一旦fdiskが終了する。
SnapCrab_NoName_2024-8-2_19-9-31_No-00.png

再度sudo fdisk /dev/sdbを実行する。今度は"n"で新たにパーティションを作成する。

  • 1回目は基本的にはデフォルトでyes、Last Setorの所は+1Gとしておく。
  • 2回目は全てデフォルト。空き領域が割り当てられる。
    SnapCrab_NoName_2024-8-2_19-20-2_No-00.png

作成したら"w"を入力して反映させる。次に以下のコマンドで各パーティションにファイルシステムを作成する。

sudo mkfs.vfat -n ZYNQ_BOOT /dev/sdb1
sudo mkfs.ext4 /dev/sdb2 -L ROOT_FS

作成したファイルシステムにSDカードのイメージをコピーする。

sudo mkdir /mnt/sd1
sudo mount /dev/sdb1 /mnt/sd1
sudo cp ./images/linux/BOOT.BIN  /mnt/sd1
sudo cp ./images/linux/image.ub  /mnt/sd1
sudo cp ./images/linux/boot.scr  /mnt/sd1
sudo umount /mnt/sd1

5. Linuxの動作確認

※ Tera Term Proはインストール済であるとする。

5.1 ケーブルドライバのインストール

ZedBoardでシリアル通信を行うにはCypressのUSBドライバが必要となるが、CypressはInfenionに買収されており現在はInfenionのページからUSBドライバをダウンロードすることになる。Infenionのページに移動し、WindowsのUSB-Serial Windows Driver Installerをダウンロードし、インストールする。設定はデフォルトのままでOK。

5.2 ZedBoardとWindows PCの接続

ZedBoardに電源ケーブルとUSBケーブル、LANケーブルを接続する。USBのポートは幾つかあるが基板上に"J14"および"UART"書かれているポートに接続すること。またDigilentのロゴの上のジャンパが以下の写真のようになっていることを確認する。

図1.png

IMG_0401.jpg

この状態で電源を入れデバイスマネージャを起動し、"ポート(COMとLPT)"を選択し、"USB Serial Port (COM8)"を右クリックして (番号は環境依存)プロパティを選択する。
SnapCrab_NoName_2024-8-2_19-47-16_No-00.png

Port Settingsのタブをクリックし"Bits Per Seconds"115200にし、Advancedのボタンをクリック、以下のように設定する。

SnapCrab_NoName_2024-8-2_19-39-37_No-00.png

SnapCrab_NoName_2024-8-2_19-39-28_No-00.png

以上で準備が整った。

5.3 Linuxの起動確認

SDカードをZedBoardのスロットに差し込み、電源をオンにする。次にTera Termを起動し、接続先を"シリアル"にする。
SnapCrab_NoName_2024-8-2_19-54-0_No-00.png

色々と起動ログが表示されLinuxの起動が完了する。必要最低限のコマンドした使えないがLinuxとして動作していることが分かる。

SnapCrab_COM8 - Tera Term VT_2024-8-2_20-0-56_No-00.png

pingコマンドでWindowマシンとLAN経由でつながっていることも確認できる。

SnapCrab_COM8 - Tera Term VT_2024-8-2_20-2-34_No-00.png

以上で動作確認は終了。shutdown -h nowでシステムを停止し、電源をオフにする。

以降これをベースにしてZedBoardで動作するLinuxのカスタマイズを行っていく。

(終)

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