我正在尝试访问我的 Raspberry Pi 的寄存器。
更具体一点,http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf在第 172-173 页有一些硬件定时器。
我想使用它们,因为我必须编写两个函数 HW_GetTimer()
和 HW_ClearTimer()
。
我找不到与这些寄存器通信的好方法。这可能吗?是否存在我不知道的现有 C 函数?
最佳答案
首先,警告一句:操作系统可能会使用这些寄存器,所以如果你乱动它们,很可能会破坏某些东西......
也就是说,有两种选择:
- 正确的方法:编写一个内核驱动程序,您将拥有大量功能,可以以理智和受控的方式访问硬件。或者可能已经有一个驱动程序可以完全按照您的要求执行操作,如果是这样的话,您只需找到它并使用它公开的接口(interface)即可。阅读内核源代码很有趣!
- 最简单的方法:从用户模式区域,打开
/dev/mem
和mmap()
您想要访问进程内存的地址。然后你可以随意读/写(请使用volatile
指针!)。请注意,您不能从/到/dev/mem
read()
/write()
,只能使用mmap()
.
显然,对于用户模式,您必须拥有适当的权限或者是 root。
关于c - 在 C 编程中访问 Raspberry PI 寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20493226/