OSラッパーモジュール
本モジュールは下記ライブラリから呼び出されるOSのサービスコールを抽象化します。
これらのライブラリを使用する場合は本モジュールのポーティングが必要になります。
ポーティング
本モジュールは、以下の機能を提供します。
<実装仕様>
OSWで定義されている関数の仕様はμITRON 4.0仕様で解説されているサービスコールに基づいています。
次の仕様はOSWの実装に利用するOSの仕様に準じます。これらの仕様に依存した実装は行わないで下さい。
1つの割込みに対して複数のサービスルーチンを登録可能です。割込みサービスルーチン生成数の上限はOSに対するコンフィグレーションで決定されます。
複数回 AG903_OSWprDisInt をコールした場合、割込みを許可する為には同数回の AG903_OSWprEnaInt コールが必要です。
<動作概要>
割込み優先度は AG903_OSWprIniInt で AG903_OSW_DEFAULT_INTRPRI に設定されます。
優先度を変更する場合はサービスルーチンを登録する前に AG903_OSWprSetIpri で設定します。設定した優先度が反映されるタイミングはサービスルーチン登録後割込みを許可したタイミングになります。
OSから返された最後(最新)のエラーコードをstaticグローバル変数 OswLastErr に保持します。
* 本モジュールはライブラリをポーティングするためのものであり、ユーザーアプリケーションからは直接実行しないでください。
割り込み制御のシーケンスは INT を参照してください。
VRAM管理のシーケンスは VRAM を参照してください。
<OSがuC3の場合のMMU設定>
uC3ではMMUの初期化関数「_ddr_cortexa_mmu_init」が用意されています。
本モジュールのAG903_OSWprInitMemory関数を使用する前に_ddr_cortexa_mmu_init関数でMMUの初期化を行って下さい。この時必ず仮想アドレス=物理アドレスとして下さい。
_ddr_cortexa_mmu_init関数の第二引数で与える変換テーブル「mmu_cfgtbl」の一例を次に記載します。
mmu_cfgtbl:
; DCD SIZE, PADDR, VADDR, AP, ATR
DCD 0x14000000, 0x2C000000, 0x2C000000, AP_RW, ATR_STRG | ATR_NEXC ; Cortex-A5 peripherals
DCD 0x04000000, 0x60000000, 0x60000000, AP_RW, ATR_NONC | ATR_NEXC ; EQS
DCD 0x00200000, 0x80000000, 0x80000000, AP_RW, ATR_WBAW ; Program code
DCD 0x00100000, SFB(TLB_RAMSEC), SFB(TLB_RAMSEC), AP_RW, ATR_WBAW | ATR_NEXC ; TTB (1MB)
DCD 0x00200000, 0x80300000, 0x80300000, AP_RW, ATR_WBAW | ATR_NEXC ; Program data
DCD 0x03A00000, 0x80500000, 0x80500000, AP_RW, ATR_NONC | ATR_NEXC ; VRAMManager Management Area
DCD 0x00100000, 0x83F00000, 0x83F00000, AP_RW, ATR_NONC | ATR_NEXC ; firmware ram for GVD
DCD 0x1E000000, 0xE0000000, 0xE0000000, AP_RW, ATR_STRG | ATR_NEXC ; AG903 peripherals
DCD 0x00008000, 0xFE000000, 0xFE000000, AP_RW, ATR_NONC | ATR_NEXC ; workram
DCD 0x00200000, 0xFFE00000, 0xFFE00000, AP_RO, ATR_SDEV | ATR_NEXC ; BootROM(high)
DCD 0x00000000, 0x00000000, 0x00000000, 0, 0
上記の例ではアドレス0x80500000からサイズ0x03A00000[Byte]分をVRAM領域としていますので、AG903_OSWprInitMemory に与える引数は次の通りになります。
AG903_OSWprInitMemory(0x80500000, 0x03A00000);
※ApplicationはVRAMManagerを使用するので AG903_VRAMMgrInit(0x80500000, 0x03A00000); になります。
名前 |
説明 |
| |
μC3向けOSラッパー |