c - 在 C 编程中访问 Raspberry PI 寄存器

标签 c raspberry-pi cpu-registers

我正在尝试访问我的 Raspberry Pi 的寄存器。

更具体一点,http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf在第 172-173 页有一些硬件定时器。

我想使用它们,因为我必须编写两个函数 HW_GetTimer()HW_ClearTimer()

我找不到与这些寄存器通信的好方法。这可能吗?是否存在我不知道的现有 C 函数?

最佳答案

首先,警告一句:操作系统可能会使用这些寄存器,所以如果你乱动它们,很可能会破坏某些东西......

也就是说,有两种选择:

  • 正确的方法:编写一个内核驱动程序,您将拥有大量功能,可以以理智和受控的方式访问硬件。或者可能已经有一个驱动程序可以完全按照您的要求执行操作,如果是这样的话,您只需找到它并使用它公开的接口(interface)即可。阅读内核源代码很有趣!
  • 最简单的方法:从用户模式区域,打开 /dev/memmmap() 您想要访问进程内存的地址。然后你可以随意读/写(请使用 volatile 指针!)。请注意,您不能从/到 /dev/mem read()/write(),只能使用 mmap().

显然,对于用户模式,您必须拥有适当的权限或者是 root。

关于c - 在 C 编程中访问 Raspberry PI 寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20493226/

相关文章:

c - 如何理解Locality Sensitive Hashing?

cpu-registers - 使用 CPU 寄存器进行临时数据存储比使用内存位置有什么优势?

architecture - ESP在 assembly 中是什么意思?

c++ - 整数和寄存器大小之间有关系吗?

c - 如何阻止 gtk 按钮被按下两次?

c++ - 不应该发生的缓冲区溢出(?)

c - 找到一个子数组的最小值,而该值可能只有 1 或 2 或 3

c++ - opencv2/photo/photo.hpp c++​​ 的条件包含取决于 OpenCV 版本

node.js - NPM 在 Raspberry Pi 上无法正常工作

server - 本地网络上的树莓派访问服务器