【问题标题】:How would I get R/W access to a specific memory address using C/C++如何使用 C/C++ 获得对特定内存地址的 R/W 访问权限
【发布时间】:2012-09-27 18:13:46
【问题描述】:

因此,考虑如何制作自己的硬件/驱动程序,我正在使用 GPIO,并且我知道 GPIO 实际上为所有硬件使用特定范围内的特定内存库,但我将如何阅读和写入它们到这些内存库?

USB 是否以类似的方式工作?

P.S我使用的是树莓派。

【问题讨论】:

  • 通常你会编写peekpoke 汇编程序例程。您还可以使用各种类型的诡计将 int/long 值转换为地址。
  • 欢迎来到 Stack Overflow!您是在为特定的操作系统编写代码,还是在编写没有操作系统的嵌入式程序?
  • USB 是完全不同的协议。 GPIO 通常应该是寄存器映射的。您应该能够读/写内存映射寄存器来读/写 GPIO。
  • 谢谢罗伯。我正在考虑首先在 Linux 中启动它,然后可以通过制作我自己的小型操作系统并从他们那里去。

标签: c++ c gpio


【解决方案1】:

如果您使用的是 Linux,您还可以使用Proc interface 与 GPIO 进行通信。例如,如果您看到这个link,它显示了如何直接从 shell 提示符读取或写入 GPIO 引脚。

【讨论】:

    【解决方案2】:

    如果您使用的是支持 mmap() 的系统,https://groups.google.com/forum/?fromgroups=#!topic/comp.os.linux.development.apps/2kiUc-dNa3c 讨论使用 mmap() 来执行此操作。总结是您的进程将打开 /dev/mem 进行读写,并将您的基本物理地址作为偏移量映射到文件中(并且您的 addr 参数是您希望使用的任何虚拟地址)。

    【讨论】:

      猜你喜欢
      • 2013-06-29
      • 2012-08-31
      • 2013-12-31
      • 2010-11-01
      • 2019-04-13
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多