Rust 実行時間測定②

e-tipsmemo.hatenablog.comこのような記事を書いたが、time crateのリポジトリをよく見ると、 Notes This library is no longer actively maintained, but bugfixes will be added (details). In case you're looking for something a little fresher and mo…

Rust レイトレーシング ⑦床

http://e-tipsmemo.hatenablog.com/entry/2018/02/17/000000e-tipsmemo.hatenablog.com複数の物体を表示できるようにする。 とりあえず複数の球体をvecに入れる。 shapelistにもHITトレイトを実装することで前と同じようにhitを呼ぶだけ。 t0 ~ closest間の…

MIPS 命令順序入れ替えない

前にこのような記事を書いたが、 e-tipsmemo.hatenablog.comこのままだとMIPSの遅延分岐やSW/LW関連の依存の解消のために勝手に命令が入れ替わってしまう。解決法: asmの先頭に.set noreorderをつける。このプログラムを比較してみる。 add $1, $0, $10 add…

Rust レイトレーシング ⑥ スーパーサンプリング

Rustでの演算子オーバーロードを行うために、構造体にAdd/Mul/Div Traitを実装する。これを用いることで足し算、掛け算、割り算の演算子を使える。 スーパーサンプリングは光線の方向にランダムな要素を加えて、その方向から得られた色から平均をとることで…

xgpiops.h No such flie or Directory

zyboでUSB3320のリセットがMIO46につながっているのは Zybo Reference Manual [Reference.Digilentinc] ここからわかる。 どうやらハードウェア類がLinux前にリセットされていなければならないのは組み込みあるあるなのかしらないが 以下のサイトによるとそ…

Rust レイトレーシング ⑤ 法線

http://e-tipsmemo.hatenablog.com/entry/2018/02/05/000000e-tipsmemo.hatenablog.com 法線を用いて球に色を付ける。 交差した点の座標が必要。あとは前回のものを微修正するだけでOK 法線を計算をしてHitRecordに詰める。 matchではSomeの中に引数のような…

zybo ethernet Ubuntu 17 ipv4

0からzyboのLinux起動を試しており、イーサネットがつながらなかった。 e-tipsmemo.hatenablog.com 大体ここをベースに今回はUbuntu 17 (Artful)を利用する。 ①デザイン zyboのイーサネットピンをMIOから出す。MDIOを忘れないようにする。 参考 ②bitstreamを…

Rust レイトレーシング ④ 球体

sphereとshape_opを追加した。shpereは色を持つ。ついでにColorにnewメンバ関数を追加ておく。 光が当たったところを記録する。hit関数によって返される。当たった点pと法線ベクトルnと光源からの距離t。 後々のためにHIT Traitを定義。「HIT Traitを実装し…

EZ-USB FX2 Bulkloop ③

e-tipsmemo.hatenablog.com BulkloopのTD_pollを見ていく。 BulkloopではPCからinのEPに送られてきたデータをoutのEPからPCに送り返すものであった(はず)読み取り先のEPのステータスをチェックして 書き込み先のEPのステータスをチェックする。EPのバッファ…

Rust レイトレーシング ③ マルチスレッド

e-tipsmemo.hatenablog.com続き。見通しをよくするためにcolor構造体を利用することにした。各色は0.0~1.0しか取らないので適当にclampしてやる必要があるのでそういった細かい関数は へ書くことにした。 色は基本的にシーン内で計算することにした。 マルチ…

EZ-USB FX2 Bulkloop ②

e-tipsmemo.hatenablog.comの続き。 CPUのクロックを48MHzに設定 http://www.cypress.com/file/126446/download p83にクロックツリーの・ようなものがある。 The slave FIFO interface can be clocked from either an internal or an external source. The E…

Rust レイトレーシング ② レイを飛ばす

e-tipsmemo.hatenablog.com 前回は画像を表示することが可能になったのでRayを飛ばす。 必要なものはカメラとスクリーンとそれらをまとめるシーンとレイレイトレーシングをいろいろと検索すると何故かz軸正の方向から原点を見下ろすシーンが多いようだが理由…

Rustでレイトレーシング 1.5 画像出力

e-tipsmemo.hatenablog.comの補足。後々にレイトレーシングをマルチスレッド化していこうと思っているので まずは画像出力をマルチスレッド化した。階層はこのような感じ 実行結果は以下の様になる 上から3つのスレッドがそれぞれ画素を計算している事がわか…

EZ-USB FX2 Bulkloop

fw.cを見る初期化があった後に(Bulkloop.cにある) ここでDevice Descriptorをそれぞれの構造体へ読む。 EP0でコントロールコマンドが来た時に必要。 で割り込みを有効にしているらしいが、関数呼び出しかと思わせておいてdefineで定義されている単なるレジス…

Rustでレイトレーシング ① 画像出力

e-tipsmemo.hatenablog.com何はともあれ画像を出力しないと何もできないので image crateについて軽くメモ 左上が原点のようだこのcargoとcrateの組み合わせで非常に簡単にライブラリの導入ができるのが頼もしい。Ray Tracing in One Weekend (Ray Tracing M…

Rustでレイトレーシング 0 準備

レイトレーシングを常々やってみようと思っていていた。 ちょうどよくRustという言語が波に乗り始めているらしいので ついでにRustでレイトレーシングを書くとは言っても0から何も見ずに書くのは学習も進まないのでRay Tracing in One Weekend (Ray Tracing …

zynqで最新のUbuntuを起動する

Ubuntu 17.04が出ました。 SDカードのフォーマット gpartedが便利。 SDカードの先頭から開始セクタ2048のところから 64MBをFAT16に その次から全部をext4にフォーマットする。 ラベルは適当 Ubuntuのインストール Ubuntu 17の名前はzesty SDの第二パーティシ…

Rust multithread 確認

e-tipsmemo.hatenablog.com このような記事を書いたが、そもそもthreadをたくさんjoinした後に、 その後の処理はそれらスレッドの終了を待っているのだろうか。と思ったので確認してみた。 #[cfg(test)] mod tests { use super::*; fn hoge(thread: u32, num…

EZ-USB FX2 開発環境設定・動作テスト

CypreeのEZ-USB FX2を開発するために必要なものをメモするまずは登録しないといけないのが不便 あとサイプレスのサイトがとても重い。 開発ソフトウェア Windows10のためのドライバ http://japan.cypress.com/knowledge-base-article/drivers-ez-usb-fx1-fx2…

Rust multithread 実行時間測定

multithreadが本当に効いているのかを確かめたいので シングルスレッドとマルチスレッドで実行時間を測定したかった。しかし、 ここのような e-tipsmemo.hatenablog.com cargo banchによる測定方法ではなんだかうまくいかなかったので シンプルに実行前後の…

Ubuntu root file system for armhf

組み込みLinuxの勉強として あるARMデバイスのためにSDカードのパーティションにUbuntuのRoot File Systemを展開しておきたい。タイトルはBuildとあるがビルドするほどのものでもないかもしれない。実行環境はVMplayer上のUbuntu16.04 LTS 0 準備 $ sudo apt…

Rustでマルチスレッド 試用

rustbyexample.comここを参考に e-tipsmemo.hatenablog.com をマルチスレッド化してみる。 ついでに積分計算は台形で行うように変更した。 extern crate test; use std::thread; #[derive(Debug, Copy, Clone)] struct Fx { a: f64, b: f64, step: u64, f: f…

ElecrowとPCBGOGOの比較

パターンミスのために 基板製造を二回したので ElecrowとPCBGOGOでそれぞれ行い、 主観的な比較を行った。基板サイズは約50mmX50mmで色は白製造した基板 左がPCBGOGO 右がElecrow Elecrow 少し黄ばんでいる(白だと気になるかもしれない) 担当者によるチェッ…

Rust bench 実行時間測定

rustである関数の実行時間を測定したいときがあったのでメモ 環境 rustc --version rustc 1.24.0-nightly (f8af59d95 2017-12-13)rustc-testクレートが必要なのでCargo.tomlに記述する。 extern crate test; use test::test::Bencher; struct Fx { a: f64, b…

Verilog ビデオ信号出力(Transition Minimized Differential Signaling)

いわゆるHDMIのV1.0でDVI-Dと互換のデータ形式e-tipsmemo.hatenablog.com の続き。 といっても e-tipsmemo.hatenablog.com をVerilogにするだけ module encoding( input clk, input resetn, input [7:0] din, output [9:0] dout, input disp_area, input c0,…

objcopyで textセクションの抽出

諸事情があって自分の書いたMIPSアセンブリを純粋に機械語に変換しただけの16進数表示のテキストが ほしいという状況になった。 今回はMIPSでそういう状況だったがgccを使っているのでアセンブラのところを切り替えれば x86でもx64でもarmでもなんでも同様の…

Rust入門 セットアップ

Bash On Windowsをインストールし直すたびにこれも検索し直しているのは時間がかかって仕方がないのでメモ(2017/12)WSL上でRust install $ curl https://sh.rustup.rs -sSf | sh Current installation options: default host triple: x86_64-apple-darwin de…

WSL(Bash On Windows)を再セットアップ

色々とめんどくさくなったときに再設定するためのメモcmd.exeからオプションなしの削除 >lxrun /uninstallすべて削除 >lxrun /uninstall /full最近のWindowsのアップデートでWSLが標準機能になったのでストアからインストール www.microsoft.com起動するとro…

KiCADのモデル Fusion360

KiCADには3Dmodelを表示・出力機能がデフォルトであるが、 対応フォーマットがwrlというものだけだ。 一方でフリーの3DCADとしては最も優秀だと思われる Fusion360の出力フォーマットにwrlはない。 これをFreeCADを使って変換するプラグインがあるらしいので…

Verilog ビデオ信号出力(アナログRGB)

忘れないように。 1920x1080@60fpsの場合 ビデオ期間とhsyncの関係 ビデオ期間とvsyncの関係 50fpsだとフロントポーチ、バックポーチの各値が違う。 hが横方向のピクセルを、vを縦のラインを数えていくカウンターを用意して、 適当な値になったらvsyncやhsyn…