ソフト・マクロのCPUでLinuxを動かす(後編) ──OSの実装とネットワーク対応機器への応用
3.ネットワーク対応機器への応用
ソフト・プロセッサとLinuxの特徴を生かして,ネットワーク対応のLCD表示装置を製作しました.
市販のLCDモジュールは,製品ごとに信号の接続方法やアクセス・タイミングが異なります.このため通常のボード・コンピュータにLCDモジュールを接続する場合は,LCDコントローラが必要になります.FPGAを使用して設計することもあります.
FPGAベースのボード・コンピュータであれば,FPGAの内部にプロセッサとLCD制御の回路を実装できるため,外付け回路を最小限にすることができます.
● 設計仕様の概要
今回製作するシステムの全体ブロックを図3に示します. フレーム・バッファは,Linuxのメイン・メモリとして使用しているSDRAMと共用します.フレーム・バッファからLCDへのデータ転送にはバス・マスタ機能を使用することにしました(図4).この構成の場合,専用のフレーム・バッファ用メモリ・デバイスが必要なくなるため,機器の小型化や低コスト化に効果的です.
注意しなければならないのは,描画性能とSDRAMのバンド幅の関係です.フレーム・バッファのアクセスに多くの時間を費やし,プログラム/データ・メモリとして使用する時間と比べて大きくなりすぎると,システムとしての性能が落ちてしまいます.
今回は,LCDに10フレーム/sを描画するように設計しました.このフレーム速度であれば,SDRAMバンド幅の10%~20%を使用するだけで描画可能です.
図3 全体ブロック
バス・マスタ機能により,SDRAM上のフレーム・バッファからデータを読み出し,LCDモジュールに対して制御信号と描画データを出力する.ソフトウェアはオープン・ソースのnc(ネット・キャリア)を使用して,SDRAMにデータを書き込む.
図4 バス・マスタ使用時のRGBデータの流れ
フレーム・バッファは,Linuxのメイン・メモリとして使用しているSDRAMと共用にする.フレーム・バッファからLCDへのデータ転送にはバス・マスタ機能を使用する.