欢迎来到天天文库
浏览记录
ID:22151781
大小:149.50 KB
页数:29页
时间:2018-10-27
《GPIO驱动相关笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、GPIO驱动相关笔记2011-03-2722:54 529人阅读 评论(2) 收藏 举报 打算跟着友善之臂的《mini2440linux移植开发指南》来做个LED驱动,虽然LED的原理简单得不能再简单了,但是要把kernel中针对于s3c24**的GPIO的一些数据结构,还有函数搞清楚也不是那么轻松的事,所以本文主要简单地说明下LED驱动中的相关数据结构以及函数/宏的定义,并对驱动加以验证 *************************************************************************** 注意:在/arch/arm
2、/mach-s3c2410/include/mach/gpio-fns.h源代码中有如下说明: 16/*Thesefunctionsareintheto-be-removedcategoryanditisstrongly17*encouragednottousetheseinnewcode.Theywillbemarkeddeprecated18*verysoon.19*20*Mostofthefunctionalitycanbeeitherreplacedbythegpiocfgcalls21*forthes3cplatformorbythegenericGPIO
3、libAPI.22*23*Asof2.6.35-rc,thesewillberemoved,withthefewdriversusingthem24*eitherreplacedorgivenawrapperuntilthecallscanberemoved.25*/ 该头文件包括:staticinlinevoids3c2410_gpio_cfgpin(unsignedintpin,unsignedintcfg)该函数直接使用linux/arch/arm/plat-s3c/gpio-config.c中的ints3c_gpio_cfgpin(unsignedintpi
4、n,unsignedintconfig)即可 *************************************************************************** 首先看一下设备初始化程序:85/*86*设备初始化87*/88staticint__initdev_init(void)89{90intret;91inti;92for(i=0;i<4;i++){93 //设置LED对应的端口寄存器为输出(OUTPUT)94 if(s3c_gpio_cfgpin(led_table[i],led_cfg_table[i])<0
5、) printk(KERN_INFO"configpin%dfailed",i);95printk(KERN_INFO"configpin%dfailed",i);95 //设置LED对应的端口寄存器为低电平输出,在模块加载>结束后,四个LED应该是全部都是发光96 状态 97 s3c2410_gpio_setpin(led_table[i],0);98} 99 ret=misc_register(&misc); //注册设备100printk(DEVICE_NAME"/tinitialized/n"); //打印初始化信息101re
6、turnret;102} 可以看到,这里涉及到两个函数,分别是s3c2410_gpio_cfgpin,s3c2410_gpio_setpin,这两个函数分别对四个LED进行配置,从函数名来看,cfgpin对引脚寄存器状态进行配置,而setpin应该是对寄存器数据值进行配置,我们在分析函数之前先弄清楚传入的参数到底是什么。led_table[i]28 //LED对应的GPIO端口列表29staticunsignedlongled_table[]={ 30 S3C2410_GPB(5), 31 S3C2410_GPB(6), 32 S3C2410_GPB(7),
7、33 S3C2410_GPB(8),34};这里S3C2410_GPB宏定义在mach/gpio-nrs.h中 /*GPIObanksizes*/#defineS3C2410_GPIO_A_NR(32)#defineS3C2410_GPIO_B_NR(32)#defineS3C2410_GPIO_C_NR(32)#defineS3C2410_GPIO_D_NR(32)#defineS3C2410_GPIO_E_NR(32)#defineS3C2410_GPIO_F_NR(32)#defineS3C2410_GPIO_G_NR(32)#defineS3C2410
此文档下载收益归作者所有