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

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

FPGAの部屋

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

Ubuntu 18.04 LTS に特定バージョンの cmake (Version 3.12.0)をインストールした

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

現在の cmake のバージョンは 3.4.3 だった。
これで、cmake .. を実行すると cmake のバージョンが 3.12 以降が必要だというメッセージが出てしまった。
TVM_VTA_50_220619.png

sudo apt remove cmake で削除しても削除されなかった。これは、/usr/local/bin に直接 cmake をインストールしてしまったのが原因の様だ。よって、/usr/local/bin から ccmake, cmake, cpack, ctest を削除した。

なお、sudo apt remove cmake した時に libdvd-pkg パッケージが壊れていたので dpkg-reconfigure を使用して、再設定した。
TVM_VTA_54_220619.png

TVM_VTA_55_220619.png

TVM_VTA_56_220619.png

cmake 3.12.0 を”Linuxに特定のバージョンのcmakeをインストール”を参考にインストールする。

cmake.org の Index of /filesIndex of /files/v3.12 から cmake-3.12.0-Linux-x86_64.sh をダウンロードした。
cmake-3.12.0-Linux-x86_64.sh を実行した。
sudo ./cmake-3.12.0-Linux-x86_64.sh
TVM_VTA_51_220619.png
TVM_VTA_52_220619.png

cmake-3.12.0-Linux-x86_64 ディレクトリが生成された。

cmake-3.12.0-Linux-x86_64 ディレクトリを /opt に移動する。
sudo mv cmake-3.12.0-Linux-x86_64 /opt

/opt/cmake-3.12.0-Linux-x86_64/bin/* を /usr/local/bin にシンボリックリンクする。(パスの順番が早いので /usr/local/bin になった)
sudo ln -s /opt/cmake-3.12.0-Linux-x86_64/bin/* /usr/local/bin

/opt/cmake-3.12.0-Linux-x86_64/bin ディレクトリを示す。
TVM_VTA_63_220620.png

これで、cmake バージョン 3.12.0 が使用可能になった。
  1. 2022年06月20日 04:11 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

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
»