I/Oリソースマネージャ

SOLID-OSはリソースマネージャにIOを登録することにより、自動的に論理アドレスを割り付けます。

割り付けられた論理アドレスは、キャッシュなし、バッファありの属性となっているため、IOに書き込み 処理をした後、その結果を確実に反映させるためには、DMB命令を使用する必要があります。

IOリソースの登録は、通常は 要実装関数 IMPL_IORES_GetConfig() を使って行います。

SOLID_IORES_REGINFO

typedef struct _SOLID_IORES_REGINFO_ SOLID_IORES_REGINFO

説明

IOリソース登録用構造体

定義

typedef struct _SOLID_IORES_REGINFO_ {
    const char* pName;
    SOLID_PHYADDRESS addr;
    size_t width;
    int extra;
} SOLID_IORES_REGINFO;

メンバー

pName
IO名称
addr
IOのある物理アドレス
width
IOのある範囲
extra
intNo, bitNo等を格納

SOLID_IORES_INFO

typedef struct _SOLID_IORES_INFO_ SOLID_IORES_INFO

説明

IOリソース情報取得用構造体

定義

typedef struct _SOLID_IORES_INFO_ {
    SOLID_ADDRESS addr;
    size_t width;
    int extra;
} SOLID_IORES_INFO;

メンバー

addr
IOを割り当てた論理アドレス
width
IOのある範囲
extra
intNo, bitNo等を格納

SOLID_IORES_Register

int SOLID_IORES_Register(SOLID_IORES_REGINFO *pInfo)

IOリソース管理にIO情報を登録します

パラメータ:pInfo – 登録するIO情報 (この情報は、関数呼び出し後も保持したままとしてください)
戻り値:

SOLID_IORES_CheckInfo

SOLID_IORES_REGINFO *SOLID_IORES_CheckInfo(const char *pName)

IOリソース管理に登録されているIO情報を取得します

パラメータ:pName – 取得するIOリソース情報の名前(文字列,NUL終端)
戻り値:
  • NULL以外: IO情報へのポインタ
  • NULL: 該当する情報なし

SOLID_IORES_Use

int SOLID_IORES_Use(const char *pName)

IOリソースの使用開始を宣言します

これにより、IOが論理アドレスにマップされます

パラメータ:pName – 使用を開始するIOリソース情報の名前(文字列,NUL終端)
戻り値:

SOLID_IORES_Unuse

int SOLID_IORES_Unuse(const char *pName)

IOリソースの使用終了を宣言します

これにより、IOが論理アドレスからアンマップされます

パラメータ:pName – 使用を終了するIOリソース情報の名前(文字列,NUL終端)
戻り値:

SOLID_IORES_GetInfo

int SOLID_IORES_GetInfo(const char *pName, SOLID_IORES_INFO *pInfo)

IOリソースの割り当て状況を確認します

パラメータ:
  • pName – IOリソース情報の名前(文字列,NUL終端)
  • pInfo – 取得したIO情報
戻り値:

IMPL_IORES_GetConfig

void IMPL_IORES_GetConfig(SOLID_IORES_REGINFO **ppInfo, int *pNum)

SOLIDで使用するデバイスの物理アドレス等を取得する

この関数で取得されたデバイスは、SOLIDで自動的に論理アドレスを割り付けます

パラメータ:
  • ppInfo – デバイス設定
  • pNum – デバイス設定の個数

IMPL_SYSTEM_IO_Initialize

int IMPL_SYSTEM_IO_Initialize(void)

##desc

戻り値:##desc

予約されたI/Oリソース名

一部のI/Oリソース名は、コアサービス内で予約されており、コアサービス内で使用します。 予約されたリソース名は、solid_iores.h にマクロが定義されています。

SOLID_IORES_NAME_GICD
SOLID_IORES_NAME_GICC
SOLID_IORES_NAME_PL310

定数

名前 説明 extraの意味
SOLID_IORES_NAME_GICD 「ARM_GICD」 ARM GIC (PL390,GIC400) Distributor 使用可能な割り込み番号の最大値(32~1023)
SOLID_IORES_NAME_GICC 「ARM_GICC」 ARM GIC (PL390,GIC400) CPU Interface 割り込み優先度のレベル(2~256)
SOLID_IORES_NAME_PL310 「ARM_PL310」 ARM Level 2 Cache Controller (PL310, L2C-310) なし