Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。ここまでCommon LispとuLispの重複部分でした。今回からはuLisp独特な領域、ハードウエア制御へ入ります。その1回目はGPIOとな。既に「吉例Lチカ」を過去回でやっているので復習か。でもほじくると出てくるのよ。なんだかな~。
ぐだぐだ低レベルプログラミング(192)x86(16bit)、PUSH/POPにも先祖の痕跡
前回はブロック転送命令にまつわるコマケー話。今回はPUSH/POP命令にまつわるコマケー話です。x86の場合スタックへのデータの退避や復帰にはPUSH、POP命令を使います。PUSH、POP自体は分かり易い命令であるのでコマケー話など無い感じ。しかし、歴史を知らないと何でそんな命令があるの?という御供の命令もあり。
“ぐだぐだ低レベルプログラミング(192)x86(16bit)、PUSH/POPにも先祖の痕跡” の続きを読む
Pico三昧(50) ラズパイPico2:RP2350、Pico:RP2040、DC/AC
前回は絶対最大定格でした。何のかんの言ってもPicoもPico2も必要最低線の記述あり。頭の固い年寄なので絶対最大定格の後は、DC特性、AC特性が続くものと期待してしまいます。ただこの頃の各社の文書を拝見すると必ずしもそういう章立てでないこともあるみたい。ただしPico、Pico2に関してはAC関係の記述簡素すぎ。
Lispと一緒(27) ラズパイPico2でもuLisp、汎関数、funcall、apply
Common Lispの系譜を継ぐマイコン上のuLispをラズパイPico2上で練習中。ここまでCommon LispとuLispの重複部分を練習。同一挙動が大多数ですが、一部差異もあり。そろそろ本題のPico2ハードの制御、uLisp独特な部分に行きたいデス。でも今回は重複部分の「とりあえずの〆」ね。汎関数とな。
Lispと一緒(26) ラズパイPico2でもuLisp、関数、変数の定義
Common Lispの系譜を継ぐマイコン上のuLispをラズパイPico2上で練習中。これまでの練習中に既に何度となく使ってしまった関数の定義 defun と大域変数の定義 defvar です。しかし、改めて見てみると Common Lisp と uLisp の挙動にコマケー違いがあることに気づきました。知らないとツボる?
Pico三昧(49) ラズパイPico2:RP2350、Pico:RP2040、絶対最大定格
今回は電気特性の冒頭付近に書かれている「絶対最大定格」。RP2040とRP2350を比べるだけではイマイチな感じがあったので、日米欧のマイコン業界の巨人?ルネサス、マイクロチップ、STエレクトロニクスの3社のチップの「絶対最大定格」とも比較してみましたぞ。まあ各社クセはあるけれども必要なことは書かれている。大丈夫か?
ぐだぐだ低レベルプログラミング(191)x86(16bit)、MOVS、所謂ブロック転送命令
前回、DIレジスタをベースに使うメモリアクセスではDSがデフォルトになる件練習。しかしDIレジスタは一部命令でESと「不可分に結びついている」のです。x86式には「ストリング転送命令」、一般には「ブロック転送命令」においてです。今回はその代表 MOVS 命令について見ていきたいと思います。コマケー話の宝庫なのよ。
“ぐだぐだ低レベルプログラミング(191)x86(16bit)、MOVS、所謂ブロック転送命令” の続きを読む
Pico三昧(48) ラズパイPico2:RP2350、Pico:RP2040、HSTX
今回はHSTXです。Pico2のRP2350で新規搭載。しかし「源流」はPicoのRP2040上で実現済のPico-DVI-Sockなる発明品のようです。RP2040上にハードは無いケド、上位互換的な。ラズパイに精通した姉貴、兄貴には何の不思議もないけれど、ラズパイ素人老人にはキツイよ。だいたい回路もアクロバティック。
“Pico三昧(48) ラズパイPico2:RP2350、Pico:RP2040、HSTX” の続きを読む
Lispと一緒(24) ラズパイPico2でもuLisp、「副作用」あっての者共
Common Lispの系譜を継ぐマイコン上のuLispをラズパイPico2上で練習中。「副作用」、ピュアなLispじゃ「はしたない」操作にも思えます。しかしマイコンのハードウエアの操作は副作用の連続?胸を張って副作用を前提とした者共を練習しておきたいと思います。でもuLisp上に実装されているの意外と少ない?
“Lispと一緒(24) ラズパイPico2でもuLisp、「副作用」あっての者共” の続きを読む
Lispと一緒(23) ラズパイPico2でもuLisp、局所変数、letとdo一族
Common Lispの系譜を継ぐマイコン上のuLispをラズパイPico2上で練習中。このところCommon Lisp上とuLispで実装が違うものどもを調べてます。今回はローカル変数を利用するためのものども、let(Special Form)やdo(Macro)などの一族です。この辺は実装は違えど挙動は同じじゃ。
“Lispと一緒(23) ラズパイPico2でもuLisp、局所変数、letとdo一族” の続きを読む
Pico三昧(47) ラズパイPico2:RP2350、Pico:RP2040、SHR256
今回はSHR256アクセラレータです。ハッシュ計算用ハードウエアです。セキュリティに配慮したモダーンなマイコンで時々搭載されとる回路です。前回同様、RP2350には搭載されていますがRP2040には不在。それでは寂しいのでハッシュ素人老人が、ATSAMD51のハッシュ計算器と比較してみましたぞ。
Lispと一緒(22) ラズパイPico2でもuLisp、マクロでない者共その2
Common Lispの系譜を継ぐマイコン上のuLispをラズパイPico2上で練習中。前回はCommon Lisp上の「マクロ」と異なるuLispでの実装が、実装に関わりなく同様な動作をすることを観察。しかし今回はCommon Lisp上とuLisp上で反応が違うんでないかい、という「元マクロ」どもを観察します。
ぐだぐだ低レベルプログラミング(190)x86(16bit)、即値のMOV操作
前回ようやくx86に悪名高いセグメンテーションに踏み込みました。でもセグメントレジスタへのロード、セーブだけっす。それでもメンドクセー感じがそこはかと。今回はMOV命令、それも即値データのMOVを練習。セグメンテーションなど関係ね~と言いたいところが、やっぱり影を落として?いるのです。16ビットx86は逃げられない。
Pico三昧(46) ラズパイPico2:RP2350、Pico:RP2040、TRNG
今回はTRNG(True Random Number Generator)です。Pico2のRP2350にはTRNGが搭載されとりますが、PicoのRP2040には不在。2チップの比較というとそれでおしまいになってしまいます。それでは寂しいので乱数素人老人が、コマケー話を追加してみましたぞ。大丈夫か?