FC2カウンター FPGAの部屋 Linux
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

sudo: unable to resolve host の表示を止める

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

ある方に解決方法を教えていただいたのだが、忘れてしまったため、Web を検索してやってみた。忘れないようにブログに書いておく。
sudo: unable to resolve host が表示されたら”を参照させていただきながらやっていく。

まずは、/etc/hosts を確認する。

127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


/etc/hosts にホスト名を追加する。
sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'

もう一度、/etc/hosts を見ると、ホスト名が追加されていた。

127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

127.0.1.1 debian-fpga


これで、sudo コマンドを実行しても”sudo: unable to resolve host debian-fpga: Name or service not known”が表示されなくなった。感謝。。。
DisplayPort_test_V2_47_190816.png
  1. 2019年08月16日 04:47 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

Ubuntu 18.04 にAnaconda をインストール

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

Ubuntuを初めて触るド素人がAnacondaを入れてみた”を参考にして、Anaconda のサイトから Anaconda3-5.2.0-Linux-x86_64.sh をダウンロードしてインストールした。
Anaconda_1_180929.png

インストール後に .bashrc を反映した。
source .bashrc

Anaconda に keras をインストールした。
conda install -c conda-forge keras
Anaconda_2_180929.png

Anaconda に icrawler をインストールした。
conda install -c hellock icrawler
Anaconda_3_180929.png

jupyter notebook &
でJupyter Notebook を立ち上げた。

icrawler が動作した。
Anaconda_4_180929.png

Keras の学習も問題ない。
Anaconda_5_180929.png
  1. 2018年09月29日 16:06 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

ZYBO-Z7-20のDebian上のXクライアントをパソコンのUbuntu上に表示する

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

参考にしたのは、”Xクライアントを別のPCで表示する

Xクライアントを別のPCで表示する”によると

ssh CentOSのIPアドレス -X

で ZYBO-Z7-20 の Debian に入って、Xクライアントのコマンドを入力すれば良いようだ。

ssh 192.168.3.39 -X -l fpga
で、ZYBO-Z7-20 の Debian にログインして nautilus を起動した。
nautilus &
X_window_1_180401.png

ZYBO-Z7-20 の Debian 上の nautilus がパソコンの Ubuntu 上に表示された。
X_window_2_180401.png

(2018/08/17 :追記)
まずは、ikwzm さんに教えて頂いた xbase-clients と xterm をインストールする必要がある。
sudo apt-get install xbase-clients xterm

これで、nautilus を起動できたが、起動すると文字がトーフ状態だった。
検索してみるとロケールを日本語にしているのに、日本語フォントが入っていないのが問題ということだった。
対処方法として、梅フォントをインストールした。
sudo apt-get install fonts-vlgothic
sudo apt-get install fonts-horai-umefont
sudo apt-get install fonts-umeplus


これで無事にnautilus で日本語が表示できた。
  1. 2018年04月01日 06:01 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

Ubuntu 16.04.4 LTS に git-lfs をインストール

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

最初に、linuxbrew をインストールして git-lfs をインストールしようとした。
Git LFSの導入方法”辺りを参考にして、次のインストール方法を試してみた。

sudo apt linuxbrew-wapper

brew update
brew install git-lfs
git lfs install

git lfs install コマンドを実行した時に決まって、”git: 'lfs' はgitコマンドではありません。”と言われてしまった。
git-lfs_1_180401.png

いくらやっても同じなので、”Git LFSが1.0になってGitHubで使えるようになったので試してみた”を参考にした。

git-lfs.github.com から git-lfs-linux-amd64-2.4.0.tar.gz をダウンロードした。

git-lfs-linux-amd64-2.4.0.tar.gz を解凍したら、git-lfs-2.4.0 ディレクトリができた。

git-lfs-2.4.0 ディレクトリに入って、install.sh を実行した。
cd git-lfs-2.4.0
sudo bash install.sh

git lfs init は unknown command "init" for "git-lfs" になってしまったが、これが正常に解釈されるということは、git-lfs がインストールできたということだ。良かった。。。
git-lfs_2_180401.png
  1. 2018年04月01日 05:37 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる15(udmabuf を使用する)

@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる14(led_on.py を C で書いてみる)”の続き。

前回は、デバイスツリーをロードして、LEDを点灯させるアプリケーションソフトは @ikwzm さんの作成された led_on.py の代わりにじぶんで書いた C 言語のアプリケーションソフトを使用した。今回は、Vivado HLS で作ったプロジェクトで udmabuf を使用してみよう。

今回、参照するのは@ikwzm さんの書かれた、”UltraZed 向け Debian GNU/Linux で Vivado-HLS を使って合成した回路を動かす”まずは、この通りにやってみよう。

fpga ユーザーの examples ディレクトリに移動して、git clone でGitHub の ikwzm/ZynqMP-FPGA-Linux-Example-2-UltraZed を negative という名前でダウンロードして、negative ディレクトリに入る。なお、Vivado HLS の回路は in を AXI4 Master で読んできて、マイナスにして、out へ書くという回路だ。
cd negative
git clone https://github.com/ikwzm/ZynqMP-FPGA-Linux-Example-2-UltraZed negative
cd negative

UltraZed-EG_StKit_Linux_202_180130.png

Python スクリプトでビットファイルをバイナリ・ファイルへ変換し、/lib/firmware へコピー。
python3 fpga-bit-to-bin.py -f negative.bit negative.bin
sudo cp negative.bin /lib/firmware

UltraZed-EG_StKit_Linux_203_180130.png

/lib/firmware ディレクトリを見ると、negative.bin があるのが分かる。
UltraZed-EG_StKit_Linux_204_180130.png

fpga-load.dts をコンパイルして、fpga-load.dtb を生成する。
dtc -I dts -O dtb -o fpga-load.dtb fpga-load.dts
UltraZed-EG_StKit_Linux_205_180130.png

fpga-load.dtb を fpga に登録
sudo mkdir /config/device-tree/overlays/fpga
sudo cp fpga-load.dtb /config/device-tree/overlays/fpga/dtbo

UltraZed-EG_StKit_Linux_206_180130.png

COMポートのTrea Term ウインドウにメッセージが表示された。
UltraZed-EG_StKit_Linux_207_180130.png

FPGA のクロックを設定するための fclk0-zynqmp.dts をコンパイル
dtc -I dts -O dtb -o fclk0-zynqmp.dtb fclk0-zynqmp.dts
UltraZed-EG_StKit_Linux_208_180130.png

fclk0-zynqmp.dts を fclk0 に登録
sudo mkdir /config/device-tree/overlays/fclk0
sudo cp fclk0-zynqmp.dtb /config/device-tree/overlays/fclk0/dtbo

UltraZed-EG_StKit_Linux_209_180130.png

COMポートのTrea Term ウインドウにメッセージが表示された。
UltraZed-EG_StKit_Linux_210_180130.png

UIO と udmabuf のデバイスツリー negative.dts
UltraZed-EG_StKit_Linux_211_180130.png

negative.dts をコンパイル
dtc -I dts -O dtb -o negative.dtb negative.dts
UltraZed-EG_StKit_Linux_212_180130.png

negative.dtb を negative に登録
sudo mkdir /config/device-tree/overlays/negative
sudo cp negative.dtb /config/device-tree/overlays/negative/dtbo
ls -l /dev/uio*
ls -l /dev/udmabuf*

UltraZed-EG_StKit_Linux_213_180130.png

COMポートのTrea Term ウインドウにメッセージが表示された。
UltraZed-EG_StKit_Linux_214_180130.png

negative.py を動作させる
sudo python3 negative.py
UltraZed-EG_StKit_Linux_215_180130.png

今回はスループットが 292 MByte/sec 程度だったが、2回目やると次に示すようにスループットが減っていた。何か?奇数回の方が偶数会よりもスループットが高い気がする。
2 回目の結果を示す。
UltraZed-EG_StKit_Linux_216_180130.png

スループットは、148 MByte/sec 程度と 1 回目よりも少なくなっている。

後始末
デバイスツリーをディレクトリごと削除する。
sudo rmdir /config/device-tree/overlays/netagive
sudo rmdir /config/device-tree/overlays/fclk0
sudo rmdir /config/device-tree/overlays/fpga

UltraZed-EG_StKit_Linux_217_180130.png

COMポートのTrea Term ウインドウに表示されたメッセージを示す。
UltraZed-EG_StKit_Linux_218_180130.png
  1. 2018年02月01日 04:32 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

@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 言語でアプリケーションソフトを書いてみることにした。

関連する @ikzwm さんの記事は”UltraZed 向け Debian GNU/Linux で FPGA をコンフィギュレーション”の”LED を点滅させてみる”だ。

まずは、led_on.c を書いてみた。
UltraZed-EG_StKit_Linux_200_180129.png

// led_on.c
// 2018/01/29 by marsee
//

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>

int main(){
    int fd1;
    
    volatile unsigned int *led;
    
    unsigned int pattern[14] = {0x010x020x040x080x100x200x400x800x400x200x100x080x040x02};
    int i, j;
    
    // led(uio1)
    fd1 = open("/dev/uio1", O_RDWR); // USER LEDS
    if(fd1 < 1){
        fprintf(stderr, "/dev/uio1 (led) open error\n");
        exit(-1);
    }
    led = (volatile unsigned *)mmap(NULL, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, fd1, 0);
    if(!led){
        fprintf(stderr, "led mmap error\n");
        exit(-1);
    }
    
    for(i=0; i<10; i++){
        for(j=0; j<14; j++){
            led[0] = pattern[j];
            usleep(100000);
        }
    }
    
    munmap((void *) led, 0x1000);
    
    close(fd1);
    
    return(0);
}


led_on.py と比べて点滅する数は少し多いかもしれないが、大体同じ動作をする。

これをUltraZed-EG Starter Kit のDebian Linux の ~/examples/gpio ディレクトリにおいて、コンパイルを行った。
gcc -o led_on led_on.c

led_on を実行するために、”@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる12(FPGAのコンフィギュレーション)”と同様に sh スクリプトを作成した。exe_led_on_c.sh だ。その内容を示す。
UltraZed-EG_StKit_Linux_201_180129.png

#!/bin/sh

sudo mkdir /config/device-tree/overlays/fpga
sudo cp fpga-load_uzed.dtb /config/device-tree/overlays/fpga/dtbo

sudo mkdir /config/device-tree/overlays/fclk0
sudo cp fclk0-zynqmp.dtb /config/device-tree/overlays/fclk0/dtbo

sudo mkdir /config/device-tree/overlays/uio
sudo cp uio_uzed.dtb /config/device-tree/overlays/uio/dtbo
ls -la /dev/uio*

sudo ./led_on


ただ単に最後の行を入れ替えただけだ。

exe_led_on_c.sh を実行すると、同様にLED が点灯した。これで、従来通りに C で書いても動作するということが分かった。
UltraZed-EG_StKit_Linux_199_180129.png
  1. 2018年01月30日 04:09 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる13(デバイスツリーの入れ替え)

@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる12(FPGAのコンフィギュレーション)”の続き。

前回は、Debian を使用して、UltraZed-EG Starter Kit でFPGA のコンフィギュレーション、FPGA のクロック設定、UIO を設定して、アプリケーションソフトを動作させた。今回は、FPGA のコンフィギュレーション、FPGA のクロック設定、UIO を設定を入れ替えてみよう。

今回、参考にするのも、”UltraZed 向け Debian GNU/Linux で FPGA をコンフィギュレーション

最初に私の作ったVivado プロジェクトのビットファイルでコンフィギュレーションを行い、FPGA のクロック設定、UIO を設定してアプリケーションソフトを起動して動作を確認した後で、@ikwzm さんの作ったVivado プロジェクトのビットファイルでコンフィギュレーションを行い、FPGA のクロック設定、UIO を設定してアプリケーションソフトを起動して動作を確認してみようと思う。

さて、FPGA のコンフィギュレーション、FPGA のクロック設定、UIO を設定して、アプリケーションソフトを動作する一連の流れを実行するスクリプトを作成した。もうすでにdtb は作成済みなので、dtc コンパイルは入れていない。
まずは、私のVivado プロジェクトのビットファイルを使用する exe_led_on.sh を貼っておく。

#!/bin/sh

sudo mkdir /config/device-tree/overlays/fpga
sudo cp fpga-load_uzed.dtb /config/device-tree/overlays/fpga/dtbo

sudo mkdir /config/device-tree/overlays/fclk0
sudo cp fclk0-zynqmp.dtb /config/device-tree/overlays/fclk0/dtbo

sudo mkdir /config/device-tree/overlays/uio
sudo cp uio_uzed.dtb /config/device-tree/overlays/uio/dtbo
ls -la /dev/uio*

sudo python3 led_on.py


UltraZed-EG_StKit_Linux_190_180125.png

次に、ikwzm さんのVivado プロジェクトのビットファイルを使用する exe_led_on_org.sh を貼っておく。

#!/bin/sh

sudo mkdir /config/device-tree/overlays/fpga
sudo cp fpga-load.dtb /config/device-tree/overlays/fpga/dtbo

sudo mkdir /config/device-tree/overlays/fclk0
sudo cp fclk0-zynqmp.dtb /config/device-tree/overlays/fclk0/dtbo

sudo mkdir /config/device-tree/overlays/uio
sudo cp uio.dtb /config/device-tree/overlays/uio/dtbo
ls -la /dev/uio*

sudo python3 led_on.py


UltraZed-EG_StKit_Linux_191_180125.png

最後に、”UltraZed 向け Debian GNU/Linux で FPGA をコンフィギュレーション”の”後始末”のDevice Tree Overlay で追加したデバイスツリーを、後から追加した順に削除するスクリプトの rm_dev.sh を貼っておく。

#!/bin/sh

sudo rmdir /config/device-tree/overlays/uio
sudo rmdir /config/device-tree/overlays/fclk0
sudo rmdir /config/device-tree/overlays/fpga


UltraZed-EG_StKit_Linux_192_180125.png

まずは、
./exe_led_on.sh
を実行した。IP ポートのTrea Term ウインドウを示す。
UltraZed-EG_StKit_Linux_184_180125.png

LEDの点滅動作もOKだった。
COMポートのTrea Term ウインドウを示す。
UltraZed-EG_StKit_Linux_185_180125.png

この時の/config/device-tree/overlay は fclk0, fpga, uio の各ディレクトリができている。
UltraZed-EG_StKit_Linux_186_180125.png

初めてデバイスツリーの削除をやるので、rm_dev.sh ではなく、実際にコマンドを打って削除した。
UltraZed-EG_StKit_Linux_187_180125.png

COMポートのTrea Term ウインドウを示す。
UltraZed-EG_StKit_Linux_188_180125.png

/config/device-tree/overlay は fclk0, fpga, uio の各ディレクトリが削除されている。
UltraZed-EG_StKit_Linux_189_180125.png

次に、
./exe_led_on_org.sh
を実行した。
UltraZed-EG_StKit_Linux_193_180125.png

led の点滅動作もOK だった。一度、デバイスツリーを削除してからもう一度、デバイスツリーをロードしても問題なく動作する。

COMポートのTrea Term ウインドウを示す。
UltraZed-EG_StKit_Linux_194_180125.png

/config/device-tree/overlay は fclk0, fpga, uio の各ディレクトリができている。
UltraZed-EG_StKit_Linux_195_180125.png

./rm_dev.sh
を実行した。
UltraZed-EG_StKit_Linux_196_180125.png

COMポートのTrea Term ウインドウを示す。
UltraZed-EG_StKit_Linux_197_180125.png

/config/device-tree/overlay は fclk0, fpga, uio の各ディレクトリが削除されている。
UltraZed-EG_StKit_Linux_198_180125.png

これで一旦ロードしたデバイスツリーを削除して、別のデバイスツリーをロードできることが確認できた。
  1. 2018年01月27日 04:45 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0
»