■実装方針
1、メモリマップ
物理メモリのアドレス=仮想アドレスを基本とする。
BeagleBoardは物理メモリが0x8000 0000~0x8FFF FFFF の256Mbyte
割り込みベクタは上位ベクタ0xFFFF 0000が使えるように割り当てる。
ハードウェアレジスタは256M分のメモリの上位、すなわち0x90000000~に割り当て
コードとデータはオフセット0x400000~に配置。その下をスタックとする
ハードウェアレジスタは256M分のメモリの上位、すなわち0x90000000~に割り当て
コードとデータはオフセット0x400000~に配置。その下をスタックとする
以上の方針によりメモリマップは以下のように設定
2、割り込み駆動
UARTへの入力はポーリングによってバッファの状態を確認するのではなく、割り込みで入力を検知する。
BeagleBoardの端子はUART3に接続なのでIRQ74に対応するハンドラを登録する。
OMAP35x Technical Reference Manual 10.3.2 Interrupt Request Linesを参照
■メイン処理
(1)UART入力バッファが空か確認
(2)読み込み可能フラグが立つまで無限ループ
→IRQ74が発生したらフラグを立てる
(3)バッファから1文字読み込み
(4)読み込んだ文字をUART出力
(5)(1)に戻る