e-tipsmemo

ごった煮

プログラム

Seeed Studio XIAO nRF52840 Sense を試す(1)

なんかBLEで作りたいものが出てきたので、マイコンを探した。Seeed Studio XIAO nRF52840 Sense - Arduino/CircuitPython - Bluetooth5.0 NFC オンボードアンテナ付き、6軸IMUとPDMマイク付きマイクロコントローラ、小さな機械学習用。seeed studioAmazonBLE…

Rust memmap2 LED blinking with Zynq

ZyboにUbuntu22.04のファイルシステムを入れて起動した。 PL部分にはAXI GPIOがつながっておりLEDが接続されている。 rotors.tar.goのファイルシステムにはdevmemがインストールされいた。 しかしUbuntuには入っていなかったのでdevmem2.cをどこからかダウン…

Tinker Board S2にOSをインストールする

ちょっと簡単な実験用にシングルボードコンピューターが欲しくなったけど Raspberry pi 4B (4GB)などは全く打っていないか明らかに高い値段で転売されているので、 趣向を変えて別のボードを購入することにした。どうで~万円だすならと良さそうなのを探した…

pythonでデジタルフィルタ FIRフィルタ

Pythonでデジタルフィルタを書きたい時が、まれにある。 でも自分で計算したフィルタの係数が、 本当にその周波数特性を持っているのか確認したくなる。そこでpythonのscipyにあるfreqzを使用して確認してみる。 FIRフィルタとIIRフィルタ 宮崎のホームペー…

pythonでツイート全部消す

ツイート全部けしたくなったが、黒歴史クリーナーなどでは3200件までとか、 削除前後にメッセージを出す機能とかあって、いろいろと面倒なので、 pythonにやらせる。 ツイートを全部ダウンロード こればっかりは手動で行う。 2,3日待って、自身のツイートが…

NES Emulator in Rust : 5.1 Sprite timing

e-tipsmemo.hatenablog.com 以前にBackgroundが実装されていたがその時にSpriteも実装していた。(前後関係がおかしいままであるが) Sprite描写の実装は参考サイトとは少し違う (参考サイトの実装方法ではSprite zero hitのタイミングが数pixelずれる気がした…

Piston_window with Nintendo Switch Procon

e-tipsmemo.hatenablog.com前回NESのエミュレータでキー入力からのPAD操作を実装することができていたが、 やはりゲームパッドでコントロールしたいという願望があったため、Nintendo Switchのプロコンを買った。【任天堂純正品】Nintendo Switch Proコント…

NES Emulator in Rust : 4 Pad Input

e-tipsmemo.hatenablog.com続きスプライト実装をする前に、Nestestを通すために、PAD入力をサクッと実装する。 NES on FPGA PAD キー入力 Piston windowでキー入力をとるのはEvent::Inputが来たとき。 本当はInputでパターンマッチした引数でうまくやれるか…

NES Emulator in Rust : 3 PPU Background

e-tipsmemo.hatenablog.com 続きPPUを始めるにあたってnestestの表示または、HelloWorldの表示が最初の目標となる。 ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita スプライト表示なし。(スクロールなしの)バックグラウンドを描写さえすれば…

NES Emulator in Rust : 2 CPU

e-tipsmemo.hatenablog.com 続き CPU #[derive(Default, Clone)] pub struct Cpu { pub pc: Cell<u16>, pub a: Cell<u8>, pub x: Cell<u8>, pub y: Cell<u8>, pub s: Cell<u8>, pub p: Cell<Status>, pub nmi: Cell<bool>, } レジスタを用意する。Statusはbitflags crateでflag管理する。 メイン</bool></status></u8></u8></u8></u8></u16>…

NES Emulator in Rust : 1 Operation Cycle

e-tipsmemo.hatenablog.comまずはどうCPU & PPU Cycleを合わせていくかというところを見る。 最初はほぼ参考サイトと同じように実装していく。 Operation Cycle Generatorを使うことで、NESの1画面更新が、以下の1ループと同じになる。 yieldでVBlankで停…

NES Emulator in Rust : 0

以前ファミコンのエミュを書きたいといってROMを読んだ記事を書いた。 e-tipsmemo.hatenablog.comコミットログを見ると始めてから2か月というところで、 giko00x.nesが動かないが、Donky kongがバグりつつ動いてくれたりと躓いているので。 かわりに雑記を書…

Home AssistantとESPHome導入とESP8266でLED点灯

Getting Started with ESPHome and Home Assistant — ESPHome ここをやったときのメモ Home AssitantのSupervisorになるものを用意 候補 Installation - Home Assistant Dockerが動けば大体いけるので、最近のSynologyやQNAPのハイスペックNASでも行ける気が…

Extract splite from NES file in Rust

懲りずにエミュレータを作りたいと考えている。 ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita HelloWorldするために、NESファイルを読み込みたい。 Qiitaの記事にもあるようにウォーミングアップとしてスプライトを表示したい。 GitHub - ka…

Parse indent sensitive grammar in Rust with Pest

以前、パーサーを雑に比較した。 e-tipsmemo.hatenablog.com結局Left-recursionは書き方で何とか対応できる範囲だと思われるので Introducing pest into glsl and hindsight about nom vs. pest (part 1) – phaazon.net(それ以外はどうしようもない) インデ…

TD4 Emulator GUI in Rust iced

TD4のエミュレータを作った e-tipsmemo.hatenablog.comが、それだけではつまらないので、GUIを被せた。 RustのGUIライブラリicedを使用した。 シンプルそうだったからというのが選んだ理由。 GitHub - katakanan/td4-gui Ticker Icedは周期を指定してイベン…

TD4 Emulator in Rust

思い立ったのでTD4のエミュレータを書いた。 GitHub - katakanan/td4-emu 命令セット TD4の命令の定義部分。 オリジナルで定義されている命令以外はNOPということにする。 #[derive(Debug, FromPrimitive, PartialEq)] pub enum Opecode { ADD2A = 0b0000, A…

libiio rust binding for Windows

前置き ADALM PLUTOからデータをもらうのに、用意されている方法として、Industrial-ioを使用する方法がある。 Linux Industrial I/O Subsystem [Analog Devices Wiki]組み込み機器が得たデータを簡単にPCとやり取りできる。 (組み込み機器上でLinuxが動いて…

Import dll from Rust dinamically

RustのFFIでdllを使う方法として、 #[link(name = "my_c_library")] extern "C" { fn my_c_function(x: i32) -> bool; } extern - Rust ただ.libが無いと言われてしまった。 windows - Rust linker seeks a LIB, rather than a DLL - Stack Overflow代わりに…

PythonでFMを直交復調を試す2

以前、PythonでFM復調を試した、 そのとき、変調指数が大きいときは素朴に、位相の差分を取るところで特別な処理を入れて対処していたが、 Interfaceを読んで、直交復調を真の意味で?活用することでその問題を回避できるということを確認した。e-tipsmemo.h…

PythonでFM信号の直交復調を試す

pythonに慣れるのと、SDRにおいてIQ復調(Quadrature demodulation)の理解をする。参考 直交復調の解説 http://einstlab.web.fc2.com/IQ/IQ.pdfコード fmsim.py · GitHub FM変調波を用意する サンプリング周波数は1MHz キャリア周波数は20kHz 信号周波数は1kH…

Generate Hi/Mid/Lo FIRRTL

FIRRTLの抽象度?別を確認する。 object counterMain extends App { var uargs = Array("-X", "middle") //ここをかえる high middle low val FIRRTLString = // (new chisel3.stage.ChiselStage).emitVerilog(new counter(32)) (new chisel3.stage.ChiselSta…

Comparison of Rust Parser generators

Rustでパーサージェネレーターを探していたときに、 その特徴や、今回の最終目的に必要な機能が備わってかどうかで主観的に比較をした時のメモ 構文解析の方式 Indentation(Pythonのようなインデントセンシティブな文法をパースできそうか) 曖昧な文法が可能…

AXI Stream from BRAM

VivadoのIPコアはたくさんあって便利だけども シンプルな機能を求めるときには、 調べるの面倒とか、微妙に思っていたのと違うと感じることが多々あった気がするので、 仕方ないので自分で書いたものをメモBRAM IFにつなげて同じ幅のAXI Streamで連続データ…

Rust レイトレーシング

e-tipsmemo.hatenablog.com 書きながら再び書き直した。 Thu Aug 20 20:06:12 JST 2020 Hello World 1600x800 thread : 12 ss : 100 ________________________________________________________ Executed in 143.56 secs fish external usr time 1384.58 sec…

Rustのparserを試す

ちょっと必要になったきがするのでparserをかくためのものを探したり サンプルを書いてみたりした。 個人的なメモ What is the difference between parser generators and parser combinators? - Quora compiler construction - What is the difference betw…

diagram-js customize 6. CustomizeRenderer

今回はBase Renderを継承した自作クラスに切り替えるbpmn-jsを参考にすると、lib/drawに主な3つのファイルがあるので それを作る。(今回はまだMyRenderUtilは使わない) 四角をつなげる線を引いたりするのに lib/util/RenderUtilが必要で、 diagram-jsからそ…

diagram-js customize 5. ContextPadProvider

e-tipsmemo.hatenablog.comつぎはContextPadProvider といっても今回もソースコードを分離する程度 ExampleContextPadProvider.jsの実装を/lib/features/context-pad/に移す。 ほぼコピペContextPadProvider.js import { assign, forEach, isArray } from 'm…

diagram-js customize 4. PaletteProvider

次にPaletteProvider bpmn-jsを習って、 app/lib/features/palette を以下のように構成。 index.jsはappからimportするときの読み込まれる? jsでファイルを分割するときの手法っぽい import PaletteModule from 'diagram-js/lib/features/palette'; import …

diagram-js customize 3. CONNECTION/SHAPE_STYLE

e-tipsmemo.hatenablog.com まず、前回スタイルがピンク色だったが、ここの色を変えるには1.BaseRenderのスタイルを上書き 2.app/lib/draw/Renderに新しくdiagram-js/BaseRenderを継承したRender Classをつくっていろいろとやる。とあるが、2は今は面倒なの…