参考资料:

  1. 维基百科GPIO

  2. GPIO博客资料(一)

  3. MMIO和PMIO

  知识点:

  ● GPIOGeneral-purpose input/output的缩写,是一个在集成电路上的通用pin,它在运行时作为输入pin或输出pin受控于用户。GPIO没有预定义的目标(输入或输出),默认为未使用。

  ● GPIO的能力有:①GPIO pins可被配置为input或output(片选或时钟产生器);②GPIO pins可被enabled或disabled;③Input值是可读的(比如 high=1,low=0);④Ouput的值是可读写的;⑤Input的值通常被用作IRQs(比如唤醒时间)。GPIO pin的状态可以通过多种接口暴露给软件开发者,比如内存映射外设或特定I/O端口指令等。

  ● GPIO port是一组GPIO pins(比如8个GPIO pins),它们作为一个整体,按组接受控制。

  ● 在嵌入式系统中,对一些结构较简单的外设或电路,通常只要求一位,即开/关两种状态,就可以实现控制。显然,串口和并口在这里都不合适。因此,微控制器芯片一般都会提供一个“通用可编程I/O接口GPIO”。接口一般会有通用控制寄存器和通用数据寄存器,甚至会有上拉寄存器。有无GPIO接口是区别微处理器和微控制器的一个特征。

  ● Memory-mapped I/O(MMIO)和Port-mapped I/O(PMIO)是两种互补的方法,用以执行CPU和外设的I/O操作。

  ● MMIO使用对内存和I/O设备使用相同地址总线,内存和I/O设备寄存器被映射到地址值。因此,当CPU访问一个地址时,它可能是访问某一物理RAM,也可能是I/O设备的内存(寄存器)。因此,CPU访问内存的指令也可以被用来访问设备。I/O设备监视CPU地址总线并响应访问设备的地址,连接数据总线到期望的设备硬件寄存器中。一般情况下,I/O寄存器与内存是统一编址(可临时或永久)。

  ● PMIO使用特定的CPU指定来操作I/O,比如in和out指令。一般,I/O设备拥有独立的地址空间(相对于内存),通常用额外的“I/O”pin或者特定的I/O总线实现。

  ● 设备DMA不会受到CPU-to-device通信方式的影响,因为它绕过了CPU

  ● 硬件中断是CPU和外设交互的另一种方式。它是以外设主动发起的,且每条中断线的每一位都有固定的含义,而上边的两个方法则是以CPU发起的。

  

GPIO相关知识的更多相关文章

  1. 【STM32H7教程】第15章 STM32H7的GPIO基础知识(重要)

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第15章       STM32H7的GPIO基础知识(重要) ...

  2. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  3. 移动WEB像素相关知识

    了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...

  4. listener监听器的相关知识

    从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...

  5. UIViewController相关知识

    title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...

  6. 【转】java NIO 相关知识

    原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...

  7. NSString使用stringWithFormat拼接的相关知识

    NSString使用stringWithFormat拼接的相关知识 保留2位小数点 1 2 3 4 //.2代表小数点后面保留2位(2代表保留的数量) NSString *string = [NSSt ...

  8. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  9. 电路相关知识--读<<继电器是如何成为CPU的>>

    电路相关知识–读<<继电器是如何成为CPU的>> */--> *///--> *///--> 电路相关知识–读<<继电器是如何成为CPU的> ...

随机推荐

  1. Python打包成exe程序

    如何把.py文件打包成.exe可执行程序. 这里选择用PyInstaller 3.0来打包,PyInstaller 3.0下载地址:https://pypi.python.org/pypi/PyIns ...

  2. mongod 命令执行发现已经有进程在运行mongod数据库--errno:48 Address already in use for socket: 0.0.0.0:27017

    错误信息: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017 27017端口已经被占用 ...

  3. SQL优化 1

    SQL_ID:fvdwtfv18yy0m 先看看sql的预估执行计划 select * from table(dbms_xplan.display_awr('fvdwtfv18yy0m')); sql ...

  4. html中select只读显示

    因为Select下拉框只支持disabled属性,不支持readOnly属性,而在提交时,disabled的控件,又是不提交值的.现提供以下几种解决方案: 1.在html中使用以下代码,在select ...

  5. Box2D淌坑日记: 如何正确的设置角度

    对刚体角度设置的唯一函数是 SetTransform 然而,这个函数不会对传入的角度作任何处理,因此,如果你试图设置一个角度,并应用一个revoluteJoint时,可能会出现问题. 我在实践中碰到的 ...

  6. backbone event 事件订阅 和发布 源码小读

    nodejs有eventEmitter 类,想到backbone  有个event模块 可以对对象做事件绑定和触发,是backbone的核心模块. backbone event模块 on 添加自定义事 ...

  7. Redis的Python客户端redis-py

    1. 安装 1. redis-py a. 使用easy_install 1 sudo easy_install redis  b. 源码安装 1 2 3 git clone https://githu ...

  8. fbset 移植

    手头上的文件系统的fbset有问题,所以就自己从新移植一个到开发板上. 参考链接 http://blog.chinaunix.net/uid-20768928-id-5748009.html 下载地址 ...

  9. php判断闰年

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. [SLAM]2D激光线特征提取

    Nguyen, V., et al. (2007)."A comparison of line extraction algorithms using 2D range data for i ...