reports/Report001.md

3.5 KiB
Raw Permalink Blame History

電子辞書Brainにおける無分解でのU-Boot起動に関するレポート

2020年10月13日 電子計算機総合研究所 技術長

この案件は電子計算機総合研究所とは関係ない物であるが、レポートという体裁で書き留めておくために電子計算機総合研究所からのレポートとして掲載する

経緯

電子辞書BrainはWindowsCEとARM CPUを搭載している関係上、古くから様々な活用・改造が行われてきた。しかしBrainに搭載されているWindowsCEは機能がある程度制限されており限界があった。
BrainにおいてLinuxを起動する、というアイディアに関してはかなり昔からあったものの実際に成功したという情報は存在しなかった。
2020年2月3月にかけてnexhawks氏によるResetKitをベースにLinuxやU-Bootをメモリ上にロードしてそこにジャンプするプログラムを書いたが、LinuxやU-Bootは標準でBrainのような組み込み向け機器のディスプレイ出力に対応していないことがあり実際に動作しているかは不明であった。
また、DiagApp.exeの調査中にコンフィグを書き換えWindowsCEが起動不可になり、その後メイン基板を触りながらUSBブートでのWindowsCEの復旧を模索している中でディスプレイが映らなくなり、その後ほとんどのBrainに関する研究は不可能となった。
しかし、2019年8月12日puhitaku氏がBrainのシリアルを引き出し、USBブートからのU-Bootの起動に成功。2020年3月30日にはmicroSDからLinuxをロードし起動させることに成功。最終的にディスプレイにGUIを表示させることにも成功した。puhitaku氏の作業に関する詳しいことは 電子辞書は組み込みLinuxの夢を見るかを参照していただきたい。
ただこの時点ではBrainのカバーを外し、基板上のジャンパをショートさせてUSBブートモードに移行させる必要があり、Linuxを起動しようとするたびにこの作業を行うのは煩雑である。そこで、何らかの方法で無分解でのU-Bootの起動を目標とし協力して開発する運びとなった。

試行錯誤

まずは過去に作成していたResetKitをベースとしたローダーを試すこととしたが、様々に実装を変えてもU-Bootをメモリにロードするところでハングアップしたりリセットがかかったりしているようであった。
なぜロードしようとすると固まるのか不明で行き詰っていた時、puhitaku氏がx86アーキテクチャ上のWindowsCEのブートローダからBSDカーネルを起動させるようにnk.binを生成する"bsd-ce"というプログラムを発見した。このプログラムをもとに、U-BootをWindows CEのブートローダーが読み込めるようにパックしU-Bootを起動させることに成功した。

展望

Linuxが起動できるようになったことにより、CPUとメモリの許す限り多くのことが可能になるはずである。しかしまだいくらかのハードウェアに関しては動作していないようなので、これからも研究を続けていくことになると思われる。