この記事はSSSRC Advent calender 2021 1日目の記事として書かれています。
こんにちは、このアドカレの首謀者です。(↑この文言書いてみたかった〜〜!!!)
唐突に「アドカレやりたくね?」と声をかけたら2日で人が集まって本当にやることになりました。
特にテーマを縛ったりもしていないですし、なによりこれだけ更新されるのは昨今のSSSRCブログでは大変珍しいので向こう一ヶ月はメンバーの個性をお楽しみください。
さて本題ですが、タイトル通り、私は普段通信系として活動していますが最近はC&DHに力を注いでいます。
数年前から低レイヤ方面に関心を寄せており、少しやってみたかったんですよね、C&DH。OPUSAT-IIはOPUSATの設計を引き継いだOPUSAT-KITバスを使用しており、BOBC周りを(あまり)いじることなく、時折軽微な(?)変更を先輩が加えるだけで済んでいて1からつくる機会はありませんでした。そこで、IIの開発も終わって良い機会なのでOBC周りの設計を主導して置土産として残そうというわけです。ノウハウを持っているわけでは無いので道楽と大差ないですが、元々学生団体においてノウハウの塊は一番はじめに出ていってしまうので仕方ありません。学年がFIFOなのが悪い(???????)。毎度のごとく、機運が高まったってやつです。
IIIのBBMに入る前にプロトタイプをつくってレビューまでしたいと考えていて、設計するにあたりテーマも持っています。「高性能なOBCを1台追加すること」です。SSSRCの衛星を2代に渡って支えてくれているロバストなバスですが、今のBOBCでは性能が不足する部分もあり、「これまでのロバストな設計は残しつつ、なんとか高性能なOBCをメインOBCとして載せられはしないものか」というのが最近のもっぱらの興味です。今動いているOBCとその内部プログラムの一部は再利用したいのですが、その際のアーキテクチャのシンプルさの追求と信頼性の担保はやはり難しいところです。C&DHにとって最も肝要な部分の設計になるので、この「メインOBCの信頼性をシンプルな形で保証する機構」はこだわってなんとか作り込みたいものです。好き勝手実装できるのもIIIが本格的に始動していない今のうちなので、早めに作って2サイクル目を回すことが期限的な目標です。
IIでC&DH系としての活動はほとんどなかったので今のC&DHは駆け出しチームです。今はOBC周辺のアーキテクチャや疑似OSとでも呼ぶようなソフトウェアの仕様検討会を開きつつ、プログラムについての仕様が出たら私がサッと書いて簡易なドキュメント共に共有してメンバーの不明点を拾うことで教育としています(自分で書いといてなんですが、控えめに言って酷い教育ですねクォレは...)。今の仕様ではシングルタスクで、モードの概念が一応あり、他系のデバイスドライバを抽象化するためのインターフェースは持っているというだけの至極単純なソフトウェアです。優先度の概念も実装されていません。他系から要求がなければこうなるかなとも思いますが、とはいえC&DH内での設計でもまだまだ作り込める部分があります。仕様検討を重ねて改良するうちにμITRON仕様くらいのものをガシャガシャやっていきたいです。現状、仮に置いてある雑実装タスクはほぼ「何もしないやつ」ですし、これでスケジューリング規則の評価をやってええんかいという問題もあります。今のスケジューリング規則でも問題ないなら問題ないですが(トートロジー)、他系のタスクから時間に対する要求が出れば話は別なので、プロトタイプしたがっている他系を巻き込みたいところです。
では便利な本紹介コーナーをやって終わりにします。最近円城塔の「これはペンです」を読もうとしています。金曜ロードショーで小さい女の子がお人形遊びをするワンカットで号泣する怪物になれるアニメを見たばかりだったからか、あらすじでなんとなくビビッと来て買いました。それでは。
PS
革新2号が打ち上がりましたね。私はSPRESENSEの実証が非常に気になっているところで、C&DHの設計とは別でSPRESENSEで遊んでいます。これの何が嬉しいかは過去にも書かれていますが、実証されたら次機OBC候補ですね。せっかくだしマルチコア使いたいなとか、NuttXがPOSIXインターフェースを持っているので色々遺産が移植できるか試してみたいなとかいう思いはあります。NuttXにアプリを追加しようと思ったら結構手間なのがspresenseの環境を用いると楽にできますし、他にも便利ツールが用意されていて嬉しい。チュートリアルでチマチマ遊びながらありがてぇ〜って言うところまではいったんですが色々極まってきました。遊んだレポも書くつもりでいたんですが...