サイバーディフェンス研究所 アドベントカレンダー 2022 の 15 日目(11 記事目)です。
はじめに
技術統括部の中尾です。ハードウェアやら無線でごにょごにょしてます。
さて、Covid-19やら戦争やらで半導体のサプライチェーンが崩壊し、マイコンが少ロットでは入手困難になって幾星霜、弊社も検証、開発用の半導体が入手できない状態が続いております。 こんな折、トレーニングにマイコンボードが必要だったのですが、市販のCPUボードがことごとく入手できず頭を抱えておりました。
無慈悲にも時は過ぎ...いよいよ時間がなくなり、ええい作ってしまえということで、作ってみました。
ざっくり仕様
当初は、あるトレーニングにだけ使えればいいやと思って作り始めたのですが、考え始めるといろいろ欲が出て「トレーニングや検証内容に合わせて、機能拡張が容易である」マイコンボードを作りたくなってしまいました。そこで外部拡張基板に機能を実装し、マイコンボードは純粋にコントローラーとして使用することにしました。 また、外部基板はArduinoのようにスタックできるようにしました。 そこで、外部基盤とのI/Oは、UART、SPI、I2Cを一つ以上、GPIOを8本以上でこの他にデバッグポートを出し、電源はUSBから取ることを決めました。
マイコンは入手できるものから選びました。幸いPIC32MX2XXシリーズが入手できたので、これに合わせて設計を始めました。PIC32はMIPS M4K 32ビットコアのマイコンで、ペリフェラルも今回の仕様に十分でしたし、PPS(Peripheral Pin Select)というペリフェラルのピンアサインを変更できる機能があるので、外部回路による機能拡張に柔軟に対応できるのではと考えました。
設計
回路設計は、リファレンスマニュアルの最小構成1 をベースに(というか、ほぼそのまま)行いました。 オープンソースPCBデザインソフトであるkicad2 でさくっと回路図を引いたあと、PCBをデザインしました。
基板はクレジットカードサイズで、I/OはUART、SPI、I2Cを各一つと、GPIOを11本出すことができました。また、ステータス表示用に赤と緑のLEDを追加しました。
ファームウェアの開発、書き込み、デバッグはMicrochip社のMPLAB IDEとPickit4 で行うこととしました。今後、OpenOCD経由でもできるようにと期待を込めてJTAGのピンも出しています。
できあがり
基板の製造は外注しました。手ハンダが可能な1608やQFPパッケージの部品を採用しましたので、実装は社内で行いました。
まとめ
マイコンボード (にゅーくれおとかにゅーくれおとかにゅーくれお) が手に入らなくなったので、さくっと作ってみました。今回作成した設計データは、オープンソースハードウェアとして公開したいと考えています。
明日はm-ishizukaさんの、「TPM2でLinux Desktopのハードニング」の予定です。