Lispと一緒(37) uLisp用、Teraterm Proマクロでらくちん?

Repl
Joseph Halfmoon

uLisp公式」ではuLispをビルドするのに使ったArduino IDEのシリアル・モニタを開発環境に使うことを推奨しているみたいです。uLispに欠けている行編集機能を補える上に何となれば処理系の再生成も可能。しかし当方Teraterm Proで作業中。lispのソースを編集、アップロードするのに便利なので。
“Lispと一緒(37) uLisp用、Teraterm Proマクロでらくちん?” の続きを読む

Pico三昧(58) ラズパイPico2:RP2350、インターポレータ

InterpPOP
Joseph Halfmoon

前回はRISC-Vプラットフォームタイマを試用。このHWは唯一無二。今回はラズパイPico系にユニークなインターポレータを試用してみます。コア毎に2個のインターポレータを装備、そして1個のインターポレータには2レーンあり、合計8個の演算パスを平行利用可能です。今回は基本操作POPをつかって等差数列を生成してみます。
“Pico三昧(58) ラズパイPico2:RP2350、インターポレータ” の続きを読む

Lispと一緒(36) ラズパイPico2でもuLisp、TRNG、真性乱数の生成

read_trng
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。前回はregister関数を練習。メモリマップされた周辺回路のレジスタども(メモリでも)を読み書きできる関数でした。これがあれば何でもできそ~。今回はラズパイPico2(RP2350)特有の周辺、TRNGを使って真性乱数をゲットだぜ。

“Lispと一緒(36) ラズパイPico2でもuLisp、TRNG、真性乱数の生成” の続きを読む

Lispと一緒(35) ラズパイPico2でもuLisp、core識別情報、読み取り

register_example
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。ここ数回でSPIやらI2Cやらの先に接続された「メモリ」を読み書き。しかしuLispは恐ろしいことにCPUコアから見えるメモリ空間を直接読み書きする方法も提供してくれてます。関数名からするとペリフェラルの制御レジスタへのアクセス用です。 “Lispと一緒(35) ラズパイPico2でもuLisp、core識別情報、読み取り” の続きを読む

ぐだぐだ低レベルプログラミング(196)x86(16bit)、条件ジャンプ命令群 Jcc

Jcc_results
Joseph Halfmoon

x86の命令どもを16ビットモードから眺めてます。今回は条件付ジャンプです。x86を含むクラシックなプロセッサでは、数多くの条件フラグを駆使してジャンプするのが普通です。しかしレジスタの依存関係以外に伏線張ると「近代化時」にメンドクセー筈。モダンなRISC-Vなどはフラグ無、条件判断は条件ジャンプ命令自体で判定だよ。
“ぐだぐだ低レベルプログラミング(196)x86(16bit)、条件ジャンプ命令群 Jcc” の続きを読む

Pico三昧(57) ラズパイPico2:RP2350、RISC-V プラットフォームタイマ

RVptimerRead
Joseph Halfmoon

前回はHWスピンロックを試用。処理系が「時々」使うことがあるらしい機能を勝手に直接利用して前回はタマタマ動作しましたが、その後、案の定マズイ場合にも遭遇。そゆときは番号変えると動くかも。さて今回はRISC-Vのプラットフォームタイマを読み出してみます。RISC-VといいつつRP2350ではArmコアでも読めるみたい。
“Pico三昧(57) ラズパイPico2:RP2350、RISC-V プラットフォームタイマ” の続きを読む

Lispと一緒(34) ラズパイPico2でもuLisp、I2Cメモリ読み書き

I2CmemRW_BB
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。前回はI2CバスにSCANをかけ、接続したメモリが接続したつもりのアドレスに「居る」ことを確認できました。今回は実際にメモリにライトしてリードしてみます。リードのところの手順にちょっとテク?いるけれども、どおってことない。ホントか? “Lispと一緒(34) ラズパイPico2でもuLisp、I2Cメモリ読み書き” の続きを読む

ぐだぐだ低レベルプログラミング(195)x86(16bit)、無条件JMP

jmpDebug3
Joseph Halfmoon

x86の命令どもを16ビットモードから眺めてます。今回は無条件ジャンプです。どのプロセッサも長いのとか短いのとか複数種類のジャンプ命令を持つことが多いですが、x86はやっぱりメンドクセーです。直接に間接、nearにfarそういえばshortもあったな、という感じ。アセンブラにもコマケー指示をせんとなりません。
“ぐだぐだ低レベルプログラミング(195)x86(16bit)、無条件JMP” の続きを読む

Pico三昧(56) ラズパイPico2:RP2350、HWスピンロックの試用

HWspinlockResults
Joseph Halfmoon

前回はMicroPython処理系が備えているlockをつかって2コアの排他制御を試みました。今回はラズパイPico/Pico2に特有なハードウエア・スピンロック機構を使ってみます。RP2040のときには有用であったHWスピンロックですが、RP2350では後ろ向きの機能になってます。でも使えることに変わりありませぬ。 “Pico三昧(56) ラズパイPico2:RP2350、HWスピンロックの試用” の続きを読む

Lispと一緒(33) ラズパイPico2でもuLisp、I2Cポートスキャン

I2CscanSchematic
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。前回はSPIにメモリを接続しました。今回はI2Cバスにメモリを接続です。しかし読み書きの前にI2Cポート・スキャンからです。まあ、uLispの例題そのまま走らせるだけなんだけれども。一応、実機波形を確認。I2Cバス動いてますなあ。 “Lispと一緒(33) ラズパイPico2でもuLisp、I2Cポートスキャン” の続きを読む

Pico三昧(55) ラズパイPico2:RP2350、MicroPythonで排他制御再び

ThreadLOCKtest
Joseph Halfmoon

前回は2コア平行動作でコア間FIFO通信を使用。FIFOは制御がお楽。しかしその先を考えると排他処理など必要じゃないかと。一応PicoのRP2040にもPico2のRP2350にもSIOブロック内にハードウエアSpinlockというものがあるのだけれども、これってどうよ?その前に_ThreadモジュールのLOCKか?

“Pico三昧(55) ラズパイPico2:RP2350、MicroPythonで排他制御再び” の続きを読む

Lispと一緒(32) ラズパイPico2でもuLisp、SPIメモリ読み書き

Pico2_23LC512_BB
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。前回はSPIの出力波形を堪能。しかし波形を眺めているだけではSPIしたことになりませぬ。今回はSPI接続のSRAM、23LC512をターゲットにSPI経由での書き込みと読み出しを実験。uLispのコードもCのコードも変わらんぜよ。

“Lispと一緒(32) ラズパイPico2でもuLisp、SPIメモリ読み書き” の続きを読む

Pico三昧(54) ラズパイPico2:RP2350、MicroPythonでコア間通信

FifoTrial
Joseph Halfmoon

MicroPythonメインの別シリーズがあるのに、こちらでやっているのはRP2350のハードを直接操作するような実験をしているため。何にしてもMicroPythonはお楽。ただしMicroPython処理系の予期せぬところを触ってヤバイことになることもあり。前回は2コア実行、今回はコア間の通信機能を使ってみます。

“Pico三昧(54) ラズパイPico2:RP2350、MicroPythonでコア間通信” の続きを読む

Lispと一緒(31) ラズパイPico2でもuLisp、SPI出力

DefaultSPI0waveformMODE2
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。先ごろからハードウエア制御に入いっとります。前回はPWM出力(関数名的にはanalogwrite)、今回はSPI出力を練習してみます。端子的にはキメウチだけれども、それなりに制御できるのでないかと。実機で波形を味わってみるの回です。
“Lispと一緒(31) ラズパイPico2でもuLisp、SPI出力” の続きを読む