Assignment 013:内核中的GPIO驱动
根据课件中提示的GPIO.txt,编写一份内核中使用GPIO函数来操纵GPIO端口的编程说明。
调用GPIO有两种不同的方式,一是基于引脚描述符,二是基于整数标记来使用串口。在内核编程操作GPIO函数中中尽量使用前者。在使用中可以通过设置GPIO的类型,然后根据类型来使用。如果要使用需要先include<linux/gpio.h>。
内核中gpio的基本使用函数:
1 测试gpio端口是否合法:int gpio_is_valid(int number); 只有合法的端口才可以使用。
函数申明为:
使用结束需要释放。函数为void gpio_free(unsigned
gpio);。
2 申请某个gpio端口当然在申请之前需要显示的配置该gpio端口的pinmux:int gpio_request(unsigned
gpio, const char *label)。
3 标记gpio的使用方向包括输入还是输出。当错误时返回负的错误值。因此需要在标记之后确认此函数是否返回正确还是错误。函数申明:
4 获得gpio引脚的值和设置gpio引脚的值(对于输出),函数申明:
5 gpio当作中断口使用。在编写函数时,可以把函数返回的值即中断编号可以传给request_irq()和free_irq()。内核通过调用该函数将gpio端口转换为中断。
函数申明:
6 导出和撤销gpio端口到用户空间:
内核可以对已经被gpio_request()申请的gpio端口的导出进行明确的管理,参数direction_may_change表示用户程序是否允许修改gpio的方向,假如可以则参数direction_may_change为true。