ぐだぐだ低レベルプログラミング(49) RISC-V、アリガチな浮動小数加減算の落とし穴

VScodeEC
Joseph Halfmoon

前回までに浮動小数点の例外とか丸めとかのメンドイ部分を調べました。今回からは実際に計算していきたいと思います。まずは浮動小数の加算と減算からですな。ただ足し算が出来たと喜ぶのでは芸が無いので、皆さんご存じな「駄目」ケースの計算をあえてやって、バイナリで結果を見て行きたいと思います。

“ぐだぐだ低レベルプログラミング(49) RISC-V、アリガチな浮動小数加減算の落とし穴” の続きを読む

Pico三昧(8) Pico C/C++SDKでinterp その2、DeadBeef例題

DeadBeef
Joseph Halfmoon

前回からラズパイPicoの特長の一つである interpolator を使いはじめました。今回は、interpolator の内部にある、シフタ、マスク、符号拡張器を制御してみます。RP2040データシートを読むとちょうどいい塩梅に処理例が載っていました。DeadBeefとな。ここでは16進数でちょうど32ビットだからってことみたいですが。

“Pico三昧(8) Pico C/C++SDKでinterp その2、DeadBeef例題” の続きを読む

MicroPython的午睡(60) ESP32、WatchDogタイマの利用

DevKitC_WDTtest
Joseph Halfmoon

WatchDogタイマ(番犬タイマ)は、万が一ソフトウエアがxxな事態に陥ったときにRESETなどかけて制御を取り戻してくれる「転ばぬ先の杖」であります。40年ほど前のマイコンでは、ちょっとヘビイ・デューティっぽい機種にのみ搭載されていましたが、この頃はほぼほぼ漏れなく搭載されている標準機能かと思います。

“MicroPython的午睡(60) ESP32、WatchDogタイマの利用” の続きを読む

モダンOSのお砂場(34) Mbed OS6、EventQueueを使ってみる

VSCodeWindow
Joseph Halfmoon

前回のMbed OS6は bare metal profileでしたが、今回はRTOS部分を含むフルセットのAPIが使える状態でサンプル・プログラムをビルドしています。とはいえbare metalでも「行けそう」な小さなもの。使ってみるMbed OS機能は EventQueueです。Queueに溜まっているお仕事を取り出しては処理してくれる働き者。

“モダンOSのお砂場(34) Mbed OS6、EventQueueを使ってみる” の続きを読む

ぐだぐだ低レベルプログラミング(48) RISC-V、浮動小数点例外フラグたててみる

Kendryte K210
Joseph Halfmoon

今回も前回同様にRISC-Vの単精度浮動小数点除算命令を使います。今回は実際に計算をした結果として浮動小数点例外の5つのフラグを立ててみたいと思います。所望の例外を所望の場所(というかタイミングというか)で起こすというのは難しいというかメンドイです。そのくせ、起きてほしくないときに起きるんだけれども。例外ってやつは。

“ぐだぐだ低レベルプログラミング(48) RISC-V、浮動小数点例外フラグたててみる” の続きを読む

Pico三昧(7) Pico C/C++SDKでinterp その1、popとpeek

projectSetupEC
Joseph Halfmoon

ラズパイPicoの特長的なハードウエアのひとつが interpolator です。その名からすると補間をしてくれるハードウエアですが、実際にはいろいろな目的に使えそうなデータパス、計算エンジンと言う感じです。RP2040の2個あるコアに2個づつ合計4個のinterpolatorが搭載されています。今回は pop と peek 2つの基本操作の違いを見てみます。

“Pico三昧(7) Pico C/C++SDKでinterp その1、popとpeek” の続きを読む

手習ひデジタル信号処理(20) 母音音声合成器その5、合成された音を聞く

Joseph Halfmoon

前回、STM32F446REに書き込んだ母音音声合成器の出力波形を、スペクトログラムなどを使って「見て」みました。しかしね、なんです、音なのでこの耳で聞かねば。ということで今回は出力信号の先に大分前に組み立ててあった秋月製のスピーカアンプを接続、「聞いて」みましたぞ。実際の音声ファイルもありです。

“手習ひデジタル信号処理(20) 母音音声合成器その5、合成された音を聞く” の続きを読む

モダンOSのお砂場(33) Mbed OS6、bare metal profile、Lチカ

NucleoF401_EC
Joseph Halfmoon

今回から Mbed OS6の bare metal profile というものを触ってみたいと思います。Mbed OS6のコアなRTOS部分を「欠いた」プロファイルです。しかし見てみるとマルチタスクっぽいこともできるみたい。毎度お世話になってきたMbed OS2の引っ越し先?それにVSCode+PlatformIOでビルドからデバッグまで出来る。なかなかじゃん。

“モダンOSのお砂場(33) Mbed OS6、bare metal profile、Lチカ” の続きを読む

ぐだぐだ低レベルプログラミング(47) RISC-V、K210、浮動小数点除算サイクル数

RISC-V fdiv CycDUMP
Joseph Halfmoon

今回から再びRISC-Vの実機(K210)を使って、浮動小数点命令を動かしていきたいと思います。今回は第44回でやったサイクル数の計測を浮動小数点の割り算命令に適用。流石に割り算命令には時間かかっているっしょ、みたいなところを眺めてみたいです。でもま、たまたまK210の実装で、この命令列ならこの程度くらいな数字かと。

“ぐだぐだ低レベルプログラミング(47) RISC-V、K210、浮動小数点除算サイクル数” の続きを読む

手習ひデジタル信号処理(19) 母音音声合成器その4、STM32F446上実装を「見る」

aiueo_spc4
Joseph Halfmoon

前回まで3回にわたって母音音声合成器の「部品」3つの特性をScilabに計算してもらって眺めてきました。ようやく今回はSTM32F446上で動作確認であります。といっても三上先生のサンプルプログラムそのままなので動かない分けがないです。今回は「発声」された信号をよく「見て」みようの回。

“手習ひデジタル信号処理(19) 母音音声合成器その4、STM32F446上実装を「見る」” の続きを読む

MicroPython的午睡(59) ESP32、WebREPL、動作はするけれども

WebREPLprompt
Joseph Halfmoon

再びM5ATOM Lite上のESP32 genericポートのMicroPythonに戻ってまいりました。今回はESP32系ならでは?のWebREPLを使用してみたいと思います。Network接続されているMicroPythonデバイスのREPLにホストのブラウザから接続する機能であります。確かに使えるのだけれどクセが強い。

“MicroPython的午睡(59) ESP32、WebREPL、動作はするけれども” の続きを読む

ぐだぐだ低レベルプログラミング(46) RISC-V、浮動小数点の丸めと例外、その2

NaN
Joseph Halfmoon

前回は柄にもなく浮動小数点の丸めを説明したところで力尽きてしまいました。今回は前回の残り、浮動小数点の例外についてです。こういうメンドイものがあるので浮動小数点演算は後回しにしたくなるのですが、実際に浮動小数点演算命令を動かすにあたっては避けていられません。それにしても面倒くさいよ。

“ぐだぐだ低レベルプログラミング(46) RISC-V、浮動小数点の丸めと例外、その2” の続きを読む

Pico三昧(6) Pico C/C++SDKでS93C46接続その2、PIO制御

Joseph Halfmoon

前回は3線式シリアルE2PROM S93C46をソフトウエア制御で読み書きしてみました。今回は、ラズパイPicoの特長であるPIO(Programmable IO)を使って同じことを行ってみます。PIOステートマシンのアセンブラを書くのも大分慣れた気もしますが、最後は波形を見ないと安心できないんだ,、これが。

“Pico三昧(6) Pico C/C++SDKでS93C46接続その2、PIO制御” の続きを読む

L.W.R.(40) 古文書編#11、マイクロコンピュータの誕生、嶋正利著、岩波1987

4004
Joseph Halfmoon

今回の御本は30年以上も前に岩波書店から出ていた本です。前回の御本の未だに派生の新刊書が出る息の長さとは異なりますが、驚いたのはAmazonで古書として購入する場合の価格です。当時の定価1700円の5倍以上の価格で売られていました。人気高いのね。「マイクロコンピュータの誕生」、サブタイトル「わが青春の4004」。

“L.W.R.(40) 古文書編#11、マイクロコンピュータの誕生、嶋正利著、岩波1987” の続きを読む