如何驱动GPIO及对应设备
发布时间:2008/12/25 0:00:00 访问次数:744
一般的arm都提供超过100路的gpio复用管脚,要使用这些管脚,就必须首先将其驱动起来。如果使用的芯片带有mmu内存管理,那么在写驱动模块的时候不能直接去操作物理地址,必须利用io rem ap命令重新映射。
1.i/o端口
和硬件打交道离不开i/o端口,老的isa设备经常是占用实际的i/o端口,在linux下,操作系统没有对i/o端口屏蔽。也就是说,任何驱动程序都可以对任意的i/o端口操作,这样就很容易引起混乱。每个驱动程序都应该自己避免误用端口,有两个重要的kernel函数可以保证驱动程序做到这一点。
check_reglon(int io_ port' int off_set)
这个函数用来查看系统的i/0表,看是否有别的驱动程序占用某一段i/o口。参数1:i/o端口的基地址;参数2:i/o端口占用的范围。返回值:0,没有占用;非0,己经被占用。
request_reglon(int io_port' int off_set、char *devname)
如果这段i/o端口没有被占用,那么在驱动程序中就可以使用它。在使用之前,必须向系统登记,以防止被其他程序占用;登记后,在/proc/ioports文件中可以看到登记的i/o口。参数1:i/o端口的基地址;参数2:i/o端口占用的范围;参数3:使用这段i/o地址的设备名。在对i/o口登记后,就可以放心地用inb0,outb()之类的函数来访问了。
2.和设备文件对话
驱动程序提供了对设备操作的接口,同时在程序中实现了基本操作所需要的基本函数。用户程序通过访问设备文件的方式对设备间接操作,linux系统提供了ioctl(input outputcontrol的缩写)函数可以很方便地实现这一操作。
int ioctl(int fd' ind cmd、……);
其中,fd就是用户程序打开设备时使用open函数返回的文件标识符;cmd就是用户程序对设备的控制命令:后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。
选择设备的控制命令时,需要根据linux文档所提供的标准控制字(documentation/ioctl-number.txt)中选择的合适控制字,如果选择不合适会和系统中的其他设备发生冲突。
欢迎转载,信息来自维库电子市场网(www.dzsc.com)
一般的arm都提供超过100路的gpio复用管脚,要使用这些管脚,就必须首先将其驱动起来。如果使用的芯片带有mmu内存管理,那么在写驱动模块的时候不能直接去操作物理地址,必须利用io rem ap命令重新映射。
1.i/o端口
和硬件打交道离不开i/o端口,老的isa设备经常是占用实际的i/o端口,在linux下,操作系统没有对i/o端口屏蔽。也就是说,任何驱动程序都可以对任意的i/o端口操作,这样就很容易引起混乱。每个驱动程序都应该自己避免误用端口,有两个重要的kernel函数可以保证驱动程序做到这一点。
check_reglon(int io_ port' int off_set)
这个函数用来查看系统的i/0表,看是否有别的驱动程序占用某一段i/o口。参数1:i/o端口的基地址;参数2:i/o端口占用的范围。返回值:0,没有占用;非0,己经被占用。
request_reglon(int io_port' int off_set、char *devname)
如果这段i/o端口没有被占用,那么在驱动程序中就可以使用它。在使用之前,必须向系统登记,以防止被其他程序占用;登记后,在/proc/ioports文件中可以看到登记的i/o口。参数1:i/o端口的基地址;参数2:i/o端口占用的范围;参数3:使用这段i/o地址的设备名。在对i/o口登记后,就可以放心地用inb0,outb()之类的函数来访问了。
2.和设备文件对话
驱动程序提供了对设备操作的接口,同时在程序中实现了基本操作所需要的基本函数。用户程序通过访问设备文件的方式对设备间接操作,linux系统提供了ioctl(input outputcontrol的缩写)函数可以很方便地实现这一操作。
int ioctl(int fd' ind cmd、……);
其中,fd就是用户程序打开设备时使用open函数返回的文件标识符;cmd就是用户程序对设备的控制命令:后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。
选择设备的控制命令时,需要根据linux文档所提供的标准控制字(documentation/ioctl-number.txt)中选择的合适控制字,如果选择不合适会和系统中的其他设备发生冲突。
欢迎转载,信息来自维库电子市场网(www.dzsc.com)
上一篇:GPIO应用举例
上一篇:用户程序访问GPIO
热门点击