ソフト・マクロのCPUでLinuxを動かす(後編) ──OSの実装とネットワーク対応機器への応用
● コミュニティ参加者からの支援を受ける
Linuxの世界は,コミュニティに参加する人たちが,もっとも強力な支援者となります.コミュニティでは,ソース・コードの開発者が,みずから製作したソース・コードの品質や性能,可読性について細心の注意を払い,そのソース・コードを利用した世界中の人々からの指摘やパッチを責任もって保守していきます.また,メーリング・リストに質問を出せば,それを見た多くの経験を積んだプログラマから適切な回答を得ることができます.
Linuxを移植するにあたっていちばんの近道は,そのコミュニティでもっとも保守されているデバイスや,プラットホームと同じ構成をとることです.しかし,組み込み機器として最適なハードウェア構成を選択しようとすると,機能や価格,入手性の点から既存の仕様とは異なるものになってしまいます.今回の開発においても,Williams氏が使用したプラットホームに似た構成のほうがコミュニティから情報を受けやすいという事情はあったのですが,実際にはまったく違う仕様のボードになりました.
● ハードウェアの違いをいんぺいする
FPGAとソフト・プロセッサでは,さまざまな機能を柔軟にハードウェアとして構築できます.既存のシステムと異なるデバイスを搭載したとしても,ソフトウェアから見たときに同じ仕様となるようにハードウェアを構築することも可能なのです.筆者らによる今回のLinux実装では,この手法による恩恵を最大限に受け,ソース・コードの変更そのものは最小限に抑えるようにしました.
筆者らのボードとWilliams氏のプラットホームには,以下のような違いがありました.
- FPGAデバイス
- SDRAMの容量
- フラッシュ・メモリの容量
- UARTの数 チLANコントローラ
LANコントローラのためのソース・コードをまったく別のものに置き換えた以外は,ほんとうにちょっとした変更を加えてテストしただけで,スムーズに作業を進めることができました.また,この際には,FPGA内部の現象を知るために,デバック用の回路を使い,信号を外部に取り出して解析しながら進めていきました.
具体的な成果については,uCLinuxおよび,ツール・チェーンのコミュニティにフィードバックしていく予定です.