我正在開發飛思卡爾MPC8306上的LED驅動器。在驅動程序代碼中,我在GPIO寄存器上執行ioremap,並在重新映射的GPIO寄存器地址上調用remap_pfn_range,然後在用戶空間中調用mmap以將GPIO寄存器映射到用戶空間。我之前沒有這樣做,我想知道這種方法是否有效。有人能幫助我嗎?提前致謝。硬件寄存器可以映射到用戶空間
0
A
回答
0
一個簡單的方法很可能只是爲了mmap
相關的直接用戶空間的程序偏移的/dev/mem
。這使您可以通過尋求物理內存佈局來訪問它。
AFAIK,這是樹莓派開發商已經做了什麼,使GPIO內存映射I/O寄存器可用的用戶空間程序。
+0
嗨唐格爾,你的建議工程。謝謝你的幫助。 –
+1
除非你確定你是唯一一個進行訪問的東西,否則有些事情在用戶空間中是不安全的。讀取 - 修改 - 寫入寄存器。 (在rPi上更有趣,因爲在切換外設時你應該使用內存屏障,希望內核代碼可以這樣做;其他用戶空間線程可能不那麼寬容。) –
1
您應該使用/dev/mem
接口,用於訪問GPIO寄存器。通過另一個嵌入式主板上的GPIO控制LED的一個很好的參考被給出here。
相關問題
- 1. 訪問Linux用戶空間中的硬件寄存器
- 2. FPGA器件內存映射寄存器
- 3. Python中的內存映射寄存器
- 4. 存儲器映射I/O:控制寄存器中的I/O空間VS內存空間
- 5. 解釋ISL12022的i2c寄存器映射
- 6. Vim - 使用可選的寄存器前綴映射
- 7. 哪些寄存器受到Linux用戶空間的保護?
- 8. 將kmalloc內存映射到用戶空間
- 9. 硬件時間映射restkit中的JSON
- 10. 傳遞硬件寄存器指針
- 11. 映射在啓動時使用remap_pfn_range用戶空間reservever內存
- 12. 從存儲器映射寄存器讀取
- 13. 用戶空間緩衝區和內存映射文件之間的DMA
- 14. 訪問寄存器從用戶空間的物理地址
- 15. 如何在用戶空間中創建分段內存映射?
- 16. 映射保留高內存通過remap_pfn_range用戶空間
- 17. Hadoop術語映射到硬件
- 18. 我可以看到nhibernate自動映射器映射
- 19. 谷歌雲存儲可以映射到Gmail帳戶?
- 20. 我們可以使用的硬盤空間用於JVM內存
- 21. 將3D卷的2D空間映射到1D空間(文件)
- 22. 輪詢用戶空間中設備的控制寄存器以檢查錯誤
- 23. 映射器何時將其輸出存儲到本地硬盤?
- 24. 如何使用C/C++映射Modbus寄存器地址
- 25. 日期時間到可空日期時間轉換器自動映射器
- 26. 使用@XmlJavaTypeAdapter映射映射時的JAXB和空名稱空間
- 27. 是否可以通過內聯彙編訪問硬件寄存器
- 28. 將DMA緩衝區映射到用戶空間
- 29. 將物理設備映射到用戶空間中的指針
- 30. 如何將Linux內核緩衝區映射到用戶空間?
更易於使用'/ SYS /班/ gpio'接口,如果你想要的是用戶空間。爲什麼重新發明輪子,請參閱http://elinux.org/GPIO –