Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用C/C+;对特定内存地址进行R/W访问+;_C++_C_Gpio - Fatal编程技术网

C++ 如何使用C/C+;对特定内存地址进行R/W访问+;

C++ 如何使用C/C+;对特定内存地址进行R/W访问+;,c++,c,gpio,C++,C,Gpio,因此,考虑如何制作自己的硬件/驱动程序,我正在使用GPIO,我知道GPIO在一定范围内对所有硬件使用特定的内存库,但我如何将它们读写到这些内存库中呢 USB是否以类似的方式工作 p.S我使用的是覆盆子Pi。如果您使用的是支持mmap()的系统,请讨论如何使用mmap()来执行此操作。总结是,您的进程将打开/dev/mem进行读写,并将您的基本物理地址作为偏移量映射到文件中(并且您的addr参数是您希望使用的任何虚拟地址)。如果您使用的是Linux,您还可以使用Proc interface与GPI

因此,考虑如何制作自己的硬件/驱动程序,我正在使用GPIO,我知道GPIO在一定范围内对所有硬件使用特定的内存库,但我如何将它们读写到这些内存库中呢

USB是否以类似的方式工作


p.S我使用的是覆盆子Pi。

如果您使用的是支持mmap()的系统,请讨论如何使用
mmap()
来执行此操作。总结是,您的进程将打开/dev/mem进行读写,并将您的基本物理地址作为偏移量映射到文件中(并且您的addr参数是您希望使用的任何虚拟地址)。

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

通常您会编写
peek
poke
汇编程序例程。您还可以使用各种类型的诡计将int/long值转换为地址。欢迎使用堆栈溢出!您是在为特定的操作系统编码,还是在编写没有o/s的嵌入式程序?USB是完全不同的协议。GPIO通常应该是寄存器映射的。您应该能够读/写内存映射寄存器以读/写GPIO。可能存在重复的GPIO。我想先在Linux上启动它,然后再做我自己的小操作系统,从他们的应用程序开始。