close
實體記憶體映射技術: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快樂的存取
要在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快樂的存取
全站熱搜
留言列表