表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
37/61

閑話 PicoSDKで使ったリソースの後始末

PicoCalc-micropython-driver のバグ対策です

micropython のソフトリセットでは、.dataや.bssの値が保存されてて初期化が中途半端というのは理解していたつもり。ハードウェアの設定もそのままなのも理解していたつもり。

でも理解したつもりなだけだった。


micropythonの管轄外で設定したハードウェアどころか、システムコールも後始末しないとダメなんだね。当たり前っちゃ当たり前。


今回わかった問題は2点。

1.vtterminal.c で設定したカーソル表示用インターバルタイマーが生きてるので、ソフトリセットを繰り返すとカーソル表示が怪しくなる。

2.picodisplay.c でLCD転送用のDMAチャネルを取得し続けるので、ソフトリセット回数がDMAチャネルの最大数(Pico2の場合は16)を超えるとハングアップする。


1の対策

インターバルタイマのコールバック関数内で大域変数をチェックして、特定の数値の場合にインターバルタイマを停止する。(コールバック関数の戻り値を false にする)

大域変数は初期化時にセットして、しばらく待つことにした。


2の対策

取得したDMAチャネルを大域変数(初期値 -1 )に保存する。初期化時に大域変数が -1 以外ならDMAチャネル取得済みなので、一旦解放してから取得する。


本日のバグレポートは以上となります。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ