HPSMPHx( Host Port Semaphore )は外部ホストプロセッサと内部DSPコアの間で資源を排他利用するためのハードウェア・セマフォです。内部DMAコントローラやメモリーは両者からアクセスされる可能性があるため、きちんと排他利用しなければなりません。
ADSP-2191はセマフォを2つ持っているため、HPSMPH0とHPSMPH1が用意されています。
このレジスタは16ビット整数レジスタです。初期値は0x0000です。
このレジスタは次のような動作をします。
これによって外部プロセッサと内部DSPコアはセマフォを使った資源保護が可能になります。保護は次のように行います。
外部ホストも、内部DSPも同じ手順を踏むことによって、資源を保護することができます。
C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。HPSMPHxにアクセスする前には必ずIOPGにExternal_Memory_Interface_Pageを設定してください。
HPSMPH0にアクセスする場合は次のように成ります。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, Host_Port_Bus_Interface_Page) // HPIページに設定 io_space_write(HPSMPH0, 値) // HPSMPH0に値を設定 変数 = io_space_read(HPSMPH0) // HPSMPH0の値を取得
HPSMPH1にアクセスする場合は次のように成ります。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, Host_Port_Bus_Interface_Page) // HPIページに設定 io_space_write(HPSMPH1, 値) // HPSMPH1に値を設定 変数 = io_space_read(HPSMPH1) // HPSMPH1の値を取得
項目 | マニュアルのページ等 |
---|---|
説明 | HR 8-34 |