忘れないように
Vivadoでmicroblaze - fpgafpga ページ!
Block Design
Board fileを使えば、ピンアサインする手間が省ける。
SDK
HelloWorld
忘れないように
Vivadoでmicroblaze - fpgafpga ページ!
Board fileを使えば、ピンアサインする手間が省ける。
HelloWorld
構成
物 | 型番 |
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を再び見てみる。
更新したらPinnacle Ridgeになった。
負荷はないからか、CPUが50度を超えることはなかった。
自作系記事によくあるCinebenchをとってみる
これって良いのか?
Ryzen 7 2700X/Ryzen 5 2600Xレビュー - 第2世代RyzenでIntelに追いつくことができたのか? (4) CineBench R15 | マイナビニュース
に依るとだいたい1300あたり行ってるのは間違っていないらしい。
この記事の続き。FIFOから読み出す。
FIFO generatorによって作られるFIFOがよくわからなかったので自分で非同期FIFOを作った。
読み出す部分。
書き込まれた2byteが10個(20byte)になったら読み出しを開始する。
実際に読み出す前にSTATE1を挟んでいるのはデバッグ不足だが最初の2byte目
が何故か2クロック分でてしまうから。
emptyを内部クロックでサンプルすることにしている。(多分しなくても動く?)
とりあえず出力はシンプルなAXI Streamのような形にしてある。(readyには対応していない。)
USB Control Centerから以下のような出力をすると
受信される形式は以下のようになる。
多分できているだろう。
ひとまずこれにてUSB-Slave FIFO-AXI Stream(もどき)にすることができたので
あとはBlock RAMに入れるなりするよてい。
また自分の好きなデータを簡単に送るためには
Cypressの提供するライブラリを使用した
ソフトウェア開発も必要だとおもわれる。
Ubuntu 18が出たので、やりかたを確かめつつまとめ
とりあえずARMで動かすUbuntu18をセットアップするためにLinuxが必要.
x86_64 Windows上のVMplayerに
Ubuntu18をインストールする
Ubuntu 18.04 LTS (Bionic Beaver)
VMplayer上のインストールはほとんど迷うことが無い。
インストールメディアにISOを指定すれば後はウィザードに従ってインストールされる。
日本語の設定が、前よりも簡単になっていた。
Ubuntuの設定から
言語メニューを選択
もう既に日本語化してしまったが、
「インストールされている言語の管理」→「言語のインストールと削除」
で日本語を追加する。
日本語を追加したら、
「メニューとウィンドウの言語」でそれを一番上に持ってくる。
あとは再起動すれば日本語になっている。
shellにはzshよりもfishをおすすめしたい
sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish
まずは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以上であるかを確認する。
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)
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ができている。
Zybo [Reference.Digilentinc]
の下の方にZybo Base Systemがある
おそらく初代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
引き続きVivadoから
File→Launch SDKを行う。
HDFが自動で読み込まれる。
zybo 割り込み② SDK, devicetree編 - e-tipsmemo
と同じ。
Devicetree generatorを入れる
SDKから
Xilinx→Repositoriesで
Newを押すとダイアログが出るので、クローンしたリポジトリを指定する。
OK
File→New→Board Support Packageで
Board Support Package OSから
device_treeを選択。
bootargsに
console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1
を入れる。
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
から下のAdd→Browse..でu-boot.elfを選択する。
OK
ZYBO用U-Bootを、ブート時にuEnv.txtを読むようにして、かつBOOT.binから起動できるようにする - Qiita
uenvcmd=fatload mmc 0 0x03000000 uImage && fatload mmc 0 0x02A00000 devicetree.dtb && bootm 0x03000000 - 0x02A00000
必要
sudo apt-get install debootstrap
sudo apt-get install qemu-user-static
sudo mount -o loop /dev/sdX2 /mnt/sd
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
sudo apt-get install software-properties-common
sudo apt-get update
sudo add-apt-repository universe
でOKのはず。
apt-get install sl
sl
ブログ開始日から1年と半年ぐらいでアクセス数が10000人を超えた。
これはブログ管理画面に乗っている数字によるものなので一日においてユニークユーザーをカウントしているのかどうかなどはあまりしらない。
5月9日の11人目ぐらいのアクセスがちょうど10000人目だったと思われる。
ブログ内容的にはメジャーではないと思うし個人的なメモを主観的にわかりやすくまとめたものがおおいので、分類はわからない。
そのため訪問者数のリファレンスとなるものがなく、このペースが早いかどうかはわからない。
最近一週間の一日平均訪問者数がほぼ30人を超えているのではないかと感じる。
もしかしてGoogleクローラーの可能性もあるが、一日に30もクロールしないと思うので人間の閲覧者は0ではないと思う。
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 piでVNCを使う方法。
Raspberry piがまだエントリーボードとして売れてるということだろうか。
Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab
Raspi、FPGA、サーバーセットアップ用に小型のHDMIモニターがあると良いな。
と思った。
Amazonで小型ディスプレイを調べても、FullHDのものはなかなかない。
あっても高いか安くても小さすぎる。
秋月にちょうどいいものがあった。
akizukidenshi.com
ただこれはフレキシブルケーブル、基板などがむき出しで壊れる可能性が高いので、
アクリルスタンドを作った。
これを利用した。
www.muji.net
無印のアクリルを加工したら割れて使えなくなったので
ハンズで2mm厚のアクリルを買って加工した。
使えたのは金属の棒の部分だけ。
寸法を測ってCADでモデルを作った。
アクリルの加工を東急ハンズに頼んだが、
東急ハンズの加工サービスは手で行っているらしく、
1mm以下の精度は出せないとのこと。(2~5mmぐらいが限度?)
また、アクリル加工では端の方だと割れるのでそこも無理だと言われた。
結局、大きく四角い穴を開けてもらってディスプレイが入るまで自分で追加工した。
追加工には超音波カッターを使用した。
組み立てた裏面
フレキシブルケーブルをひねるところが計画通りにいった。
ディスプレイの設定方法については秋月のサイトにある。
(FullHD以外では映らないきがする。)
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を修正すればなんとかなった。