e-tipsmemo

ごった煮

Ryzen5 2600X 録画PC 諸々

e-tipsmemo.hatenablog.com
続き

構成

型番
CPU Ryzen5 2600X
マザボ Asrock X470 MASTER SLI
GPU GF-GTX660-E2GHD/DF/OC(流用)
メモリ CMK16GX4M2A2666C16
電源 Corsair CX550M 80PLUS
ケース JONSBO U4
SSD MZVPV256HDGL-00000
HDD DT01ACA300

適当に放置して
CPU-ZとHWmonitorを再び見てみる。
f:id:katakanan:20180519113752p:plain
更新したらPinnacle Ridgeになった。

f:id:katakanan:20180519113840p:plain
負荷はないからか、CPUが50度を超えることはなかった。

自作系記事によくあるCinebenchをとってみる
f:id:katakanan:20180519112333p:plain

これって良いのか?
Ryzen 7 2700X/Ryzen 5 2600Xレビュー - 第2世代RyzenでIntelに追いつくことができたのか? (4) CineBench R15 | マイナビニュース
に依るとだいたい1300あたり行ってるのは間違っていないらしい。

多コアでエンコードはベタすぎるので
レイトレーシングとかで、自分で、使い切るプログラムを書いてみたいと思う。

EZ-USB FX2 Slave FIFO④

e-tipsmemo.hatenablog.com

この記事の続き。FIFOから読み出す。

FIFO generatorによって作られるFIFOがよくわからなかったので自分で非同期FIFOを作った。


読み出す部分。
書き込まれた2byteが10個(20byte)になったら読み出しを開始する。

実際に読み出す前にSTATE1を挟んでいるのはデバッグ不足だが最初の2byte目
が何故か2クロック分でてしまうから。
emptyを内部クロックでサンプルすることにしている。(多分しなくても動く?)

とりあえず出力はシンプルなAXI Streamのような形にしてある。(readyには対応していない。)

USB Control Centerから以下のような出力をすると
f:id:katakanan:20180513225957p:plain:w400

受信される形式は以下のようになる。
f:id:katakanan:20180513225845p:plain
多分できているだろう。

ひとまずこれにてUSB-Slave FIFO-AXI Stream(もどき)にすることができたので
あとはBlock RAMに入れるなりするよてい。

また自分の好きなデータを簡単に送るためには
Cypressの提供するライブラリを使用した
ソフトウェア開発も必要だとおもわれる。

Install Ubuntu18 Bionic arm(zynq) and x86(PC) まとめ

Ubuntu 18が出たので、やりかたを確かめつつまとめ

とりあえずARMで動かすUbuntu18をセットアップするためにLinuxが必要.

Bash On Windows

もあると便利。

Ubuntu18をVMplayerにインストールする。

x86_64 Windows上のVMplayerに
Ubuntu18をインストールする
Ubuntu 18.04 LTS (Bionic Beaver)

VMplayer上のインストールはほとんど迷うことが無い。
インストールメディアにISOを指定すれば後はウィザードに従ってインストールされる。

Ubuntuの設定

日本語の設定が、前よりも簡単になっていた。
Ubuntuの設定から
f:id:katakanan:20180502111344p:plain

言語メニューを選択
f:id:katakanan:20180502111534p:plain

もう既に日本語化してしまったが、
「インストールされている言語の管理」→「言語のインストールと削除」
で日本語を追加する。

日本語を追加したら、
「メニューとウィンドウの言語」でそれを一番上に持ってくる。

あとは再起動すれば日本語になっている。

fishのインストール

shellにはzshよりもfishをおすすめしたい

sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish

u-bootのビルド

まずはu-bootをビルドするのに必要なものをインストールする。
fishなら以下をコピペするだけでOK

sudo apt-get -f install
sudo apt-get install fakeroot build-essential kexec-tools
sudo apt-get install kernel-wedge gcc-arm-linux-gnueabi
sudo apt-get install u-boot-tools libncurses5
sudo apt-get install libncurses5-dev libelf-dev
sudo apt-get install asciidoc binutils-dev git
sudo apt-get build-dep linux
sudo sudo apt-get install bc

まずarm gccがバージョン6以上であるかを確認する。

arm-linux-gnueabi-gcc -v

version 7.3.0であった。
ここでversion 6.x 以上出ないと、xilinxリポジトリの最新のubootのビルドに失敗する。

つぎにxilinxリポジトリからu-bootをクローンしてくる

git clone https://github.com/Xilinx/u-boot-xlnx

追加。

cd u-boot-xlnx
echo "CONFIG_OF_EMBED=y" >> configs/zynq_zybo_defconfig

これがないと
No valid device tree binary found
とエラーが出る。

ビルド

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zynq_zybo_config
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

でu-bootというのができている。
これをu-boot.elfとリネームしてどこかに置いておく。
(そうしないとNo Execution Address JTAG handoffと出る。
Solved: ZC706 QSPI Boot: FSBL does not hand off to U-Boot - Community Forums)

kernelのビルド

git clone https://github.com/Xilinx/linux-xlnx

いま時点でmasterはkernel 4.x (≧4.9)
(新しいgccではkernel 3.xはビルドできない。)

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- xilinx_zynq_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage

で\arch\arm\bootにuImageができている。

bitファイルをつくる

Zybo [Reference.Digilentinc]
の下の方にZybo Base Systemがある
f:id:katakanan:20180504000026p:plain
おそらく初代Zyboがもう作られてないからdeprecatedである。
この中の、\zybo_base_system\source\vivado\hw\zybo_bsd
をVivado 2017.3で新しく保存し直した。

(このままBitstreamを作ろうとしたところ
BTNs_4Bitなどで原因不明のエラーが出たので、
一度AXI-GPIOをすべて消してからIO Plannningで割り当て直したら直った。)

Bitstreamを出す。
File→Export で include bitstreamにチェックを入れてOK

devicetree

引き続きVivadoから
File→Launch SDKを行う。
HDFが自動で読み込まれる。

zybo 割り込み② SDK, devicetree編 - e-tipsmemo
と同じ。

Devicetree generatorを入れる

git clone https://github.com/Xilinx/device-tree-xlnx

SDKから
Xilinx→Repositoriesで
Newを押すとダイアログが出るので、クローンしたリポジトリを指定する。
f:id:katakanan:20180504003349p:plain:w400
OK

File→New→Board Support Packageで
Board Support Package OSから
device_treeを選択。
f:id:katakanan:20180504003555p:plain:w400

bootargsに

console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1

を入れる。
f:id:katakanan:20180504003712p:plain:w400
zynq-7000.dtsの
gem0をokayにする。

gem0: ethernet@e000b000 {
	compatible = "cdns,zynq-gem", "cdns,gem";
	reg = <0xe000b000 0x1000>;
	status = "okay";
	interrupts = <0 22 4>;
	clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;
	clock-names = "pclk", "hclk", "tx_clk";
	#address-cells = <1>;
	#size-cells = <0>;
};

system-top.dtsに

mdio  {
	compatible= "cdns,macb-mdio";
	reg= <0xe000b000 0x1000>;
	clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;
	clock-names = "pclk", "hclk", "tx_clk";
	#address-cells = <1>;
	#size-cells = <0>;
	eth_phy0:phy@1 {
		compatible = "realtek,RTL8211E";
		device_type = "ethernet-phy";
		reg = <0x1>;
	};
};

を追加する。

ここと同じ。
zybo ethernet Ubuntu 17 ipv4 - e-tipsmemo

DTC入れる。

sudo apt-get install device-tree-compiler

コンパイル

dtc -I dts -O dtb -o devicetree.dtb system-top.dts
dtc -I dtb -O dts -o devicetree.dts devicetree.dtb

FSBL

SDK
File→New→Application Proejct
fsbl入れてNextでZynq FSBLを選択。
f:id:katakanan:20180504005818p:plain:w300f:id:katakanan:20180504005829p:plain:w300
Finish

\zybo_base_system\source\vivado\SDK\fsbl
のfsbl_hook.c全部をプロジェクトのfsblのsrc/fsbl_hook.cにコピペ。
(bitstreamを作るときにZynqからIICやethernetを出してないとここでエラーがでる。)
fsbl_debug.hに追加

#define FSBL_DEBUG_INFO

ビルドしてfsbl\debug\fsbl.elfがあればOK

BOOT.binを作る。

f:id:katakanan:20180504010420p:plain:w400
から下のAdd→Browse..でu-boot.elfを選択する。
OK

uEnv.txt

ZYBO用U-Bootを、ブート時にuEnv.txtを読むようにして、かつBOOT.binから起動できるようにする - Qiita

uenvcmd=fatload mmc 0 0x03000000 uImage && fatload mmc 0 0x02A00000 devicetree.dtb && bootm 0x03000000 - 0x02A00000

Ubuntu18のRoot File Systemのインストール

必要

sudo apt-get install debootstrap
sudo apt-get install qemu-user-static

sudo mount -o loop /dev/sdX2 /mnt/sd

これを行う
Ubuntu root file system for armhf - e-tipsmemo

起動後

SDカードをzyboに挿して
ピンヘッダーをSDにしておけば起動するはず。
最初は一般ユーザーでしかログインできない。
そのあとsuでrootになる。

その後の設定は
zybo ethernet Ubuntu 17 ipv4 - e-tipsmemo
の後半

echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p
ip a

ipv4が降ってこない。

vi /etc/netplan/01-netcfg.yaml

network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
            dhcp4: yes

スペース4つでないと怒られる?

netplan --debug generate
netplan apply

Ubuntu systemd getty autologin via Serial Console - e-tipsmemo
ログイン周り。

systemctl edit --force serial-getty@ttyPS0

universeリポジトリの追加。

sudo apt-get install software-properties-common
sudo apt-get update
sudo add-apt-repository universe

でOKのはず。

apt-get install sl
sl

f:id:katakanan:20180504090820p:plain:w400

合計アクセスが10000人を超えた

ブログ開始日から1年と半年ぐらいでアクセス数が10000人を超えた。
これはブログ管理画面に乗っている数字によるものなので一日においてユニークユーザーをカウントしているのかどうかなどはあまりしらない。

5月9日の11人目ぐらいのアクセスがちょうど10000人目だったと思われる。

ブログ内容的にはメジャーではないと思うし個人的なメモを主観的にわかりやすくまとめたものがおおいので、分類はわからない。
そのため訪問者数のリファレンスとなるものがなく、このペースが早いかどうかはわからない。

最近一週間の一日平均訪問者数がほぼ30人を超えているのではないかと感じる。
もしかしてGoogleクローラーの可能性もあるが、一日に30もクロールしないと思うので人間の閲覧者は0ではないと思う。

Googleからよくアクセスされているページ上から(hatenablog管理画面による 2018/05/09)

e-tipsmemo.hatenablog.com
WSL(Windows shell on linux)の導入記事
WSLが広く普及してきている?

e-tipsmemo.hatenablog.com
KiCADを使っていたころにかいた記事
KiCADは5年ぐらい使ってきたが、あまり使い心地がよくないということに気づいてしまったので最近は別のCADを検討している。
(Eagle(Autocad買収後の)、DipTrace etc..)

e-tipsmemo.hatenablog.com
Zynqで割込みを使うときの手順を1から書いたもの
昔に書いたので、いまならもっといいやり方もあるのかもしれない。

e-tipsmemo.hatenablog.com
AXI のことについてのメモ。
メモだったので雑にかいてあるのだが意外と伸びている?

e-tipsmemo.hatenablog.com
Raspberry piVNCを使う方法。
Raspberry piがまだエントリーボードとして売れてるということだろうか。

小型ディスプレイ アクリルスタンド

Raspi、FPGA、サーバーセットアップ用に小型のHDMIモニターがあると良いな。
と思った。

Amazonで小型ディスプレイを調べても、FullHDのものはなかなかない。
あっても高いか安くても小さすぎる。

秋月にちょうどいいものがあった。
akizukidenshi.com

ただこれはフレキシブルケーブル、基板などがむき出しで壊れる可能性が高いので、
アクリルスタンドを作った。

これを利用した。
www.muji.net

Amazonだと何故か3倍の値段になっている・・・

無印のアクリルを加工したら割れて使えなくなったので
ハンズで2mm厚のアクリルを買って加工した。
使えたのは金属の棒の部分だけ。

寸法を測ってCADでモデルを作った。
f:id:katakanan:20180428222434p:plain:w400

アクリルの加工を東急ハンズに頼んだが、
東急ハンズの加工サービスは手で行っているらしく、
1mm以下の精度は出せないとのこと。(2~5mmぐらいが限度?)
また、アクリル加工では端の方だと割れるのでそこも無理だと言われた。

結局、大きく四角い穴を開けてもらってディスプレイが入るまで自分で追加工した。
追加工には超音波カッターを使用した。

本多電子 超音波カッター USW-334

本多電子 超音波カッター USW-334

以前からプラ加工のためにほしかったのでついに購入に踏みきった。

組み立てた裏面
f:id:katakanan:20180428224600j:plain:w400
フレキシブルケーブルをひねるところが計画通りにいった。

ディスプレイの設定方法については秋月のサイトにある。
(FullHD以外では映らないきがする。)

Vivado IPコア コピー

Vivadoのip_repoの中に自分でつくったIPコアを複製したくなったときにコピーする方法。

Vivadoで作るユーザーIPのバージョン管理が、どういう設計手順を想定しているのかわからないが、とにかく使いにくいので、
結局自分でIPコアをコピーしてメジャーバージョンを変えるみたいな方法をとっている。
(個人的にはIPコアのポートを変えるほどの変更を加えたらメジャーバージョンをインクリメントする感じではあるが。。)

①IPコア"HOGE_1.0"がある。
②ip_repoにHOGE_2.0を作って中身をコピー
③component.xmlの中身を編集

 <spirit:modelName>HOGE_v1_0</spirit:modelName>

トップモジュール?を指定している?

<spirit:name>hdl/HOGE_v1_0.v</spirit:name>

ブロックデザイン上のGUI表示を司るtcl

<spirit:name>xgui/HOGE_v1_0.tcl</spirit:name>

とにかくIP設定のなにか

<spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.Component_Name" spirit:order="1">HOGE_v1_0</spirit:value>

その他いろいろ

HOGE_1.0だったり
HOGE_v1.0だったり
HOGE_v1_0だったり
とにかく表記が揺れているがそれらすべてを置換する。
間違えてバスのバージョンを変更しないようにする。

以下のフィールドはバスの定義に関するものなので変更しない。

<spirit:busInterface>
       <spirit:name>fifo</spirit:name>
       <spirit:displayName>fifo</spirit:displayName>
       <spirit:description>fifo</spirit:description>
       <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="fifo_write" spirit:version="1.0"/>
       <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="fifo_write_rtl" spirit:version="1.0"/>
       <spirit:master/>
       <spirit:portMaps>
       <spirit:portMap>

これで不整合があればIPコアをVivadoで編集するときにWarningになって出てくるのでそれを消すようにcomponent.xmlを修正すればなんとかなった。