實體記憶體映射技術:mmap ioremap

要在AP中直接設定裝置或者直接存取實體記憶體位址,
在作業系統的保護下,通常要透過ioctl或read/write方法。

但是對於大量資料進出,比如video或streaming這樣的方法就顯的效能很低,
所以Linux提供了另外一套機制叫做mmap。
透過mmap可以把檔案映射到使用者虛擬位址空間,透過這個指標就可以存取檔案。
那檔案怎麼支援mmap呢?答案是要實做mmap這個方法,把上層的mmap請求,
轉換成實際的動作。

那怎麼利用mmap做實體記憶體的應用呢?
AP要利用/dev/mem這支檔案,它可以映射到實際的記憶體。
DRIVER端則要用ioremap把實體記憶體轉換成核心虛擬位址,之後就讀寫這個記憶體指標。

最後簡單圖解如下:
AP->開啟/dev/mem->mmap到實體記憶體位址->AP快樂的存取
DRIVER->module_init時做ioremap->取得記憶體指標->DRIVER快樂的存取

留言

匿名表示…
請問有範例嗎?
因為最近的作業課題需要用到該理論.
可是網路上找不到類似的範例,請問可以提供我有關的資訊嗎?
謝謝.^^

這個網誌中的熱門文章

RTC & CMOS 技術詳解

[自由網路] 如何取得 Google Drive (真實)外連位址 (Direct Link)