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端口的pinmuxint 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_changetrue