Linux

 Linux でのフレームバッファの使い方、デバイスドライバについて
Linuxでのフレームバッファの使い方、デバイスドライバについて、昨日ツイッターで色々教 えてもらったことをtogetter でまとめました。

ZedBoardの Linuxカーネルコンパイルのテスト
ARMのツールチェーンを使用してZedBoardのカーネルコンパイルを行なって、成功し た。
Implementing Linux on the Zynq-7000 SoC のビデオで勉強中
ZedBoard.org のHome » SpeedWay Training Courses の Implementing Linux on the Zynq-7000 SoC のビデオで勉強中です。
ZedBoard用 Digilent Linuxの起動メッセージ
ZedBoard用Digilent Linuxの起動メッセージを示し、フレームバッファがどこで処理されているかを探っている。
ZedBoard用 Digilent Linuxの解析1(フレームバッファの領域確保)
ZedBoard用Digilent Linuxの解析をしている。Digilent Linuxを起動するとHDMIに2頭のペンギンが表示されるが、このフレームバッファを使用して、カメラの画像を書き込みたいからだ。フレームバッファ は固定アドレスでなく、アロケートされているようで、物理アドレスが異なる時があるようだ。そのアドレスを取得して、自作カスタムIPのレジスタに物理ア ドレスを書き込むのを目的とする。
フレームバッファを確保している部分を見つけて、そこにprintk() 文で物理アドレスを表示した。
SDKでDevice Treeを生成する1(Device Tree の概要)
Device Tree とは、Linuxカーネルにハードウェアの情報を伝えるファイルのことだそうだ。Device Tree を生成してみた。
SDKでDevice Treeを生成する2(SDKでxilinx.dtsを生成)
SDKからDevice Tree を生成した。
DTCでDevice Tree をコンパイルする1
DTC (Device Tree Compiler) を使って、xilinx.dts をコンパイルして、xilinx.dtb を生成して、実際にDevice Tree として使えるかどうかを確かめた。
DTCでDevice Tree をコンパイルする2
xilinx.dts をDTCでコンパイルすることができたが、それをdevicetree_ramdisk.dtb をとしてSDカードに入れて使用するとエラーになった。バグを修正して、もう一度、やってみるとフレームバッファの領域を確保することができなかった。そ こで、axi_iic_mt9d111 の .dts 上の記述を、元々Digilentから配布されているdevice_ramdisk.dts に追加してしまうことにした。
ZedBoard用 Digilent LinuxのSysfs
DTCファイルを読み込んでSysfs を作るようなので、Sysfs を実際に見てみた。
XPSプロジェクトにカスタ ムAX Slave Lite IPを追加してSysfsを見る
XPSプロジェクトにカスタムAX Slave Lite IP(char_wirte_axi_master)を追加して、同様にSysXPSプロジェクトのカスタムIPのMPDファイルの書き方を書いておこう と思う。MPDファイルはXPSプロジェクトのカスタムIPのパラメータやIOポートの情報などを書いておくファイルだ。XPSプロジェクトのカスタム IPのMPDファイルの書き方を書いておこうと思う。MPDファイルはXPSプロジェクトのカスタムIPのパラメータやIOポートの情報などを書いておく ファイルだ。fsを見るとどうなるか確かめてみた。

ソ フトウエアのプロファイリング1(mmap(), munmap() の時間計測)
ソフトウェアの動作時間は139秒だった。何処に時間がかかっているかをプロファイリングしよ うと思う。使用するのは、gettimeofday() だ。”システムプログラム(第4週)”を参考にプログラムしていく。
ソフトウエアのプロファイリ ング2(mmap(), munmap() の時間計測2)
mmap()の数をカウントした。
1個のピクセルデータをmmap()で読むソフトウェアと、ReadとWriteの2つの mmap() 領域を用意して、それぞれ現在取得している領域が外れた時に munmap() して、もう一度領域を取り直すソフトウェアを実行時間を比較して、mmap(), munmap() 関連の実行時間とそれ以外の実行時間を計算で求めた。
ソフトウエアのプロファイリ ング3(最適化)
今回は更に最適化を図る。mmap(), munmap() が遅いので、極力少なくすることを考える。
ラプラシアン・フィルタの実装は、3ライン分読んでからラプラシアン・フィルタを掛けるようにした。これで、ピクセルデータRead時のアドレスは連続するの で、Readのmmap(), munmap() の数とWriteのmmap(), munmap() の数は等しくなるはずだ。最初は3ライン分のピクセルをReadするが、次からは後にReadした2ラインは使用できるので、1ラインだけのReadになる。
ソフトウエアのプロファイリ ング4(ハードウェアと同じ方式)
今度は、フレームの最初に2ラインを読んでから、2つピクセルを保存した後で、1つピクセルを 読みながら、真ん中のラプラシアン・フィルタの値を計算していく。これで、”画像のエッジ検出6(3X3での方式の検討)”で実装したハードウェアと同じ方式 になった。
実行したところ、”ソフトウエアのプロファイリング3(最適化)”よりも、更に 5msec ほど速くなった。

Yocto ProjectのZedBoard用Linuxをビルドしてみる1
Yocto Project の ZedBoard用Linuxをビルドしてみることにした。Yocto はヤクトと読むことになったそうだ。
参考にするのは、ZedBoard.org の Building Yocto for ZED Board。これに従ってやってみた。
Yocto ProjectのZedBoard用Linuxをビルドしてみる2
前回、Yoctoのビルドでエラーが出てしまった。このエラーをよく見ると、 fprintf()で、プリント・フォーマットの%lxが、irel->r_addend に合っていないというエラーだった。この部分を削除した。
Yocto ProjectのZedBoard用Linuxをビルドしてみる3(ビルド成功)
2014年4月11日の夕方、仕事から帰ってきたら、ZedBoard用Yocto Linuxのビルドが成功していました。やった~。嬉しいです。
Yocto ProjectのZedBoard用Linuxをビルドしてみる4(BOOT.binの作製)
前回、ZedBoard用Yocto Linux のビルドが成功したので、”meta-xilinx - Layer containing Xilinx hardware support metadata”と”Xilinx Wiki - Prepare Boot Image”を元に BOOT.bin を作製し、SDカードに書き込んでブートしたが、Tera Termに何も表示されなかった。。。
Zynq用Yocto の情報(ひでみWiki Zynq)
Yoctoプロジェクトの情報をひでみさんがWiki(ひでみWiki Zynq)に書いてくれています。これを参考に、”Yocto ProjectのZedBoard用Linuxをビルドしてみる4(BOOT.binの作製)”をやってみようと思っています。

Let's note Y2 のOS を Windows XP からLubuntu へ変更した
Let's note Y2(リンクはPDFです)という、Windows XPのSXGA+のノートPCがあって、とってもスピードが遅くなっていました。Windows XPが起動するまで10分位かかります。(大げさかも?)使えなかったのですが、Windows XPもUpdate が終わりということで、Lubuntuに変更しました。インストールもとっても簡単で、楽に移行出来ました。
Dell Inspiron 1501 に Lubuntu をインストールした
Let's note Y2 に Lubuntu をインストールしたので、家の奥さんのパソコンだった Windows XP の Dell Inspiron 1501 に Lubuntu をインストールしてみたが、これがだいぶ苦労した。

Lubuntu14.04に Vivado 2014.1 をインストールする
Lubuntu14.04 にVivado 2014.1 をインストールすることができた。かなり苦労したので、その過程を書いておく。

ZedBoard用の Ubuntu Linuxをビルド1(PLをビルド)
FPGA CPU News さんの”Yet Another Guide to Running Linaro Ubuntu Linux Desktop on Xilinx Zynq on the ZedBoard”をやってみることにした。
試す環境としては、Windows7 64bit版に VirtualBox をインストールし、そのゲストOSとして Ubuntu14.04 をインストールしてある。よって、その下で ZedBoard用のUbuntu をビルドする。ISEはLinux用のISE14.4を使用する。
ZedBoard用の Ubuntu Linuxをビルド2(u-bootをビルド)
今回は、u-bootをビルドする。
”Yet Another Guide to Running Linaro Ubuntu Linux Desktop on Xilinx Zynq on the ZedBoard”の”Build u-boot, the Linux boot-loader”をやってみる。
ZedBoard用の Ubuntu Linuxをビルド3(BOOT.BINを生成)
今回は、SDカードに入れるブート用のソフトウェア BOOT.BIN を生成する。
ZedBoard用の Ubuntu Linuxをビルド4(uImageをビルド)
今回は、uImage をビルドする。
ZedBoard用の Ubuntu Linuxをビルド5(device Treeをビルド)
前回は、Linuxカーネルをビルドした。今回は、device tree をビルドする。
ZedBoard用の Ubuntu Linuxをビルド6(SDカードを用意する)
今回は、そろそろ必要ということで、SDカードを用意することにした。
ZedBoard用の Ubuntu Linuxをビルド7(rootfsの書き込みと実機動作)
ZedBoard 用 Ubuntu の root file system を SDカードに書いて、実機で動作を確かめた。Ubuntuが動作しました。
ZedBoard用の Ubuntu Linuxをビルド8(swap spaceの追加)
今回は、swap space用のファイルを作って、swapとして指定する。
ZedBoard用の Ubuntu Linuxをビルド9(serviceの停止)
ZedBoard用のUbuntu Linux のSDカード・イメージを前回で生成することできた。
OpenCVをインストールしてGUIベースで、いろいろとトライしてみようとすると、決定的 にメモリが足りないようだ。HD解像度だと相当メモリを食うようで、現在のtopコマンドを実行した結果は、71MB程度しかFreeのメモリがない。そこ で、GUIを落とすことにした。Twitter で t3840さんに、”serviceでlightdmをstopさせるのが良さそうですね”と教えてもらったので、GUIを落としてみた。
ZedBaord用 UbuntuにSSHをインストール
シリアルのターミナル1つでは不便なので、SSHをインストールして、SSHでログイン出来る ようにしてみた。
ZedBaord用 UbuntuにOpenCV2.4.6.1をインストール
ZedBoard用UbuntuにOpenCV2.4.6.1をインストールしたので書いてお く。

Xillinuxに新しい ユーザー zybo を追加
”ZYBOにOpenCV 2.4.6.1をインストール”でZybo のXillinux にOpenCV 2.4.6.1 をインストールしたのですが、これは、root でやっていました。どうも root でコマンドを実行しているとあまり気持ちよく無いので、zybo というユーザーを作ることにしました。パスワードは同じく zybo です。

ZYBO用の Embedded Linux チュートリアル5(U-Bootのビルド)
前回までで、PL部のハードウェアを構築した。今回は、U-Bootをビルドした。
ZYBO用の Embedded Linux チュートリアル7(Linuxカーネルのビルド)
Digilent Linuxカーネルをビルドした。uImage が作成された。
ZYBO用の Embedded Linux チュートリアル8(DTB、RAMDISK、Linux起動)
DTSをDTCでコンパイルしてDTBを作った。
RAMDISKを用意した。
Digilent Linuxを起動した。
ZYBO用の Embedded Linux チュートリアル9(Frame Buffer)
前回で、ZYBO で Linux が立ち上がった。今回は、横道にそれて、Frame Buffer (FB) を使って、HDMI や VGA に画像を表示できないかやってみた。
FBのアドレスを知ろうして、FBのアドレスをprintk() で表示しようとしたが表示できなかった。
ZYBO用の Embedded Linux チュートリアル10(myLedのドライバの構築とデバイス・ツリーへの追加)
myLedのドライバを生成して、デバイス・ツリーに追加し、コマンドでLEDを点灯させた。
ZYBO用の Embedded Linux チュートリアル11(ユーザー・アプリを実行)
前回、ドライバを作ったので、今回は、ユーザー・アプリケーションを作って、実行した。
ZYBO用の Embedded Linux(root file system をSDカードの第2パーティションへ)
”ZYBO用のEmbedded Linux チュートリアル”をやったのだが、SDカードの第2パーティションにUbuntuのroot file system を書いて、ブート後に使用するようにしたいと思ってやっていたのだが成功しなかった。
ZYBO用の Embedded Linux での u-boot のログ
”ZYBO用のEmbedded Linux(root file system をSDカードの第2パーティションへ)”で、いろいろとエラーは出ているが、SDカードの第2パーティションをRoot File System としてマウント出来たようだ。
ZYBO用Linaro Ubuntuが立ちあがる状態でのu-boot環境変数とLinuxブートメッセージ
Twitter で ikwzm さんに教えてもらった。u-boot のデフォルト環境変数ファイル nEnv.txt をSDカードの第1パーティションにいれた。
ZYBO用Linaro Ubuntuが立ちあがる状態でのu-boot環境変数とLinuxブートメッセージ2
”ZYBO用Linaro Ubuntuが立ちあがる状態でのu-boot環境変数とLinuxブートメッセージ”の修正版です。
uEnv.txt が間違っていので、修正しました。ブートメッセージの違いがよく分かるので、前のバグあり版も残しておきます。
ZYBO用の Embedded Linux をブートするSDカードの作り方
ZYBO用のEmbedded Linux をブートするSDカードの作り方を書いておきます。(重要)
ZYBO用の Linaro Ubuntu のバージョンを 12.11 から14.04 LTS にアップグレード
Linnaro Ubuntu のバージョンを 12.11 から 14.04 LTS にアップグレードした。この時は失敗しましたが、後で成功しました。

ZYBO用の Linaro Ubuntu のPL部にビットマップ・ディスプレイ・コントローラを搭載する3(UIOの設定)
SDKで Linux用ソフトウェアを作製する際に必要な設定をするために、DTSを変更する。
UIO (Userspace I/O) を使用するためにLinux のコンフィギュレーションをチェックして、デバイス・ツリーにUIOを追加する。
BOOT.bin を生成した。
ZYBO用の Linaro Ubuntu のPL部にビットマップ・ディスプレイ・コントローラを搭載する4(UIOの設定2)
前回は、、”How to Design and Access a Memory-Mapped Device in Programmable Logic from Linaro Ubuntu Linux on Xilinx Zynq on the ZedBoard, Without Writing a Device Driver — Part Two”だ。参考にする本はコミケ本で、石原ひでみさんの”Hybrid SoC Design Vol 1.0”を参考にしながら、UIO (Userspace I/O) の設定を行った。画像を表示するFrame Buffer (FB) のアドレスの設定もUIOでできないか?と考えたので、今回は引き続き追加で FB 領域をUIOに設定して見たいと思う。
ZYBO用の Linaro Ubuntu のPL部にビットマップ・ディスプレイ・コントローラを搭載する5(UIOの設定3)
UIOをCプログラムを書いて実際に使用する。具体的に何をやるかというと、ZYBOの4つの LEDを点灯させる。
ZYBO用の Linaro Ubuntu のPL部にビットマップ・ディスプレイ・コントローラを搭載する6(UIOの設定4)
UIOに実装した、ビットマップ・ディスプレイ・コントローラの設定レジスタ、キャラクタ・ ジェネレータROM、ビットマップ・ディスプレイ・コントローラのフレーム・バッファ・メモリ全部をテストするCソフトウェアを作製した。

ZYBO用のLinaro Ubuntu にOpenCV-2.4.6.1 をインストール
”ZYBO用の Linaro Ubuntu のPL部にビットマップ・ディスプレイ・コントローラを搭載する8(ZYBOで動作確認2)”のZYBO用の Linaro Ubuntu にOpenCV 2.4.6.1 をインストールした。

ZYBOのLinaro Ubuntu のIPアドレスを固定する
ZYBOのLinaro Ubuntu のIPアドレスの取得方法は DHCP で毎回 Tera Termで SSH ログインするときのアドレスが異なる。これを何とかしようとIPアドレスを固定することにした。ZedBoardのIPアドレスが 192.168.3.130 にしてあったので、ZYBO は 192.168.3.131 にすることにした。

ZYBOのLinaro Ubuntu のXウインドウの表示をパソコンで行う(Xmingを使用)
”ZYBOのLinaro Ubuntu のIPアドレスを固定する”でZYBOのLinaro Ubuntu のIPアドレスを固定することができた。これで、SSHで入りやすくなったので、今度は、ZYBOのLinaro Ubuntu のXウインドウをパソコンで表示してみた。

ZYBO用の Linaro Ubuntu のバージョンを 12.11 から14.04 LTS にアップグレード2
ZYBO用の Linaro Ubuntu のバージョンを 12.11 から14.04 LTS にアップグレードしようとして挫折してしまいましたが、もう一度、Ubuntu 14.04 にアップグレードしようということでやってみました。
なんとか、Ubuntu 14.04 にアップグレードできたようです。

ZYBOのUbuntuで使用するエディタを gvim にしました
ZYBOのUbuntuで使用するエディタを単語の補完ができる gvim した。
ZYBO用Ubuntu Linuxのファイルチェック
ZYBO用のUbuntu Linuxが起動の途中で止まってプロンプトが出てこない。そこで、gparted をインストールしてファイルシステムをチェックしようとしたが、マウントしてあったので、できなかった。
ZYBO用Ubuntu Linux のファイルマネージャー
ZYBO用のファイルマネージャーは、nautilus を使っている。
ZYBO用Ubuntu Linuxの時計のずれ
ZYBO用Ubuntu14.04LTS の時計がずれて、困っている。いろいろとトライしてみた。
ZYBO用Ubuntu Linuxの時計のずれ2(解決編)
時計のズレはDTS (Deviece Tree Source) の設定が原因だった。設定を変更したら時計のズレが修正できた。
ZYBO のUbuntu Linuxで ”saned disabled; edit /etc/default/saned” が出る
ZYBO の Ubuntu Linux で ”saned disabled; edit /etc/default/saned” が出て、途中でLinuxのブートが止まってしまった。リターンキーを押すとプロンプトがが出てきたが、自分がタイプしたキーがエコーされないので、TreaTermで ローカルエコーに設定する必要があった。
解消したと思ったがやっぱりダメだな。。。

TeraTermで Xmingのウインドウを開く
LinuxのXウインドウをWindowsパソコンで開くときにTera Termを使う方法。
Cygwin/X のインストール
Windows で Linuxの機能を提供するソフトウェア Cygwin の内の Xサーバー同梱版の Cygwin64/X をインストールした。
Cygwin/X の設定
mintty とファイルマネージャー mc について書いた。

ZYBOのUbuntu ブート用のMicroSDカードをバックアップからコピーする手順
ZYBOのUbuntu ブート用のMicroSDカードに不具合が生じてバックアップからコピーする手順の覚書です。

ZYBOのDigilent Linux KernelにARMhfのRoot File Systemsを入れる
”ZYBO用のEmbedded Linux チュートリアル7(Linuxカーネルのビルド)”までで作ったZYBO用のDigilent Linux Kernel にARMhfで見つけたUbuntu Trusty 14.04 LTS とDebian Wheezy 7.5のRoot File Systems を入れてみようと思った。
この時は失敗したと思っていたが、後で動作していることが確認できた。
ZYBOのDigilent Linux KernelにARMhfのRoot File Systemsを入れる2( Debian Wheezy 7.5)
今回、もう一度、 Debian Wheezy 7.5 のRoot File Systems を MicroSDカードの2nd パーティションに入れて、1st パーティションは、Digilent Linux Kernel, BOOT.bin, devicetree.dtb を入れた。
ブートしてみると、シリアルポート接続のTrea Termは、sshd でやはり止まったが、SSHから入って使用できることが分かった。
ZYBOのDigilent Linux KernelにARMhfのRoot File Systemsを入れる3(Ubuntu Trusty 14.04 LTS)
今回、もう一度、 Ubuntu Trusty 14.04 LTS のRoot File Systems を MicroSDカードの2nd パーティションにコピーして、1st パーティションは、Digilent Linux Kernel, BOOT.bin, devicetree.dtb をコピーした。動作させた所、Ubuntu14.04LTSもSSHからログインできることが分かった。

ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル
ZYBO のLinux 上でVivado HLSで生成された制御ソフト(Cドライバー・ソ フトウェア)をコンパイルして動作させることにした。
ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル2
前回、Vivado HLS 2014.4 で作製したラプラシアンフィルタIPのAXI4 Lite Slave ポートにアクセスしたが、バスエラーになってしまった。今回はその原因を探った。
画像が表示されたが、28秒かかってしまった。原因はVivado HLSのラプラシアンフィルタのCソースコードが間違っていたことだった。訂正記事へのリンクあり。
ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル3
Vivado HLS 2014.1 でラプラシアンフィルタIPを作って、Vivado 2014.4 のプロジェクトを新規作成し、ブロック・デザインを構築していく過程で、ラプラシアンフィルタ IP のAXI4 Master バスは、カメラ・コントローラー IPとビットマップ・ディスプレイ・コントローラー IP のAXI4 Master が入っている AXI Interconnect に入っている。これをラプラシアンフィルタ IP 独自の AXI Interconnect にして、Zynq PS の AXI HP2 ポートに入れたらどうだろう?と考えた。
AXI4のバス帯域を考察してみた。

ZYBOのUbuntu14.04 LTSにclangをインストールしてコンパイル
ZYBO で動作している Ubuntu14.04 LTSに clang-3.4 をインストールしました。
clang でのNEON命令を出力する方法を勉強した。
IPをVivadoのIPI に追加して、BOOT.binとデバイスツリーを作り、ZYBO のLinuxでアプリケーションを作る作り方
これからVivado プロジェクトのIP Integrator のブロックデザインにHDL で書いたラプラシアンフィルタIP を追加して、論理合成、インプリメントを行い、SDKにハードウェアをエクスポートして、FSBLとビットストリームとU-boot でBOOT.bin を生成する。
また、Linux で zynq-zybo.dts にHDL で書いたラプラシアンフィルタIPのエントリを追加して、コンパイルしてdevicetree.dtb を生成する。
BOOT.bin とdevicetree.dtb をUbuntu 14.04 のRoot file system が入ったSDカードのMS DOSパーティションに入れて、ZYBOに入れてUbuntu 14.04 をブートする。
ZYBO のUbuntu 上で、アプリケーションをVivado HLS で生成されたドライバを使用して作製する。

デバイスドライバ udmabuf を使用する1
ikwzm さんのLinuxでユーザー空間で動作するプログラムとハードウェアがメモリを共有するためのデバイスドライバ udmabuf を使うことにした。
デバイスドライバ udmabuf を使用する2
前回、udmabuf ドライバをロードする事ができた。今回は、実際のアプリケーションで udmabuf ドライバを使用する。

新しいZYBO用Linux カーネルとUbuntu 14.04 LTS
”Vivado and zybo linux勉強会資料3”に ZYBO用のLinuxカーネルをビルドしてUbuntu ルート・ファイルシステムを搭載したMicro SDカードの作り方を書いてあるが、2人の方からリンクが変わったり、Linuxカーネル・ソースコードが変わったりしてやり方が変わったとのお知らせを頂いた。
それじゃ、もう一度自分でもやってみようということで、昨年2015年の12月に自分でも、もう一度やってみて、資料を書き換えた。
新しいLinuxカーネルのバージョンは Linux version 3.18.0-xilinx-46110-gd627f5d だった。CMA領域も 16MiB 取られている。
以前、Linuxカーネルをビルドして、今、メインに使っているLinuxカーネルは 3.14.0 だった。

ZYBO の Ubuntu 14.04 LTS に GDB のGUI フロントエンドをインストール1(DDD を試す)
”ステレオカメラによる距離測定テスト9(アプリケーションの作製2)”で自作アプリケーショ ンが Segmentation fault になってしまったので、デバックを行うのだが、いつものprintf デバックはけっこう大変なので、GDB を使うことにしたが、どうせ使うならば GUI のフロントエンドを試してみたいということで、やってみた。
ZYBO の Ubuntu 14.04 LTS に GDB のGUI フロントエンドをインストール2(Eclipse をインストール)
前回はZYBO のUbuntu 14.04 LTS にGDB のフロントエンドとして、DDD をインストールしたのだが、原因不明の症状が出て上手く動作しなかった。今回は、少し遅いとは思うのだがEclipse をインストールしてみる。
ZYBO 上にインストールしたEclipse でHello World
”ZYBO の Ubuntu 14.04 LTS に GDB のGUI フロントエンドをインストール2(Eclipse をインストール)”で ZYBO に Eclipse をインストールしたので、Hello World ができるかどうか?試してみた。

ZYBO をUbuntu 14.04 LTS にアップグレードした場合のエコーバック
ZYBO のRoot File System には、Linaro のUbuntu 12.10 Root FS を入れている。(Vivado and zybo linux勉強会資料3)
Ubuntu 12.10 をUbuntu 14.04 LTS にアップグレードしているのだが、アップグレードした当初は問題ないのだが、
apt-get update
apt-get upgrade
した後でTera Term などのシリアルポート経由のターミナルで、自分でタイプしたコマンドがターミナル上で表示されないという不具合があった。その解決方法を @YuuichiAkagawa さんに教えて頂いたので、書いておく。

ZYBO 上のUbuntu 14.04 LTSで Geneay を使ってプログラミングをする
ZYBO 上のARM Cortex-A9 上のDigiletn Linux + Ubuntu 14.04 LTSで Zybot などの開発をしている。
ZYBO 上で エディタを起動してC, C++ などのソフトウェアを作っているが、いままでエディタには、gedit や gvim などを使ってきた。
どうも gedit も gvim も使いにくいので、もっと良いエディタがないかをネットで探したら、Geany が使えるということだった。

FPGAマガジンNo.12 の「第4章 共通カスタムLinuxディストリビューションの開発」をやってみた1
「FPGAマガジンNo.12 ARMコアFPGA×Linux初体験」の「第4章 共通カスタムLinuxディストリビューションの開発」をやってみることにした。
失敗した。
FPGA GO のXiltera ディストリビューションをビルドした
”FPGAマガジンNo.12の「第4章 共通カスタムLinuxディストリビューションの開発」をやってみた1”でXiltera のビルドに失敗したので、ひでみさんのFPGA GO の 24 ページの Xiltera ディストリビューションをビルドしてみることにした。
失敗した。

ZYBOのUbuntuでMicro SDのMS DOSの第1パーティションをマウントする
ZYBO で動作しているUbuntu でMS DOS(FAT フォーマット)第1パーティションをマウントできて書き換えられれば、Micro SDカードを外さなくてもBOOT.bin や devicetree.dtb などを書き換えて、再度ブートすることでハードウェアの環境を書き換えることができるだろう?ということでやってみた。

”FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみる1(FPGA-SoC-Linux のクローン)
ikwzm さんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみようと思う。
”FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみる2(Micro SDカードの準備)
前回は、FPGA-SoC-Linux をクローンした。今回は、Micro SDカードをフォーマットして、パーティションを切った。

ikwzm さんの構築したPYNQ ボード用DebianでのPS出力クロックfclkの設定方法
昨日のFASTX コーナー検出、ラプラシアンフィルタ、アンシャープ・マスクキング・フィルタの回路が動かないと書いたが、ikwzm さんがクロックはどうなっているかと聞いてくれて、それでハッと気が付いた。Zynq のクロックはPSから供給されていて、ビットファイルは関係ない。。。
ikzwm さんから、”Linux でユーザー空間から Zynq の PLクロック信号を制御するデバイスドライバ”を教えて頂いた。いつもありがとうございます。しかし、何でも作ってありますね。。。

enscript でソースコードをHTML にする
今までWindows ではSourceConverter でソースコードをHTML にしてきた。
Ubntu 16.04 を使うようになって、ソースコードのHTML 化をどうするか?考える必要が出てきた。調べてみると enscript というGNU Project のコマンドでテキストをHTML にすることができるようだ。

ZYBOのMicroSD カードをバックアップしコピーする(tarを使用する)
ZYBOのMicroSDカードをバックアップしてコピーを作りたい。
以前、”LinuxでSDカードをバックアップ、リストア”では、dd を使用してバックアップ、コピーしたのだが、この時は起動できたが、今やってみるとコピーしたMicroSDカードでLinux が立ち上がらない。しかも4時間以上時間がかかるということで、@ame_feb4 さんに教えて頂いたtar を使用する方法でやってみることにした。

”ZYBOのクロス開発環境 の構築 (2017年10月時点)”をやってみました
”ZYBOのクロス開発環境の構築 (2017年10月時点)”が出ていたので、ZYBO のYocto を久しぶりにビルドしてみました。

Ubuntu 16.04でKindle の本を読みたい
最近は、reVISION をやっていたので、すっかりUbuntu 16.04 で過ごしてきた。でも、そうするとKindle のひでみさんの本が読めないのが難点だ。Web 版のKindle からは読めないのである。。。
Kindle はWindows 版のみなので、wine を使用して、Kindle をインストールすることができた。

Windows 10 fall creators update のWindows Subsystem for Linuxを試してみた
Windows 10 fall creators update のWindows Subsystem for Linuxを試してみた。
Windows Subsystem for Linux 上でVivado をインストールして起動することがでできた。
Windows 10 fall creators update のWindows Subsystem for Linuxを試してみた2
Vivado 2017.3 をインストールした。Vivado が起動して、SDK も起動したが、SDK 上でのProgram FPGA するとデバイスが見つからなかった。
Windows 10 fall creators update のWindows Subsystem for Linuxを試してみた3
日本語表示にして、Vivado HLS を試したが、やはり、Cシミュレーション時にOut of Memory になってしまった。

PetaLinux 2017.3 をインストールする
UltraZed-EG Starter Kit の Linux をビルドするにあたって、まずは、Avnet からも情報が出ている Xilinx 社のLinux のPetaLinux をインストールすることにした。
UltraZed-EG Starter Kit でPetaLinux 2017.3 をブートする
前回では PetaLinux をインストールできたので、今回はUltraZed-EG Starter Kit 用のPetaLinux をビルドして、UltraZed-EG Starter Kit でPetaLinux 2017.3 をブートしてみようと思う。

FPGA+SoC+Linux 実践勉強会用のZYBO Z7用MicroSDカードの準備
ikwzm さんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(ブートイメージの提供)”を見ながら、MicroSDカードを作っていこう。
FPGA+SoC+Linux実践勉強会での課題をやってみた1(Vivado HLS編)
”FPGA+SoC+Linux実践勉強会”でZYBO Z7 を使用し、Vivado HLS でDMA IPを作成して、Vivado で回路にして、SDK でベアメタル・アプリケーションでDMA IP を動作させようとしたら動作しなかった。
そこで、DMA IP を仕上げてデバイツリー・オーバーレイやudmabuf などを確かめてみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた2(Vivado 編)
「”FPGA+SoC+Linux実践勉強会”でZYBO Z7 を使用し、Vivado HLS でDMA IPを作成して、Vivado で回路にして、SDK でベアメタル・アプリケーションでDMA IP を動作させようとしたら動作しなかった。
そこで、DMA IP を仕上げてデバイツリー・オーバーレイやudmabuf などを確かめてみよう。」ということで、前回はVivado HLS 2017.3 でDMA_pow プロジェクトを作成し、10 個のデータをReadし、 2 乗して出力するIP にした。今回は、そのDMA_pow2 IP を使用して、Vivado 2017.3 の IPI で ZYBO Z7 のPS と接続して、SDK でアプリケーションソフトを作って実機で試してみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた3(Vivado 編2 ACPポートを使用)
「”FPGA+SoC+Linux実践勉強会”でZYBO Z7 を使用し、Vivado HLS でDMA IPを作成して、Vivado で回路にして、SDK でベアメタル・アプリケーションでDMA IP を動作させようとしたら動作しなかった。
そこで、DMA IP を仕上げてデバイツリー・オーバーレイやudmabuf などを確かめてみよう。」ということで、前回はPS のHP ポートを使用して、Vivado HLS で作成したDMA_pow2 IP を接続して使用することができた。今回は、ACP ポートにDMA_pow2 IP を接続して使用してみようと思う。
FPGA+SoC+Linux実践勉強会での課題をやってみた4(Device Tree Overlay)
前回は、Vivado HLS 2017.3 で作成した 2 乗倍するDMAIP をVivado 2017.3 のブロック・デザインでインスタンスして、回路を構成した。その際には、ACP ポートを使用した。SDK のベアメタル・アプリケーションソフトで動作を確認した。今回は、ikwzm さんの Device Tree Overlay を試してみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた5(FPGA Region)
前回は、Vivado HLS 2017.3 で作成した 2 乗倍するDMAIP をVivado 2017.3 のブロック・デザインでインスタンスして構成した回路で Device Tree Overlay を試した。今回は、それの回路で FPGA Region を使用して、ビット・ファイルをコンフィギュレーションしてみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた6(udmabuf、実機テスト)
前回は、Vivado HLS 2017.3 で作成した 2 乗倍するDMAIP をVivado 2017.3 のブロック・デザインでインスタンスして構成した回路で Device Tree Overlay でデバイスツリー・オーバーレイで、 FPGA Region を使用して、ビット・ファイルをコンフィギュレーションした。今回は、それに加えて udmabuf を実装し、udmabuf を使用し、更にアプリケーションソフトを書いて、dma_pow2 IP を動作させてみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた7(dma_pow2 IP のドライバを使用したアプリケーション)
前回は、Vivado HLS 2017.3 で作成した 2 乗倍するDMAIP をVivado 2017.3 のブロック・デザインでインスタンスして構成した回路で Device Tree Overlay でデバイスツリー・オーバーレイで、 FPGA Region を使用して、ビット・ファイルをコンフィギュレーションした。今回は、それに加えて udmabuf を実装し、udmabuf を使用し、更にアプリケーションソフト test_dma.c を書いて、dma_pow2 IP を動作させた。今回はその続きで、前回の test_dma.c を dma_pow2 IP のドライバを使用するコードに書きなおす。それを test_dma_wd.c とする。そして、Makefile も書いて make し、動作させてみる。

TCF agent を使ってLinaro Ubuntu14.04LTSが動作してるZYBO へパソコンのSDK からリモートデバッグする1
以前、”Linaro Ubuntu14.04LTSが動作してるZYBOへWindowsのSDKからリモートデバッグする”で、Linaro Ubuntu14.04LTSが動作してるZYBOへWindowsのSDKからリモートデバッグをトライしてみたが、うまく行かなかった。最近、それは、TCF (Target Communication Framwork) agent が無いからだというのをK林さんから聞いたので、やってみようと思う。
TCF agent を使ってLinaro Ubuntu14.04LTSが動作してるZYBO へパソコンのSDK からリモートデバッグする2
前回は、Linaro Ubuntu14.04LTSが動作してるZYBO上に tcf-agent をインストールした。今回は、パソコンのSDK でZYBO 上にSFTP したアプリケーションソフトをリモートデバッグすることができた。

arm のDebian でsudo をする時に「ホスト…の名前解決ができません」といわれたときの対処方法
UltraZed-EG Starter Kit の Debian Linux についてブログでやっているが、sudo をすると「sudo: ホスト debian-fpga の名前解決ができません」と言われてしまう。その対処方法を書いておく。
arm のLinuxでGUI の文字が豆腐状態になってしまったときの対処方法
UltraZed-EG Starter Kit の Debian Linux についてブログでやっているが、Xming を立ち上げて、Xウインドをパソコン上に持ってきてUltraZed-EG Starter Kit の Debian Linux 上のGUI アプリケーションソフトを操作している。その際にロケールを日本語にしていると、文字が豆腐状態になってしまうときがある。その時の対処方法を書いておく。

@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる1(前振り編)
@ikwzm さんの”UltraZed 向け Debian GNU/Linux の構築”をやってみて、UltraZed-EG Starter Kit 用のDebian を構築して、ZYBO やZYBO Z7 と同様に使いたいというのが趣旨です。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる2(Sample FPGA Design編)
前回は、@ikwzm さんの”UltraZed 向け Debian GNU/Linux の構築”をやってみることにした。今回は、”UltraZed 向け Debian GNU/Linux の構築(Sample FPGA Design編)”をやってみる。この記事では、TCL スクリプトでやっているが、私はGUI を使用してみようと思う。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる3(FSBLとPMUFWを作る)
前回は、AXI_GPIO を 3 個使ったシンプルなデザインを作成して、論理合成、インプリメント、ビットストリームの生成まで終了した。今回は、ハードウェアをエクスポートして、SDK を起動し、FSBL とPMUFW を作成しよう。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる4(BL31を作る)
前回は、ハードウェアをエクスポートして、SDK を起動し、FSBL とPMUFW を作成した。今回は、ステージ2 ブートローダー(BL31 - ARM Trusted Firmware Boot Loader Stage 3-1)を作成しよう。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる4(U-Bootを作る)
前回は、ステージ2 ブートローダー(BL31 - ARM Trusted Firmware Boot Loader Stage 3-1)を作成した。今回は、U-Bootを作ってみよう。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる5(Linux カーネルを作る)
前回は、U-Boot を作った。今回はLinux カーネルを作ってみよう。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる6(最新のdtc をビルド)
前回は、Linux カーネルをビルドしたが、dtc のバージョンが古いため --symbols オプションが使用できなかった。今回は、 --symbols オプションが使用できる最新の dtc をビルドする。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる7(Debian9 Root File Systemの構築1)
前回は、最新の dtc をビルドして、もう一度、dtb を逆コンパイルした。今回は、Debian9 Root File Systemの構築をやってみよう。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる8(Debian9 Root File Systemの構築2)
前回は、Debian9 Root File Systemの構築を途中までやったので、今回はその続きをやってみる。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる9(実機で試す)
前回は、Debian9 Root File Systemの構築が終了した。今までビルドしてきたソフトウェアやRoot FSを使用して、UltraZed-EG Starter Kit で確かめた。無事にDebian が立ち上がった。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる10(実機で試す2)
前回は、今までビルドしてきたソフトウェアやRoot FSを使用して、UltraZed-EG Starter Kit でDebian をブートした。今回は、Debian はブートできたのだが、2つほどエラーが出ているので、それを修正する。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる11(パッケージのインストール)
前回は、Debian の起動メッセージにエラーが出ていたので、その修正を行った。今回は、必要なパッケージのインストールを行う。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる12(FPGAのコンフィギュレーション)
前回は、Debian が起動してから、使用するパッケージをインストールした。今回は、そのDebian を使用して、UltraZed-EG Starter Kit でFPGA のコンフィギュレーション、FPGA のクロック設定、UIO を設定して、アプリケーションソフトを動作させてみよう。
@ikwzmさんの UltraZed 向け Debian GNU/Linux の構築をやってみる13(デバイスツリーの入れ替え)
前回は、Debian を使用して、UltraZed-EG Starter Kit でFPGA のコンフィギュレーション、FPGA のクロック設定、UIO を設定して、アプリケーションソフトを動作させた。今回は、FPGA のコンフィギュレーション、FPGA のクロック設定、UIO を設定を入れ替えてみよう。
@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる14(led_on.py を C で書いてみる)
”@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる12(FPGAのコンフィギュレーション)”
”@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる13(デバイスツリーの入れ替え)”
では、デバイスツリーをロードして、LEDを点灯させるアプリケーションソフトは @ikwzm さんの作成された led_on.py を使用した。Python のコードを使っても良いのだが、いつも書いている C 言語でアプリケーションソフトを書いてみることにした。
@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる15(udmabuf を使用する)
前回は、デバイスツリーをロードして、LEDを点灯させるアプリケーションソフトは @ikwzm さんの作成された led_on.py の代わりにじぶんで書いた C 言語のアプリケーションソフトを使用した。今回は、Vivado HLS で作ったプロジェクトで udmabuf を使用してみよう。

Ubuntu 16.04.4 LTS に git-lfs をインストール
Ubuntu 16.04.4 LTS に git-lfs をインストールのに苦労したのでインストール方法を書いておく。

ZYBO-Z7-20の Debian上のXクライアントをパソコンのUbuntu上に表示する
ZYBO-Z7-20 の Debian 上の Xクライアントをパソコンの Ubuntu 上に表示したいということで、やってみた。

ikwzm さんの fclkcfg による Zynq のPS の fclk の設定
前回は、デバイスツリー・ソース・ファイルを書いて、ビットストリームのFPGAへのロードや UIO の設定、udmabuf のロード、fclk の設定を行ったが、fclk の設定値が想定していた値と違ってしまった。
これは、ikwzm さんにお聞きしたところ、fclk1 などのClock Source が違っていたからということだった。Clock Source には、ARMPLL、DDRPLL、IOPLL の3種類あるが、どれを選ぶかで、周波数の設定値に対して、実際の値の偏差が発生するかどうか?が決まる。
このfclkcfg のバージョンでは、デバイスツリーのロード時にClock Source を変更することはできないので、u-boot 時にClock Source を変更するということだ。なお、現在のfclkcfg (fclkcfg-4.14.34-armv7-fpga_1.1.0-1_armhf.deb)では、デバイスツリーにClock Source を書くことができるので、後でやってみよう。
ikwzm さんの fclkcfg による Zynq のPS の fclk の設定2
前回は、ZYBO_BOOT つまり、ブート用のFAT32 フォーマットのMicro SD カードのパーティションで、uEnv.txt (u-boot の設定ファイル)を編集して、各 fclk の Clock Source を設定した。そのため、デバイスツリーで fclk を設定したときに正しい値を設定することができた。
今回は、新しく ikwzm さんにバージョンアップして頂いた新しい fclkcfg (fclkcfg-4.14.34-armv7-fpga_1.1.0-1_armhf.deb)を使用して、デバイスツリーから Clock Source を変更することができるかどうか?を確かめる。

Ubuntu 18.04 にAnaconda をインストール
”icrawler で学習用画像を収集する”で icrawler はなんとか pip でインストール出来たのだが、ZYBOt のKeras での学習が出来なかったので、仕方が無いので Anaconda をインストールすることにした。

Ultra96 のDebian にOpenCV 3.4.3 をインストール1
Ultra96 のDebian にOpenCV 3.4.3 をインストールしてみたいということでやってみた。
Ultra96 のDebian にOpenCV 3.4.3 をインストール2
前回は、Ultra96 にOpenCV 3.4.3 をインストールして、demo.py が起動したが、cv.namedWindow('edge') でエラーになった。今回は、その続きをやってみよう。
Ultra96 のDebian にOpenCV 3.4.3 をインストール3
前回は、demo.py からいろいろなOpenCV のサンプルを起動できるようになった。今回は、環境を整備して ffmpeg とかも入れてみようと思う。

mjpg-streamer を使ってUltra96に付けたUSBカメラの画像をストリーミングする
Ultra96 にUSBカメラを付けて、その画像をパソコンにストリーミングできたら、ミニ・ロボットカーに付けて白線の画像を取得できそう。ということでやってみた。

sudo: unable to resolve host の表示を止める
現在、Ultra96-V2 の ikwzm さんのDebian を使用して、 sudo コマンドを使用すると”sudo: unable to resolve host debian-fpga: Name or service not known”が表示されてしまう。これを止める方法を書いた。

Ubuntu 18.04 LTS に特定バージョンの cmake (Version 3.12.0)をインストールした
TVM のコンパイルをしようとしたのだが、cmake のバージョンが 3.12 以降が必要だというメッセージが出てしまった。apt でインストールできる cmake のバージョンは 3.10 ということで、cmake 3.12.0 を”Linuxに特定のバージョンのcmakeをインストール”を参考にインストールした。



inserted by FC2 system