![]() |
1
5
ARM没有I/O端口空间。所有外围寄存器都分配给内存空间中的地址。
GPIO通常被实现为控制寄存器的外围设备,并且RPi的BCM2835中的GPIO遵循此约定。这组控制寄存器可以具有不同的名称;例如,Atmel将这些寄存器称为并行I/O(PIO)外围设备。 每个GPIO(或更准确地说,每个引脚)将由每个控制寄存器功能中的一个或多个位表示。控制寄存器功能包括引脚分配(也称多路复用)、将输出设置为高、将输出设为低、读取引脚电平以及电平和边缘检测控制。 IOW不存在与GPIO相对应的可读取和写入的单个位。对于GPIO,特定寄存器中会有一个位来获取输入电平。在另一个寄存器中有一位将GPIO输出设置为高,而在另一寄存器中则有一位设置为低。
对pinctrl(引脚控制)驱动器是比GPIO更低的层(即更接近硬件)。它是处理管脚复用的pinctrl层(即,管脚是用于外围功能还是用作GPIO)。
对这个 系统文件系统 提供了用于访问未分配给外围设备的那个些引脚的接口。
附录
|
![]() |
2
0
这个响应可能不是“四平八稳”的,因为它只为复盆子Pi 2提供GPIO基址,而不是how。
尽管如此,Raspberry Pi 2上的Raspbian OS提供了
使用上述基地址的粗略ARMv7汇编示例,通过
|
![]() |
Mr B · mmap仅适用于小文件? 7 年前 |
![]() |
PaperMoon · 具有结构mmapped向量的结构 7 年前 |
|
Novice · 如何在c中使用mmap 8 年前 |
![]() |
MiJo · mmap(2)返回的地址是否有可能与堆冲突? 9 年前 |
![]() |
ggaaooppeenngg · GPIO如何映射到内存中? 9 年前 |
![]() |
Larry · linux-mmap SHARED最大大小 10 年前 |
![]() |
Anon · Python-使用请求将文件直接下载到内存 11 年前 |
|
user1250092 · 数据的mmap和页面对齐-这会提高性能吗? 11 年前 |