2019年9月28日土曜日

PetaLinux(3)

今回でこの学習シリーズは終わり。




この回は、ZYBOのボードファイルの定義ミスによってLANが使えなかったという記事。PYNQ-Z1ボードではこの事象はなかったのでほとんどスルー。




この回の記事は、TCF機能を使ってLAN経由でボードのデバッグを行う方法だった。これは参考になった。

Windows側のSDKツールでプロジェクトを作成する前に、petalinux側でsysrootをビルドしておき、それをWindows側へ持ってくる必要があった。この点の記述がなかったので調べたりして分かるまでに時間がかかった。
まず、以下のコマンドを実行する

petalinux-build -s
petalinux-package --sysroot
そして以下のように出来上がったファイルをzip化し、Windows側へ持ってくる必要があった。
zip -r sysroot.zip  work/peta//images/linux/sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi
SDKのプロジェクト作成時に、zipを展開したフォルダーsysrootを追加指定する。

これはLinuxを知っていれば分かることなのでスキップ。

またPSの記事なのでパス。

これもPSの記事。しかも私が最終的にやりたいFPGAマイニングではデバイスドライバは必要ないのでこれもパス。

この記事も上記と同様の理由でパス。
「IoT化」は面白そうなので、別な機会があればやってみたい。



以上、最後は記事を読んで終わりだった。
そもそもマイニングが目的で始めた学習だったので必要のない部分はパスでも問題なし。(笑)

ということで次はFPGAマイニングボードの構築にかかるぞ。

2019年9月8日日曜日

PetaLinux(2)

VirutualBoxに不慣れなのと、petalinuxツールの仕様が変わってきているのか、説明通りになかなか進めないでモタついている。

■「ZYBO(Zynq)初心者ガイド」の9回目:Linuxカーネルを少しカスタマイズする。

ここでVirtualBoxからUSBを使えるようにした。

ポイントは、SDカードをWindows本体に差し込むとWindowsが自動的にドライブとしてアクセスできるようにしてしまうのだが、この状態だとVirtualBox側からUSBにアクセスできない。
だから、WindowsのエクスプローラーからSDカードを取り出した状態にしておいて、SDカードは取り出さずにVirtualBoxのUSBアイコンからUSB機器のリストを出して対象を選択する。
赤い矢印のところのUSBアイコンを選択

リストからSDカードを選択
これが分かるまでに少し苦労した。

この後、
> sudo fdisk -l
とすると、SDカードのドライブレターが分かる。
 /dev/sdb1  FAT32
 /dev/sdb2  ext4
そして、マウントする
> sudo mount -t msdos /dev/sdb1 /media/usb
> sudo mount -t ext4 /dev/sdb2 /mnt
マウントしたSDカードにツールでビルドしたイメージファイルをコピーする。
> cd ~/work/peta/SimplePS/
> sudo cp images/linux/BOOT.BIN /media/usb/
> sudo cp images/linux/image.ub /media/usb/
> sudo dd if=images/linux/rootfs.ext4 of=/dev/sdb2


■「ZYBO(Zynq)初心者ガイド」の10回目:Linuxのrootfsをカスタマイズする / PythonでHello World

PYNQボード上のPetaLinuxで python と gdb を利用できるようにするのだが、説明通りだとなぜか結果が異なる。ツールの使い方が微妙に変わったのかもしれない。

VirtualBox上のubuntuで
> petalinux-config -c rootfs
でpythonとgdbのライブラリを追加する。このあとビルド。
> petalinux-build
単純にこうした方が良いようだ。「petalinux -x package」を実行しただけではイメージファイルが更新されなかったし、当然pythonも動かない。
それから、rootfsの設定を変えているので、イメージファイルもrootfs.ext4のサイズが65MBから101MBにアップしていたのは納得がいく。この点が記事の記述と異なった。私のやっていることが、何か間違っているのかもしれない。
しかし、これでpythonが動いたのでこれで良しとしておこう。


■「ZYBO(Zynq)初心者ガイド」の11回目:LinuxユーザアプリケーションでLチカ

「3回目:PSのGPIOでLチカ」でも書いたが、PYNQ-Z1ボードはPSから操作できるLEDが割り当てられていないので、ここでも記事の前半部分はスキップ。

後半部分のPLからLチカはできた。


■「ZYBO(Zynq)初心者ガイド」の12回目:LinuxカーネルモジュールでLチカ

このカーネルモジュールは、PSのGPIOでLチカと同じようなのでスキップ。


あと、残り6回分。予定より時間がかかっているので少し頑張らないと。

2019年8月25日日曜日

VirtualBoxでpetalinuxツールとビルド

前回の続き。今回は「ZYBO(Zynq)初心者ガイド」の8回目になる。

まずは、Windows10ホストにVirtualBoxをインストール。それから、VirtualBox上にubuntuを構築する。

VirtualBoxは今回初めて使ったので、ちょっと手間取ってしまった。
作業の前にきちんとXilinxの資料を読めばよかった。メモリーやディスクの推奨サイズが書いてあったのに見落としていたため、ツールのインストールができなかったとか。

必要なLinux環境は、メモリー4GB以上、ストレージ100GB以上なので、作成するVirtualMachineはそのように設定する。VirtualMachine上でLinuxをインストールする際にはサイズを圧迫しないようにGUIなしコンソールのインストーラーを実行した。

次に、Windows10ホストとVirtualMachine間でファイルのやり取りができるようにしなければならない。方法は2つあり、ひとつはSCPによるファイル転送、そしてVirtualBoxのShared foldersを利用する方法。
はじめは、Shared foldersを試してみたのだが、共有するためにVBoxGuestAdditionsをLinux側に追加で実行する必要があった。しかし、なぜか共有したフィアルの持ち主やパーミッションを変更できず、実行できなかった。
この方法はあきらめて、SCPの方法に切り替えた。すると今度はWindows10ホストとubuntu間でネットワークがつながらない。これは、ubuntu側にSSH、Windows側にSCPソフトをインストール。そしてNetworkのデフォルト設定がNATだったのをBridgeに切り替えることでつながった。
Network設定をBridgeに切り替えたところ。

ubuntuに不足しているパッケージを追加。
このあと、あらかじめDLしておいたpetalinux-v2019.1-final-installer.runをubuntu側じへSCPで転送し実行。

ここまで何度かTryAndErrorを繰り返して、ようやくたどり着いた。

VivadoでPSだけのハードウェアを作成してバイナリーを作成。このあと、SDKでプロジェクトを作成して保存。
SCPで、project_6.sdkフォルダーを丸ごとubuntu側に転送。
Xilinxの資料にあるように、petalinuxツールでイメージファイルを作成する。
作成できたイメージファイル(BOOT.BINとimage.ub)をSCPでWindowsへ転送。
FAT32フォーマット済みSDカードにコピーして、PYNQ-Z1にSDをセット。
PYNQ-Z1をSDブートにピン設定して電源ON、TeraTermのシリアル接続で起動を確認。
PYNQ-Z1が立ち上がったら、ID/PW=root/rootでログイン。

ようやく「Linux起動」ができた!
今日はここまで。

2019年8月18日日曜日

Xilinx 開発ツール Vivado Design Suite

Xilinx社のFPGA開発ツールを触るのは約10年ぶりか。随分と様変わりしている。


Vivadoを触るのは初めてなので、まずは学習から始めなくては。
ライセンスは持ってないので、無料のお試しでスタート。期間は30日。

学習には「ZYBO(Zynq)初心者ガイド」を使った。とてもよくまとまっていると思う。

このサイトを利用する際に注意すべき点は、ボードが異なるということ。ZYBOというボードは、ZYNQ-7020を搭載しているという点では同じだが、周辺の回路がPYNQ-Z1とは異なる。

PYNQ-Z1は、ZYBOと同じDigilentから販売されている。

VivadoのProjectを作成する際に、ボードを選択するのだが、あらかじめボードリストを追加しておく必要がある。Digilentのサイトからボードリストが取得できるのだが、このリストの中にはPYNQ-Z1が入ってない!?

もう少し調査したところ、実はPYNQ-Z1は、DigilentのArty-Z7-20と電源スイッチの有無が異なるぐらいでほとんどコンパチだということがわかった。
Vivadoで追加した「Arty Z7-20」を選択中。

これで、初心者ガイドの「1回目:開発環境の準備」と「2回目:HelloWorldプロジェクト」はできた。

次の「3回目:PSのGPIOでLチカ」だが、これはPYNQにはPS側のLEDが無いためスキップ。

この後、「7回目:ブートイメージを作る」ところまでをPYNQ-Z1で動作確認ができた。

今日はここまで。
(この後は、Linuxが続く。)

2019年8月16日金曜日

テスラ スイッチ

マイニング用のFPGAボードを作りながら、フリーエネルギー装置はどうしようかと考える。
この前の記事にも書いたが、マイニングをやるからには、電源もなんとかしたい。しかし、今実験中のものはどれも時間がかかり過ぎる。

もう一度、すでに知っている装置のうちから、短期間で確実に作れそうなものがないか考えてみた。その中から、ひとつ気が付いた。
そうだ!「テスラ スイッチ」だ!と。
これなら、必要なパーツも少なく、入手可能なもので作れそうである。
Tesla Switchの回路。バッテリー4個とスイッチ、ダイオード、コンデンサーから構成される。


"Tesla switch"で調べた結果から:
a) フリーエネルギー技術開発の特徴と種々相
b) ドラード博士の1980年製カローラはデロリアンだった!?:「フリーエネルギーヒューズボックス」搭載!

a)は貴重な日本語による資料提供をして下さっているサイト。感謝!
文中の図で間違いなど指摘を受けているようだが、フリーエネルギー関連のソースが間違っているなんてことはよくあること。それに気が付けるかどうかも技量でしょうか。
自分なりに疑問に思う点がいくつかあるが、結局のところ実験してみるしかない。
例えば、スイッチ周期が100Hzがベストで800Hz以上は危険というのはスイッチの構造上の問題ではないだろうかとか、出力側になぜコンデンサーを入れているのだろうかなどなど。

b)は、以前ここのBlogで紹介したテスラ本の著者のサイト。
この記事の中でドラード博士が手に持っている振動子と呼ばれるスイッチの写真とかすごく参考になる。スイッチは、モーターで回転させるスイッチでなくても良くて、電磁石でスイッチをON/OFFする方法もありだと教えてくれる。

自分は常々ソリッドステートは使わない方が良いとの考えだ。それは、非常にデリケートな半導体を保護するための回路が、COPの足かせになっているのではないかと思うから。一般的に電子回路ではノイズやスパイク波などを出来るだけ生じさせないようにする。しかし、フリーエネルギーの源は、このノイズやスパイク波の中にこそあるのではないだろうか。
従ってTesla switchの資料に必ず出てくるBediniさんの考えたような電子回路ではなく、まずはアナログなスイッチで実験してみたい。

3DプリンターのABS対応

3DプリンターのフィラメントはこれまでPLAばかり使ってきたのだが、ちょうどPLAフィラメントが終わりに近づいたので、ABSに切り替えてみることにした。

プラスチック素材としてのPLAは、天然由来なので安心感があり、比較的使いやすい素材だったので使い続けていた。しかし、プラスチックとしては硬くてもろいため、加工性が悪くて使いづらいと感じ始めていた。
一方、ABSはPLAよりも加工性が高い。一般で売られている沢山のプラスチック製品に利用されていることからもプラスチック素材としての利用しやすさは明らか。

ABSフィラメントのシルバーを購入。

3Dプリンターでは、PLAよりも温度を高く設定する必要がある。
ノズル部は240度前後、ヒーテッドベッド部は100度前後だ。
それから、適切に温度管理をしないと造形物が剥がれたり割れたりするようだ。
そういうことから、3Dプリンター全体をカバーで覆うことにした。

3Dプリンターにカバーをつけた状態。

ノズルやベッドの温度は、スライサーソフト側で設定する。
普段使っているKisslicerに新しいマテリアルとしてABSを追加。
Wizardを使って追加しようとしたところ、ABSのデフォルト登録があり、その中で温度がノズル:235度とベッド:93度に設定されていた。そのまま利用。

しばらくこれで様子をみてみよう。

PYNQ-Z1 Getting StartとJupyter Notebook

まずは、入手したPYNQ-Z1ボードを動くようにしてみる。

ググったら、以下のような記事を見つけた。

PYNQ-Z1で始めるDeep Learning on FPGA入門(その1:購入からJupyter NotebookでLチカまで)

早速、この記事を参考に作業開始。

1)microSDカード16GBを用意。
2)PYNQ公式サイトからimageファイルをDL
3)同公式サイトの「PYNQ getting started guide」のリンクから、Windows10マシンからimageを書き込む方法を探し出す。そしてdiskimagerというソフトを使ってSDカードにimageを書き込んだ。
4)「PYNQ Setup Guide」の通りにボードの設定を行って、USBから電源供給。PowerをON。
5)ボード状のLEDが点灯し、正常に起動。
6)Windows10のネットワーク設定を開き、LANのIPアドレスを一時的に192.168.2.1/255.255.255.0 に変更。
7)PYNQ-Z1をLANに接続する。
8)Windows10でブラウザを立ち上げて、http://192.168.2.99:9090/を開く。すると、Jupyter Notebookページが表示される。
9)パスワードは、"xilinx"
10)Jupyter Notebookを使って、「Lチカ」プログラムを書き込んで実行する。

と割と簡単にLEDの点灯まで行くことができた。

このままだと、Windows10の固定IPがいつもと異なっていためネットに繋がらない。それは困るので、Windows10にWifi接続を追加。インターネットはWifi経由でアクセスできるようにした。

今回初めてJupyter Notebookを触ったのだが、これはあらかじめ用意されたライブラリを使ってpythonから簡単にボードをコントロールできますよ、という程度のおもちゃみたいなものだと知った。これではラズパイでできることと同じで、FPGAの柔軟性の高いロジック回路作りの面白さがほとんど味わえない。まあ、今後の展開に期待するとして。。。

私が目指している目標は、マイニングなのでJupyter Notebookはこの程度で終了。

やはりFPGAにHDLを書き込んでしっかりと使いたい向きには、Xilinxの開発ツールを使わなければならないようだ。