2017/07/29

[zybo]PetaLinux v2017.2でHDLを書かずにLED制御の準備をする (2017/7月)

今月のこれまでの成果として、Zybo + PetaLinux v2017.2で、HDLを書かずにLED制御の準備をするまでの手順を書き残そう。
「LED制御の準備」というのは、ドライバを作る手前まで、という状態に持っていくことを指している。
まだチュートリアルが動かせないシリーズがあるので、DeviceTreeなども解決してから続きを書こう。


ツールは、こう。

  • Vivado v2017.2 (Windows10)
  • XSDK v2017.2 (Windows10)
  • PetaLinux v2017.2 (Xubuntu 16.04 on VirtualBox)


HDFファイル作成

まず、Vivadoでの作業を行う。

  1. Vivadoを起動
  2. Projectを作成する
    1. Boardは"Zybo"を選択
  3. "Create Block Design"をクリック
    1. "+"アイコンをクリックして、Zynqを追加
    2. 上の方にリンク"Run Block Automation"が出てくるので、クリックして、チェックされているのを確認して、OK
    3. "+"アイコンをクリックして、AXI GPIOを追加
    4. 上の方にリンク"Run Connection Automation"が出てくるので、クリック
      1. 一番上のツリーにチェックする
      2. axi_gpio_0>GPIOの中から"leds_4bits"を選択して、OK
    5. LinuxからEthernetを使いたい場合は、ZYNQをダブルクリック
      1. 左のPeripheral I/O Pinsをクリック
      2. Searchに"Ethernet"と打つ
      3. Ethernet0>MDIOにチェックが入っているので、右にスクロールさせて、MDIOをクリックしてOK
    6. Save
  4. 左側のツリーでSourcesタブを選択し、Design Sourcesの下にある項目(たぶんdesign_1(design_1.bd))を右クリック
    1. Create HDL Wrapper...を選択
    2. ダイアログが出てくるので、auto-updateの方になっているのを確認して、OK
    3. Critical Messagesダイアログが出てくるが、気にせずOK
  5. "Generate Bitstream"をクリック
    1. 終わるまで待つ
    2. 終わったらダイアログが出てくるので、Cancelを選択してOK
  6. メニューから、"File > Export > Export Hardware..."を選択
    1. Include bitstreamにチェックして、OK
  7. メニューから、"File > Launch SDK"を選択
    1. 立ち上がったら、自動的に関連するファイルを作ってくれるので、終了させる
  8. Vivadoも終了させる



PetaLinux image作成

  1. PetaLinuxの設定ファイルを読み込む
    $ source settings.sh
  2. プロジェクトを作るフォルダに移動(お好きな場所へ)
  3. 空のプロジェクトを作る。今回は"gpioled"という名前にする。
    $ petalinux-create -t project -n gpioled --template zynq
  4. できたディレクトリ(今回はgpioled)に移動する
    $ cd gpioled
  5. さきほど作ったVivadoプロジェクトの中から拡張子がsdkのフォルダ内にある"design_1_wrapper_hw_platform_0"というような名前のフォルダをまるごとgpioledの中にコピーする
  6. 読込んで設定
    $ petalinux-config --get-hw-description=./design_1_wrapper_hw_platform_0
  7. 特に変更せず終わらせると、そこそこ時間かかる処理が始まる。
  8. 忘れていたが、LEDのドライバを準備する。今回はleddrvという名前にする。
    $ petalinux-create -t modules -n leddrv --enable
  9. "gpioled/project-spec/meta-user/recipes-modules/leddrv"辺りにファイルができているので、うまいこと編集するとよいのだが、まずはテンプレートのままにしておく。
  10. ビルドする。こちらは時間がかかる。
    $ petalinux-build
  11. BOOT.BINを作る
    $ petalinux-package --boot --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/design_1_wrapper.bit --u-boot --force


これで、BOOT.BINとimage.ubができたので、SDカードにコピーしてZyboを起動。
ログインして、ドライバを確認。

# ls /lib/modules/4.9.0-xilinx-v2017.2/extra/
leddrv.ko

read/writeを用意していないが、insmodくらいならできるだろう。

# insmod /lib/modules/4.9.0-xilinx-v2017.2/extra/leddrv.ko
leddrv: loading out-of-tree module taints kernel.
<1>Hello module world.
<1>Module parameters were (0xdeadbeef) and "default"

open/closeもできそうだが、デバイスファイルがないのでできない気がする。


ひとまず、これで、デバイスファイルとドライバを作ればLED制御できそうな状態になったと思う。
以降の調査は、これからやっていこう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。