もどる 最近のLinux(HIGHMEMを使うようなやつ?)では、phys_to_virtで変換したアドレスを直接アクセスすると怒られるので、きっちりioremapする必要があるっぽい。 以下は126MBから1MBマッピングする場合。 #define ADDRESS (126*0x1000000) #define MAPSIZE (0x1000000) char *ptr; ptr = ioremap(ADDRESS, MAPSIZE) 以下は古い情報で、使えない場合があります。 DMA使用時などプログラムからデバイスにメモリアドレスを渡すときには仮想アドレスから物理アドレスに変換する必要がある。また、プログラム内でメモリアドレスを直接指定する場合物理アドレスを仮想アドレスに変換しなければならない。 これらの関数又はマクロは引数のaddressを仮想もしくは物理アドレスに変換して値を返す。