読者です 読者をやめる 読者になる 読者になる

risc-v を試してみる(途中)

まずは toolchain のインストール github.com git submodule update --init --recursiveの llvm でえらく時間がかかっているんですけど。 あとは export RISCV=/path/to/install/riscv/toolchain $ ./build.shでできるらしい。 その後、github.comここのを使…

PYNQ の Binary NN やってみたよ

とりあえず qiita.com のとおりやってみる。sudo -H でやった方がいいことに後で気づく。 update は結構時間かかった。Cifar10.ipynb 当たり前だけど、うまくいくね。それじゃ、ガゼルはどうよ? 馬と判断されました。鹿じゃないんだね。

Python をさわってみて

Python 実によくできた言語だと思います。C や Perl でどんな風に書いたら可読性が”落ちるのか”を研究していて、そういう書き方が”できない”ようにしているようです。(あくまで個人的な感想)インデントで整形というのがその典型です。これは構文解析が楽に…

Polyphony で 64bit Fibonacci (本編スピンアウト 64bit Fibonacci the movie)

あらすじ ~ TV とは違う Movie ならではの展開 ~ 32bit で気を良くした Polyphony サポートチームは 64bit の Fibonacci にチャレンジした。64bit は 32 を2つにしたというだけではない。次から次へと襲う難題。チームは問題を解決できるのか?本編からス…

PYNQ で fibonacci (完結編)

前回までのあらすじ Polyphony で高位合成をして fib.py を verilog に落とし、ついでにインタフェース情報も JSON で吐き出したものを yml に(python で)書き直し、それを手で書き直したものをつかい vivado のシミュレーションに成功。さらに IPXACT 化し…

polyphony + msgpack-rpc を試す(なんかシミュレーションはうまくいきましたよ変)

自動生成の json とか yml とかに間違いが いろいろ自動生成に間違いがありインタフェース名がまずかったようで、そこをなおしたら動いた。 以前より性能がよくなっているじゃん。def fib じゃなくて def fibonacci にすべきだったんだね。 とりあえずは手で…

Polyphony + msgpack-rpc をつかってみる(未達成編)

Python base の高位合成と msgpack-rpc をつかって処理をやってみようという話 元記事は フィボナッチを求める回路をPolyphonyとMessagePack-RPCでFPGAに実装してみた(シミュレーション編) - Qiita あと、PYNQ 祭りの資料 Pynq祭り資料 msgpack-rpc を使うモ…

Python の Parser

訳があって Python の Parser をしらべていたら、Python のコードがかなり整理されていることに気が付いた。文法もどうやら、adsl という形でちゃんと定義されている。ソース内(https://github.com/python/cpython)には Grammar/Grammar というファイルと Pa…

cygwin を更新したら、、、vim の動きが変わりましたよ

毎度のことだが、cygwin を更新したら、デフォルトの vim の動きが変わってしまった。 /etc/vimrc を読むらしい。 勝手に以前に編集した(直前に編集した)場所に戻るようになってしまった。 これが原因らしいよ。 if has("autocmd") augroup fedora autocmd…

Polyphony の開発の位置づけ

とりあえず master が clone されることが多いので stable 版になります。いまは 2.1.0。 最新版は branch を切って開発。現時点で 0.3.0 です。 pip3 でインストールされるのは現時点で 2.2.0 です。整理は必要ですが、現時点ではこんな感じ。あー自分のメ…

Polyphony で tests suite を試す。

Polyphony で tests suite を試す方法を記します。 Linux とか cygwin とか まず Python 3 の環境 + pip3 の環境をいれてください。ubuntu なら apt-get でインストールできます。 > sudo apt-get install python3-pipその後 pip3 でインストール > sudo pip…

Polyphony で SPI

Vivado HLS でいろいろ試していたのですが、結局、この手のは Python で書いて、Polyphony で Verilog に落とすことにしました。polyphony のバージョンは 0.3.0 を使用。 GitHub - ktok07b6/polyphony: Polyphony is Python based High-Level Synthesis com…

hls::stream + axiu + SDSoC の実験

SDSoC (2016.2) のサンプルで pacektize して minmax を使うものがある。Xilinx/SDSoC/2016.2/samples/platforms/zc702_axis_io/samples/streamこれに自分の stream を差し込んでみた。xilinx のサンプルは ap_axiu を直接つかっていて hls::stream を使って…

Yocto に関するメモ

Linux Kernel において .config がどのようにつくられるか?Yocto は特殊なことをしているようだ。Yocto 的には普通みたいだけど。Linux の Kernel を構築するときよく使われる手法は次みたいな感じ。 make ARCH=arm xilinx_zynq_defconfig昔は「make の使い…

sigboost のために DAC 購入

zynq + DAC できますかね?これで。 たとえば、Perfume の右チャンネルだけとりだしてフィルターかけて、リズム取り出すとかね。それにクオンタイズするように MIDI を再生するとか。妄想だけど。

sigboost で go!

MAX が生成したスクリプト(というのかどうかしらない)を高位合成して Zynq の FPGA に展開して MIDI の楽器、あるいはエフェクターになるという素晴らしい製品の sigboost 。 音楽は私の専門じゃなくてわからないけど、これは面白い。 とりあえず、今の、Kis…

Polyphony : Python によるコンパイラ

GitHub - ktok07b6/polyphony: Polyphony is Python based High-Level Synthesis compiler.とりあえず本家から fork してみる。っていうか、本家って言っても隣で K 君が開発してるんだけどね。なにやら SSA Book なるものを読んでいて、開発の時なんだかす…

Min Caml コンパイラ その4

一向に Min Caml にたどり着かない。 今日は予備知識The Essence of Compiling with Continuations https://slang.soe.ucsc.edu/cormac/papers/pldi93.pdf何やら有益なことが書いてあるらしい。どういうわけか、誰かが(大和谷さんという人)が和訳していた…

Zybo で Jupyter + PYNQ のソース を動かす。

Zybo でも PYNQ で採用しているシステムが動いた。gpio と HDMI_OUT はできた。HDMI_IN は出来なかった。環境が悪いのか、どっかでしくじったのかは不明。以下、作業備忘録 PYNQ の base.tcl から Vivado で合成(この時点では PYNQ のシステム) デザインか…

Min Caml コンパイラ その3

引き続き、コンパイラの社内研究会開催。ざっくりと概要は読み終わった。K 正規化とα変換で SSA と同等なことが達成ているのではないかと。A 正規化はインラインが楽。でもインラインしないなら、結局 K 正規化しないといけなさそう。HLS ではクロージャ変換…

PYNQ のデザインを合成してみた

2016.1 ようだったが、無理やり 2016.2 に変えて合成してみた。結構時間がかかると思ったら、単純なデザインではなかった。その上、なぜかタイミングエラーですが。気にせず、先に進みます。右下には audio や iop1 iop2 io3 というブロックがあります。iop …

Min Caml コンパイラ その2

速攻MinCamlコンパイラ概説 をみればいいだけだったりして。ML の解説まで書いてある。 あと OCaml の参考書としては「プログラミング in OCaml」という本を読んでいる。Kindle版はあるが、紙の本の方は絶版だ。いい本だけに残念。「MinCamlはMLのサブセット…

Kiss4 の環境作り

Kiss4 という Zynq のボードのために、環境作り。Yocto で環境を作っている。krogoth という branch を使用。 poky meta-xilinx meta-openembedded と zybo からぱくった meta-kiss4 まちがえて meta-openembedded の branch を master にしたら、 python-db…

Mini Caml コンパイラ その1

github.comここにある pdf をみながら、社内でコンパイラ(型推論)の勉強会を開く。 http://esumii.github.io/min-caml/jpaper.pdf いま、見たら tutorial-minicaml.doc なんてのがあった。最初から躓くよね。「単相性」ってなによ。K くんの指摘で「多相型が…

Docker + WordPress 試してみた

Docker を試してみた。FreeBSD の jail みたいなものと理解している。というより、技術的なものは一切理解せずに使っている。 Docker のインストール qiita.com この辺のを見てインストールした。単に Docker からシェルプロを wget して(記事の中では curl …

vivado の dbg_hub ではまったのでメモ

Vivado で波形を見ようと mark debug したときにはまったのでそのメモ。やろうとしたことは AXI Stream の波形を見ようとしていた。AXI Stream のクロックは Zynq から供給される。なので、そのクロックに合わせて Setup Debug を設定した。しかし、bit stre…

SSLv3 のエラーだが apache.conf で解決

SSL を導入して通常のブラウザからはうまく https が見えるのだが、Smart HTTP(git-http-backend) 経由で Eclipse から import しようとするとエラーが出る。 [Wed Jul 06 15:01:32.119075 2016] [ssl:info] [pid 11614] [client 192.xxx.xxx.xxx:63694] AH0…

g++ あやまったリンクをした際の残骸

あやまったリンクをした際の残骸 記録として残してある。 reent.c void *_impure_ptr; newlib のリエントラントな構造を保持するための大域変数。 newlib 内の実装に必要。 libstdc++ を --use-newlib でコンパイルすると、exception の unwind に この変数…

C++ を embedded な環境でつかう

結局、素の C++ を使うのがベスト。うっかりすると素ではなくていろんなものに依存するので注意。たとえば arm-xilinx-linux-gnueabi-gcc/g++ これは当然、Linux 環境に依存する。だから単純に printf とかすると Linux の /usr/include/stdio.h の printf …

ARM の EABI とか newlib とか

あまりまとまっていないけど最近の成果をメモ。わすれちゃうからね。Xilinx の SDK 用の gcc。gdb だけ再コンパイルしようとしたけどだめだった。もう全部コンパイルしないといけないみたい。結構めんどくさい。とはいえ、シェルプロがあるようなのでそれを…

usb_modeswitch と FS01BU

FS01BU は普通に USB Host につなぐと 1c9e:98ff で Mass Storage と認識される。usb-modeswitch を使うとモードを変えることが出来る。usb_modeswitch の本家からusb-modeswitch-data をとってくると 1c9e:98ff のデータがある。それを使う。 > usb_modeswi…

メモ:DNS の設定で警告

権威DNSサーバーの設定不備による情報流出の危険性と設定の再確認について(2016年1月12日公開) jprs.jp から警告を受けたのでoptions に allow-transfer を追加 allow-transfer { 192.168.0.XX; };セカンダリだけにトランスファをするのが正しいらしい。

FS01BUからSIMカードが外せなかった、、、

検索すると FS01BUからSIMカードが外せなかったので、分解して取り出す – まつぼ x Web がひかかった。ここまでわかれば分解しなくても外せそう。ということで、ノートを切って隙間に差し込むと nanosim のひっかかりがなくなり、ちゃんと外せました。分解し…

CPS のメモ

CPS で APPLY が出てくることろで、割り込みをチェックして、割り込みルーチンに飛ばす。そして、その中でレジスタの切り替えとコンテキストの切り替えをすれば、VM 上でうまくマルチタスクが出来そう。割り込み性能が落ちる。がそれはそれ、そもそも VM で …

vm と割り込み

VM をつくっているひとは割り込みについてどう実装しているのだろう?実際の CPU の動きは割り込みがあがると別のアドレスにジャンプしたりするわけだが、VM ではどう実装すればよいのだ?単純にはどっかのフラグを"毎回"見て必要があればジャンプすればよい…

vivado で突然ダウンロードケーブル経由の作業が出来なくなる

なんかの拍子に Vivado で Platform Cable USB II 経由で作業が出来なくなった。SDK もだめ。最初の理由はわからない。単純にケーブルの抜き差しか電源の off/on で大丈夫だったのかもしれない。 落ち着いて対処すればよかったのだが、慌てていろんなことを…

とりあえず hvm が Zynq で動く

おれおれ VM (gforth の vmgen でつくった) と、おれおれ Lisp コンパイラ、Zynq へもっていっても動いた。Linux だから当たり前か。 zynq> chmod +x ./hvm zynq> ./hvm Usage:hvm <vmb file> zynq> ls codes hvm zynq> ./hvm codes/test-00 test-001.vmb test-003.vmb</vmb>…

コンパイラの勉強会に向けて

コンパイラの勉強会(じゃないかもしれないけど、本人はそう思っている)にむけて駄文を重ねる。 CPS CPS は「Compiling with Continuations」という本に詳しい。Kindle の本もある。これが、1992 年の本。ML を使っている。なんで ML なんだ~と一瞬思うが…

u-boot で外部の elf を実行する

fatls で確認 zynq-uboot> fatls mmc 0:1 40687 hello_worldfatload で使ってなさそうなアドレスへロード zynq-uboot> fatload mmc 0:1 0x3000000 hello_world reading hello_world 40687 bytes read in 21 ms (1.8 MiB/s)bootelf で実行 zynq-uboot> bootel…

FS01BU

FS01BU と soracom の SIM を購入した。FS01BU はどうやら最初の設定では Disk に見えるみたいだ。おそらく、なんらかの設定をすると(Windows とかでインストールしたりすると)、モードが切り替わって Serial になるみたい。きっと、一度 Serial になったら…

EHCI で Get Descriptor

とりあえず達成。 Zynq で USB Host で EHCI で GetDescriptor できた。 基本的には u-boot に書いてあるそのままを実行した。ソースはというと、、、、 uint32_t *qTD_Setup_Data = &qTD_Setup[1024]; qTD_Setup[0] = (uint32_t)qTD_Setup_Data; qTD_Setup[…

Linux の EHCI のソースを読む

結局 EHCI を学ぶのに一番良いのは Linux のソースであることが判明した。あと参考資料としては USB コンプリートが結局一番。次に2014年のInteface 12月号の USB 探偵団。 ただし、USB 探偵団は記述が口語的。制御命令と書いてあるが、USB コンプリート(2.0…

USB と EHCI

EHCI の日本語資料が少ない。Intel の資料を見れば英語だけどだいたいわかるか。出版されている本ではなかなかそもそも USB の概略がわからない。一番良い資料は インタフェースの 2014 年の 12 月号の「USB 探偵団」なるものがわかりやすい。世の中で EHCI …

lua, pforth, gforth の VM を読む

よむったってすぐには読めません。 lua の場合 4.0 までがスタック型で 5.0 以降はレジスタ型の VM になった模様(未確認)。で初期のコードがやっぱり読みやすい。lua-1.0 あるいは lua-1.1 のソースを読むとわかりやすい。lua.stx (おそらくシンタックス) を…

スタック型のVM

コンパイラの結果をスタックマシン型の VM に落とすことを考える。JVM などでは iload なるものがある。きっと istore もある(あーあったあった)だから、スタックと"変数"への出し入れは自由なわけだ。a = b + cを考えると iload b iload c + istore aとか…

おれおれ tiny scheme もついに VM コード生成まで来た

この2か月の成果。なんとか fib をコンパイルして VM のコードに落とすことに成功。 (:JUMP |:MAIN|) MAIN (:LABEL |:MAIN|) EXIT (:LABEL |:EXIT|) |:EXIT| (:HALT :R0) |:MAIN| (:LABEL |:MAIN|) (:JUMP |:label0|) (:LIVE-REG 0 (1 1 1 1 1 0 0 0 0 0)) …

FORTH で SHA512 の動作確認

sha256> gforth Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc. Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license' Type `bye' to exit s" SHA-384_512xxx.F" ok included Selection Menu: For SHA-384 enter …

vmgen とかスレッデッドコードとか

qiita に投稿した。vmgen で簡単なレジスタベースの VM を作る(2/2) - Qiitaqiita あれば blog いらねーんじゃないだろうか? つくった vm もダウンロードできるようにした。http://www.sinby.com/download/Hvala/hvm.tar.gzqiita にも書いたけど、64bit だ…

vmgen で VM つくる

CPS も大詰めだ。最後は VM をつくることになるわけだ。gcc までいくなら cgen というのがあって、特定の CPU の gcc をつくるのをサポートしてくれるようだ。まぁいまなら LLVM の方がいいのかもしれない。MeP や Epiphany の記述があって興味深い、、、が…

fact も cps 変換

とりあえず末尾再帰の fact も cps 変換できるようになった。 (:FIXH ((|:FACT0| (FACT0 |sym11| K N RV) (:= (N 0) NIL ((:RECORD-REF (|sym11| 0) (|sym23|) ((:APP |sym23| (|sym11| RV)))) (:- (N 1) (|sym17|) ((:* (N RV) (|sym16|) ((:RECORD-REF (FA…