TOPPERSプロジェクト 設計メモ Dual-Timer Module(SP804)に関するメモ 作成者: 高田広章(名古屋大学) 最終更新: 2015年8月9日 ○メモの位置づけ このメモは,ARM Dual-Timer Module(SP804)に関して,TOPPERSカーネルをポー ティングするにあたって必要となる事項をまとめたものである. ○目次 ・参考文献 ・概要 ・動作モード ・プログラミングモデル ○参考文献 [1] ARM Dual-Timer Module (SP804) Technical Reference Manual, 2004 Revision: r1p0 DDI0271.pdf ○概要([1] 第1章) ・AMBAのAPBに接続されるスレーブモジュール ・2つのプログラマブル32/16ビットダウンカウンタ - フリーラン,周期,ワンショットモード ・2つのカウンタで共通のクロック.クロックイネーブル信号を個別に持つ ・0に到達すると割込みをかけることができる ○動作モード([2] 2.1節,2.2.6節) ・フリーランニング - 0に向けてダウンカウントし,0に到達したら最大値に戻る - 制御レジスタのタイマモードを1,ワンショットを0に設定 ★注意:第3章の記述と一致しておらず,間違いと思われる ・周期 - 0に向けてダウンカウントし,0に到達したらリロード値に戻る - 制御レジスタのタイマモードを0,ワンショットを0に設定 ★注意:第3章の記述と一致しておらず,間違いと思われる ・ワンショット - 0に向けてダウンカウントし,0に到達したら止まる - 制御レジスタのワンショットを1に設定 ○プログラミングモデル(Programmers' Model)([1] 第3章) ※凡例: レジスタ名(レジスタ略称)オフセット,ビット幅 タイマ1ロードレジスタ(Timer1Load,LR)0x00,32(RW) - 周期モードで,カウントレジスタが0になった時に,カウンタにリロー ドする値を保持するレジスタ. - このレジスタに書き込むと,カウントレジスタにも書き込まれる. - 最小値は1,0を書き込むと即座に割込みが発生する - バックグランドロードレジスタへの書き込みによっても,上書きされる + この場合,現在のカウント値は変わらない タイマ1現在値レジスタ(Timer1Value,CVR)0x04,32(RO) - ダウンカウンタを保持するリードオンリーのレジスタ. タイマ1制御レジスタ(Timer1Control,CR)0x08,8ビット(RW) [31:8] 予約 [7] タイマイネーブル [6] タイマモード(0:フリーラン,1:周期) [5] 割込みイネーブル [4] 予約 [3:2] プリスケーラ(00:1分割,01:16分割,10:256分割) [1] タイマサイズ(0:16ビット,1:32ビット) [0] ワンショット(0:ラッピングモード,1:ワンショットモード) - タイマのコンフィギュレーションを変更する時は,一度,タイマを止め なければならない. タイマ1割込みクリア(Timer1IntClr,ICR)0x0c,-(WO) - 書込みにより割込み要求がクリアされる タイマ1元割込み状態(Timer1RIS,RIS)0x10,1ビット(RO) [31:1] 予約 [0] 生の割込み状態 タイマ1マスク割込み状態(Timer1MIS,MIS)0x14,1ビット(RO) [31:1] 予約 [0] 許可された割込み状態 生の割込み状態と,割込みイネーブルのAND タイマ1バックグラウンドロードレジスタ(Timer1BGLoad,BGLR)0x18,32ビット(RW) - カウンタにリロードする値にアクセスする. - ロードレジスタとの違いは,現在のカウント値がすぐには変わらないこと. - 次のリロードのタイミングで有効になる. タイマ2に対しても同じレジスタがある 統合テスト制御レジスタ(TimerITCR)0xf00,1ビット(RW) 統合テスト出力セットレジスタ(TimerITOR)0xf04,2ビット(WO) ●ペリフェラルの種類を識別するためのレジスタ タイマペリフェラルID0レジスタ(TimerPeriphID0)0xfe0, 8/-(RO) タイマペリフェラルID1レジスタ(TimerPeriphID1)0xfe4, 8/-(RO) タイマペリフェラルID2レジスタ(TimerPeriphID2)0xfe8, 8/-(RO) タイマペリフェラルID3レジスタ(TimerPeriphID3)0xfec, 8/-(RO) タイマ PCell ID0レジスタ(TimerPCellID0)0xff0, 8/-(RO) タイマ PCell ID1レジスタ(TimerPCellID1)0xff4, 8/-(RO) タイマ PCell ID2レジスタ(TimerPCellID2)0xff8, 8/-(RO) タイマ PCell ID3レジスタ(TimerPCellID3)0xffc, 8/-(RO) 以上