昨日kozosさん主催の「12ステップ組み込みOS自作本もくもく会」に参加しました。

もくもく会参加は始めてでしたが集中できて良いですね。12ステップ本の勉強は3ヶ月も滞っていたので再開の良いきっかけとなりました。

始めたばかりの方から既に終了して独自の拡張をしている方まで幅広く、どのような段階でも参加できるのが嬉しいです。自分は調度半分終わった段階でこれからが難しくなりそうです。

終了後の飲み会でも色々な話を聞くことができました。多種多様な組み込みソフトに関わっている方が参加していることが分かりました。

また開催されたら参加したいと思います。
有意義な会を開催していただきありがとうございました。

このテーマは3ヶ月ぶりです。時間がたつのは早い。。

7.1は、割り込み処理とはどのようなことをするのかの読み物です。知っていることが多かったですが、周辺機能のレジスタを直に制御するだけではなく、割り込みコントローラが間に入ることで統一感のある制御ができるという解説はなるほどと思いました。

7.2もまだ読み物だけで実作業は7.3からです。実作業を始める前に6章でやったことを見直してリハビリしないと頭からすっかり抜け落ちている感じがします。連休を活かして復活させなきゃ。

割り込み機能をVerilogで実装するところまできました。

ここは本の作りとして飛躍があります。掲載されているVerilogコードではここまで一貫していた1つの命令がクロック1サイクルで完了するのではなく、フェッチ、デコード、実行等のstateに分かれているという前提の記述になっています。以前の本ではもっと複雑なCPUの例を解説していたが難しいとの声があったので簡単なPOCOに変更したとのことだったので恐らくそちらはstateが分かれており、その記述が残ってしまったのかもしれません。もしくは次章のパイプライン処理の機能を追加した後ならよいかもしれませんが。

今までも少々記述が飛んでいると思う箇所がありましたが、それを考えること自体が理解を深める役に立ったのでまあ良いかと思っていましたが、命令が1サイクルで完了するか複数サイクルに分かれるかは大きな差なので突然こういう話が出てくるのはまずいと思います。

とりあえず複数サイクルに別れていたということにして演習問題は考えましたが、シミュレーションはできていません。

この件に関連しますが、複数サイクルにしないと割り込みイネーブル信号の制御がうまくいかない(EINT命令が連続で書かれた場合)ような気もしますが追求できていません。

一旦この本で勉強しようと考えていた範囲は終了しました。引き続きWebで見つけた複数サイクル版POCOを読んで見ようと思います。