Raspberry Pi形状のZYNQボード「Zynqberry(ジンクベリー)」でUbuntu18を使うための手順の続きです。
OSインストール後の各種設定
無線LANの使用
2019年12月以降に出荷されたZynqberryスタータキットには、ElecomのWDC-150SU2Mが付属しています。2019年11月以前はGW-USNANO2Aでした。
WDC-150SU2MをARMの組み込みLinuxで使うにはUbuntu 14(wpasupplicatを使っていた)ではだめで、Ubuntu 18にアップグレードしてnmcliを使う必要があります。
WDC-150SU2Mの場合は以下の手順でドライバを使用可能にします。
insmod /lib/modules/4.9.0-xilinx-00027-g9c2e29b/kernel/drivers/8188eu.ko
この状態で
nmcli device wifi
と入力すると、検出されたWifiの一覧が表示されます。
無線LANを有効にするには、USB LANアダプタを挿し、
nmcli device wifi connect [SSID] password [パスワード]
を入力します。
これでZYNQのLinuxから無線LANが使えるようになります。
sttyで画面のサイズを変えよう
TeraTermの画面を大きくしてUSB(COMポート)経由で操作していると、emacsやtop、psなどのコマンドの出力が乱れます。それだけではなく長いコマンドを打ってBackSpaceで編集するだけでも画面が乱れます。SSHでログインした場合には乱れませんが、組み込み開発ではやはりCOMポートは便利なので。
なぜ乱れるのかというと、COMポート経由では端末の画面サイズをOSに知らせることができないためです。
TeraTermのサイズは[設定(S)]->[端末(T)]で確認でき、
sttyコマンドを使ってLinuxに現在の端末のサイズを教えます。
stty cols 146
stty rows 34
これで画面の乱れはなくなります。
SDカードの第一パーティションの中身を見るには
第一パーティションにはデバイスツリーなどが入っています。
この中身をLinuxで見るには、
mount /dev/mmcblk0p1 /mnt/
で見れます。
/etc/fstabに書いてしまってもいいでしょう。
# UNCONFIGURED FSTAB FOR BASE SYSTEM
/dev/mmcblk0p1 /mnt
ツールのインストール
組み込みシステムらしい様々なことを試すには、デバイスツリーコンパイラやGCCが必須です。以下のコマンドでインストールします。gitで配布されているモジュールをインストールするためにもgitは必要でしょう。
apt install device-tree-compiler
apt install gcc
apt install git
FPGAをコンフィギュレーションするには
Zynqberryのカーネルは4.9なので/dev/xdevcfgが使えます。/dev/xdevcfgを使うのが便利です。
cat bitstrem-file-name.bit > /dev/xdevcfg
デバイスツリーをいじるには
様々なデバイスの実験をするには、デバイスツリーの書き換えが必要です。
まず、現在のデバイスツリーからソースを作ります。
dtc -I dtb -O dts /mnt/devicetree.dtb > /mnt/devicetree.dts
そして、編集したあと。
dtc -I dts -O dtb /mnt/devicetree.dts > /mnt/devicetree.dtb
でバイナリに戻します。
USBメモリを参照するには
Zynqberry + Ubuntu18はUSBメモリを使用できます。
以下のようにマウントすることで/mntフォルダにUSBメモリの中身が現れます。
mount -t vfat /dev/sda1 /mnt/
jupyterを起動するには
jupyter notebook --allow-root &
で起動でき、http://zynqberry:8080/ でアクセスできます。
numpy pandas matplotlib seaborn scikit-learn plotlyが使えるのででPythonの練習もばっちりです。
最後に
私はZynqberryをRasPiケースに入れ、かれこれ1年以上自宅サーバとして活用しています。VPNをはったり、DDNSに通知したり、cronで定期的にルータをチェックしたり・・。
最近ではMySQLとPHPを入れてデータベースアプリを作る練習にも使っています。
ZynqberryのARMは666MHz動作のデュアルコアなので、ネットワーク管理や簡単なデータベースアプリ程度であれば、十分なスペックのサーバとして利用できます。
最近はLinuxカーネルを4.19にアップデートする準備をしていますが、xdevcfgが使えないのでどうしたものかと悩んでいます。