Linuxを載せないPCを作りたい。
いままで作ったサイバーデック的なものとしては、
があったが、どれも消費電力が大きい傾向にあった。
そもそも、やりたい事に対してLinuxが乗ったデバイスを使うのはオーバーキルな感じがある。 また、既存のLinuxをそのまま使っても、あまりCyberdeck感が少ないのではないかと考えている。
そこで、ベアメタルで必要な機能を直接作ろうという事にした。 手始めにRaspberryPi PicoとMicroPythonを使って必要な機能が実現できるか試すプラットフォームを作る事にした。
マイコン
RaspberryPi Picoを使ってる。
これで使われているRP2040は、 メモリが264KBあり、 CPUクロックが133MHzある。 これは初代PCよりだいぶ早いはずだから、 PCを作るには十分なのではないかと考えた。
画面
ILI9488というSPI接続のディスプレイを使っている。 4インチで480x320の解像度があるので、 テキスト端末には十分だろう。 むしろ、文字が小さすぎるので倍角表示してもいいかもしれない。
キーボード
GPIOにスイッチをつないで自前でスキャンしてる。 12x4の48キーにしている。 GPIOをケチるために倍マトリクスを使ってる、 二乗マトリクスを使ってもよかったかもしれない。
親指で操作する事もあるだろうから、レイヤが多すぎないようにキーの数を多めにした。
試しにTUTコードでの漢字入力もつけてみたが、 MicroPythonのinput文などが日本語を受け付けてくれないようだ。残念。
電源
PicoのUSBに電源をつなぐと動作するようになっている。
また、BL-5Cバッテリーを繋ぐ事もできるようにした。
全体でxxmAの消費電流になっている。 xxmAのBL-5Cでxx時間使える計算だ。
SDカード
使ってる画面基板はSDカードスロットもついていた。 これを使って、SDカードの読み書きもできる。
カートリッジスロット
拡張カードリッジが差せるスロットもつけた。 とりあえず、電源とi2cを出している。
例えば、次にRTCや通信機能が欲しいが、 ここに差せると思う。
MicroPython
とりあえず、遅くてもいいから動くファームウエアをでっちあげるのに、 MicroPythonはとてもよかった。 エディタのマクロで書き込みから起動まででき、 PCからデバッグ出力が見える。
今後PicoSDKに移行してもこれができるといいのだが。
ファームウエア
今のところ、
- ILI9488のドライバ
- フォントを使っての文字描画
- ターミナルエミュレータ
- キーボードのスキャン
- ひらがなと漢字の入力
ができている。
また、PyDOSというパッケージを使う事で、 DOSライクなツールを動作させる事ができている。
今後やりたい事
- MicroPythonの範囲内での高速化
- 自作言語への移行
- RTCを使ってみる
- 日本語が通るエディタを作る
- Wikipediaのデータのビュワーを作る