2013-11-01 80 views
0

我正在開發飛思卡爾MPC8306上的LED驅動器。在驅動程序代碼中,我在GPIO寄存器上執行ioremap,並在重新映射的GPIO寄存器地址上調用remap_pfn_range,然後在用戶空間中調用mmap以將GPIO寄存器映射到用戶空間。我之前沒有這樣做,我想知道這種方法是否有效。有人能幫助我嗎?提前致謝。硬件寄存器可以映射到用戶空間

+2

更易於使用'/ SYS /班/ gpio'接口,如果你想要的是用戶空間。爲什麼重新發明輪子,請參閱http://elinux.org/GPIO –

回答

0

一個簡單的方法很可能只是爲了mmap相關的直接用戶空間的程序偏移的/dev/mem。這使您可以通過尋求物理內存佈局來訪問它。

AFAIK,這是樹莓派開發商已經做了什麼,使GPIO內存映射I/O寄存器可用的用戶空間程序。

+0

嗨唐格爾,你的建議工程。謝謝你的幫助。 –

+1

除非你確定你是唯一一個進行訪問的東西,否則有些事情在用戶空間中是不安全的。讀取 - 修改 - 寫入寄存器。 (在rPi上更有趣,因爲在切換外設時你應該使用內存屏障,希望內核代碼可以這樣做;其他用戶空間線程可能不那麼寬容。) –

1

您應該使用/dev/mem接口,用於訪問GPIO寄存器。通過另一個嵌入式主板上的GPIO控制LED的一個很好的參考被給出here

相關問題