首页 理论教育ARM嵌入式系统:GPIO驱动程序设计

ARM嵌入式系统:GPIO驱动程序设计

【摘要】:GPIO是一组可编程控制的引脚,由多个寄存器同时控制。应用程序都能够通过相应的接口使用GPIO。GPIO驱动主要作用就是读取GPIO口的内容,或者设置GPIO口的状态。GPIO与硬件体系密切相关,在Linux内核目录下的相关文件中我们可以发现针对不同硬件芯片的GPIO定义和使用方法,如本书涉及的S5PV210芯片Linux内核中也有相应的驱动程序支持。本章主要讲的就是如何使用Linux内核封装好的GPIO接口函数在驱动开发中需要操作GPIO时候的使用。

I/O接口是微控制器的最基本功能之一。I/O接口电路简称接口电路,它是主机和外围设备之间交换信息的连接部件。I/O接口在主机和外围设备之间的信息交换中起着桥梁和纽带作用。I/O接口电路不仅解决主机CPU和外围设备之间的时序配合和通信联络问题,还可以解决CPU和外围设备之间的数据格式转换和匹配问题,也可以解决CPU的负载能力和外围设备端口选择问题。ARM系统完成I/O功能的标准方法是使用存储器映射I/O。这种方法使用特定的存储器地址。当从这些地址加载或向这些地址存储时,它们提供I/O功能。典型情况下,从存储器映射I/O地址加载用于输入,而向存储器映射I/O地址存储用于输出。

通用输入输出”(General Purpose Input Output,GPIO)是嵌入式系统中最简单、最常应用的1/O接口。GPIO是一组可编程控制的引脚,由多个寄存器同时控制。通过设置对组的寄存器可以达到设置GP1O口对应状态与功能,如读取数据状态、设置输入输出方向、清零、中断使能等功能。常见的一些设计如点亮LED、控制蜂鸣器、输出高低电平、检测按键等设计都可以通过GPO口完成。GPIO接口的优点是低功耗、小封装、低成本和具有较好的灵活性。应用程序都能够通过相应的接口使用GPIO。GPIO使用0~MAX INT之间的整数标识,不能使用负数。

GPIO驱动主要作用就是读取GPIO口的内容,或者设置GPIO口的状态。GPIO与硬件体系密切相关,在Linux内核目录下的相关文件中我们可以发现针对不同硬件芯片的GPIO定义和使用方法,如本书涉及的S5PV210芯片Linux内核中也有相应的驱动程序支持(在/drivers/gpio/)。当然,Linux内核也提供了一个模型框架,能够使用统一的接口来操作GPIO,这个架构被称gpiolib,系统通过gpiolib.c文件来描述该架构。说明文档可见documention/gpio.txt。(www.chuimin.cn)

本章主要讲的就是如何使用Linux内核封装好的GPIO接口函数在驱动开发中需要操作GPIO时候的使用。