GPIO驱动是通过GPIOLIB通用架构实现。GPIOLIB是linux下统一管理gpio设备的架构接口,在linux的menuconfig下选择:
----GPIO Support
/SYS/CLASS/GPIO/...(SYSFS INTERFACE)
就可以进行GPIOLIB的统一管理。驱动代码源文件drivers\gpio\xilinx_gpiops.c。
gpiops.c首先注册初始化一个设备xgpiops:
static int__init xgpiops_init(void)
{
returnplatform_driver_register(&xgpiops_driver);
}
subsys_initcall(xgpiops_init);
然后在xgpiops_probe()函数里增加对gpio_chip结构添加,这个结构实际上也是一个抽象的GPIO控制器:
chip =&gpio->chip;
//标签
chip->label= "xgpiops";
//模块指针
chip->owner= THIS_MODULE;
//可选的设备结构
chip->dev= &pdev->dev;
//获取相应偏移脚的值
chip->get= xgpiops_get_value;
//设置相应偏移脚的输出值

本文介绍了ZYNQ7000平台基于Linux3.0内核的GPIO驱动实现,讲解了如何利用GPIOLIB架构进行GPIO设备的统一管理。通过分析xgpiops.c驱动代码,展示了GPIO控制器的初始化和配置过程。在ZYNQ QEMU环境下进行了GPIO功能测试,包括GPIO的导出、方向设置、值的读写,展示了GPIOLIB在命令行操作GPIO的便利性。同时,给出了XILINX测试工程中的GPIO控制函数示例,进一步说明了在应用程序中操作GPIO的方法。
4275

被折叠的 条评论
为什么被折叠?



