PetaLinuxでLチカやってみる ZYBO Z7-10


このエントリーをはてなブックマークに追加

将来的にLinuxを使いたいのと

PetaLinuxってなんだろうレベルの知識なので

とりあえず動くものを試してみることに(Lチカ)

下記を参考にした、基本的にやることは全部同じですんなりいった

ZYBO-Z7を用いたLチカ(Petalinux編) - aster_ismの工作室


環境は

  • Vivado 2017.3
  • PetaLinux 2017.3
    • よくわからなかったのでVivadoと同じバージョンのを入れた、たぶんそうしたほうがよい
  • Linux Lite 3.2
    • MacのVirtualBox上に構築した
    • Ubuntu16.04でも試してうまくいった
  • ZYBO Z7-10
    • 参考サイトはZYBO Z7-20だったが同じやり方でうまくいった
  • micro SDカードはTeamのClass10 16GBのものを用いた(RaspberryPi用に使ってたやつ)

ZYBOのボードファイルとかUARTのドライバなどは以前おこなったので下記を参考に

MacのVirtualbox内linuxにVivado2017.3をインストールする | ぬわーーーーーーー!!!



プロジェクトを構築していく


ひとまずVivadoを立ち上げてProjectを構築していく

以前のを参考に


Create Project


Next>


  • Project name: lnxled
  • Project location: /media/sf_virtualboxshare/Vivado/workspace
  • で設定した、Create project subdirectoryにチェックを入れた状態で Next>


  • RTL Project
  • Do not specify sources at this time にチェックを入れる
  • Next>


  • Boardを選ぶ、自分はZYBO Z7-10を使用したのでそれを選んだ状態で Next>


プロジェクトのSummaryが出て来るので Finish



回路を構築していく


Flow Navigator > IP INTEGRATOR Create Block Design


デフォルトでいいので OK


BlockのDiagramが開くので “+(Add IP)” でZYNQ Processingを加えていく


  • 検索窓に zynq と入れれば ZYNQ7 Processing System が出て来るのでダブルクリックする
  • processing_system7_0 が追加される


  • 緑色の部分に Run Block Automation が出て来るのでクリックする


  • Run Block Automation ダイアグラムが出て来るのでデフォルトの状態で “OK”


DDRとFIXED_IOが接続された状態になる


  • Boardタブのなかの 4 LEDs をダブルクリックする


  • Connect Board Component ダイアグラムが立ち上がる
  • デフォルトでGPIOを選択した状態のはずなので、そのまま “OK”


  • ふたたび、緑色の部分にある Run Connection Automation をクリック


  • ふたたび全部デフォルトでいいので “OK”


  • AXI GPIOを開くために axi_gpio_0 をダブルクリックする


  • IP Configurationタブ内の Default Tri State Value0x00000000 に設定する
  • “OK”


  • Validate Design(四角にチェックが入ったアイコン)をクリックしてデザインの確認を行う
  • なんかエラーが4つ出るが無視してよいので “OK”


  • Address Editorタブ内のOffset Address を確認しておく
  • おそらくデフォルトでは 0x4120 0000 なはず(あとでLinuxからLチカを実行するときのコマンドオプションで使う)


  • Sourcesタブ内の design_1(design_1.bd)を右クリック
  • Create HL Wrapper… をクリックして実行


  • Create HDL Wrapperダイアグラムが開く
  • Optionsで Let Vivado manage wrapper and auto-updateのほうにチェックが入ってるのを確認して “OK”


  • Design Sources(1) が design_1_wrapper になる
  • Flow Navigator > PROGRAM AND DEBUG > Generate Bitstream をクリック


  • No Implementation Results Available ダイアグラムが開く、そのまま “Yes”
  • もしかしたら別のダイアグラムが開くかもしれないが基本的にデフォルトのままで “OK” なり “Yes” にしてよい
  • Bitstreamが生成されるまで少し時間がかかるので待つ、自分の場合は12分ぐらいかかった


  • 終わったら Bitstream Generation Completed ダイアグラムが表示されるので Cancel で一旦閉じる


  • BitstreamをExportしていく, File > Export > Export Hardware… をクリック


  • Export Hardwareダイアグラムが開く、 Include bitstream にチェックを入れた状態で “OK”


ここまでやったらVivadoでの作業は終了なのでVivadoを終了しておく



PetaLinuxのインストール


  • PetaLinuxをインストールしていく
  • おそらく、自分が使用しているVivadoのバージョンと合わせたほうがよい
  • 自分は Vivado 2017.3 を使用しているので PetaLinux 2017.3 をインストールした
  • ダウンロードは下記から
    • ダウンロード
    • PetaLinux - 2017.3 インストレーション ファイル のところから PetaLinux 2017.3 インストーラーをクリックしてダウンロード
      • 8GBぐらいあるのでけっこう時間がかかる


  • 次に、どこでもいいのでPetaLinuxをインストールするディレクトリを作成する
    • PetaLinuxは一度インストールするとコピーや移動などは出来ないらしいので注意
    • じぶんはホームディレクトリに PetaLinux というディレクトリを作成してそこで作業を行った
    • 先程ダウンロードしたPetaLinuxのインストーラー(petalinux-v2017.3-final-installer.run 2017.3)を作業ディレクトリにコピーして行った
  • 基本下記参考リンク先通りに行った
1
2
3
4
5
$ mkdir -p PetaLinux
$ cd PetaLinux
$ cp ~/Download/petalinux-v2017.3-final-installer.run 2017.3 ./
$ chmod +x petalinux-v2017.3-final-installer.run 2017.3
$ ./petalinux-v2017.3-final-installer.run 2017.3
  • インストーラーを実行すると Checking installer checksum のところでけっこう時間かかった、10分~20分ぐらい?
  • その後 Extracting PetaLinux installer... のほうに移るけどこれが3分~4分ぐらいかかった
  • その後、ライセンスに同意するよねみたいな画面になってライセンスの文字列が表示されるので、 キーボードの q で文字列を終了させて
  • y/N でインストールしていいかみたいに聞かれるので キーボードの y を押して同意する、これが計三回表示された


  • その後warningが表示されたけど、インストール場所指定してないからカレントディレクトリに保存するけど大丈夫か? みたいなやつだったので y でproceed
  • その後、PetaLinuxディレクトリは空じゃないけど大丈夫? みたいなのがでてきたので y でproceed
    • たぶんPetaLinuxのインストーラーを入れておいたからだと思う、まぁ大丈夫だった
  • 時間がかかるが放置しておいたらそのうちインストールが終わる(1時間はかからなかったかなと思われる)



PetaLinuxの環境設定


PetaLinuxを利用するには、作業環境のセットアップをしないといけないっぽい

FPGAの部屋 UltraZed-EG Starter Kit でPetaLinux 2017.3 をブートする

PetaLinuxを利用する際は毎回しないといけないっぽい

めんどうなら .bashrc あたりに記載しておいて自動実行させてもよさそうだけどあまりそういうことやってる人が見当たらないので保留

PetaLinuxをインストールしたディレクトリに settings.sh があるので実行する、自分は ~/PetaLinux/settings.sh となっていたので

1
$ source ~/PetaLinux/settings.sh


ここまで行ったら、PetaLinuxを利用する環境が整うのでビルドをおこなっていく



ビルド


画像は無いが

基本的には ZYBO-Z7を用いたLチカ(Petalinux編) - aster_ismの工作室 の通りでおこなっていく

自分は先程Vivadoで作成したプロジェクトは /media/sf_virtualboxshare/Vivado/workspace/lnxled に作成したのでそこに lnxled.srcs などが格納されている

のでそこでPetaLinuxのプロジェクトを作成してあげた

1
2
3
4
$ cd /media/sf_virtualboxshare/Vivado/workspace/lnxled/
$ petalinux-create -t project -n lnxled.lnx --template zynq
$ cd lnxled.lnx
$ petalinux-config --get-hw-description ../lnxled.sdx


コンフィグ画面が出て来るのでExitする

そのあともダイアログが出てくるけどSaveだかなんだかそのままOKした気がする

設定が終わるまでしばし待つ


設定が終わったらビルドしていく

1
$ petalinux-build

けっこう時間がかかる、小一時間ぐらい?


buildが終わったら、BOOT.bin を作成する

1
$ petalinux-package --boot --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/design_1_wrapper.bit --u-boot --force

Warningは出てきたが無視

後は images/ 以下に BOOT.BIN と image.ub が出来るので、これをSDカードに書き込んであげる

書き込むといってもFAT32でフォーマットしたSDカードにコピペしてあげるだけでよかった



SDカードに書き込む


SDカードへの書き込み方が色々でてくるけど、結局MacでFAT形式でフォーマットしたSDカード内にコピペしてあげればいいだけだった

MacでFATフォーマット(ディスクユーティリティを使った、フォーマット形式は MS-DOS(FAT))してSDカードubuntuに挿してBOOTとimageをコピペしてZYBOに挿して電源つければいけた

ZYBOにSDカードを挿して、SDカードからブートするようにピンヘッダを付け替えてあげて、電源を供給(自分はUSBケーブル経由で給電した)してあげると

うまくいけばZYBO Z7-10のLD12(DONE) が緑色に点灯するので

あとはUSBケーブル経由でシリアル通信すればLinuxのコンソールに入れるはず

自分はZYBO Z7-10 を Mac に接続してあげてターミナルからscreenで接続した

(ZYBOの電源を入れないとシリアルポートがみえないので注意)

Macのターミナルで接続する、自分はZYBOの電源を入れた時のポートが /dev/tty.usbserial-00002014A/dev/tty.usbserial-00002014B

だった、このうちLinuxのコンソールは /dev/tty.usbserial-00002014B みたいだったので下記コマンドで接続した

1
$ screen /dev/tty.usbserial-00002014B 115200


接続に成功するとコンソールが下記のようになるので

1
2
3
PetaLinux 2017.3 lnxled.lnx /dev/ttyPS0
lnxled.lnx login:

login: root
password: root

で接続できる


あとは、先程確認したAddress Offset(0x41200000)を用いてLEDを光らせる

おそらくコンソールの名前が root@lnxled:~# のようになっていると思うので

1
root@lnxled:~# devmem 0x41200000 32 0x1

とすればLD0が点灯する

0x1 の部分は2進数で 0001 のことなので、たとえば4つあるLEDの真ん中2つを光らせたかったら

0110 を指定してやればいいので下記コマンドになる

1
root@lnxled:~# devmem 0x41200000 32 0x6

以上、PetaLinux経由でのLチカを動かすことができた

PetaLinuxを終了するときはコンソールで halt しておいて

1
root@lnxled:~# halt

最後に reboot: System halted と出てきたら電源を切って良い(たぶん)

screenコマンドを終了するときは Ctrl-a -> k -> y


このエントリーをはてなブックマークに追加