続き。
■仮想メモリ割り当て
設計したメモリマップにしたがって固定のページテーブルを作成する
■割り込み初期化手順
(1)CPUのIRQ割り込みハンドラを登録
(2)CPUの割り込み有効化
asm ("cpsie i"); でIRQ有効化
(3)UARTにクロック供給
(4)UARTのIRQハンドラを登録
(5)UARTのIRQ出力有効化
受信割り込みのみ有効化する。
OMAP3530仕様書の2693ページ 17.6.1 UART/IrDA/CIRレジスタ IER_REGを参照
IER_REGに1(RHR_ITビット)を書き込み
■割り込みハンドラ
IRQハンドラだけ作成
IRQ以外の割り込みは使用しないのでnop
ハンドラではレジスタをスタックに保存してIRQ処理に飛ぶ
.extern interruptHandler
.global interruptVector
_irq_entry:
stmfd sp!, {r0 - r12, lr};
mov r0, #6;
bl interruptHandler;
ldmfd sp!, {r0 - r12, lr};
subs pc, lr, #4;
interruptVector:
nop; // Reset
nop; // Invalid code
nop; // Software Service.
nop; // Prefetch Abort
nop; // Data Abort
nop;
ldr pc, =_irq_entry;
nop; // Fast IRQ
■UART割り込みハンドラ
UARTドライバの割り込みハンドラでは割り込み時にRHRから1文字読み取ってバッファに記録
■サンプル
ソースコード