网站大量收购独家精品文档,联系QQ:2885784924

Linux下GPIO驅动详解文章.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux下GPIO驅动详解文章

/Linux/2011-09/43084.htm 打算跟着友善之臂的《mini2440 Linux移植开发指南》 见 /Linux/2011-06/37904.htm 来做个LED驱动,虽然LED的原理简单得不能再简单了,但是要把kernel中针对于s3c24**的GPIO的一些数据结构,还有函数搞清楚也不是那么轻松的事,所以本文主要简单地说明下LED驱动中的相关数据结构以及函数/宏的定义,并对驱动加以验证 *************************************************************************** 注意:在/arch/arm/mach-s3c2410/include/mach/gpio-fns.h源代码中有如下说明: 16/* These functions are in the to-be-removed category and it is strongly 17 * encouraged not to use these in new code. They will be marked deprecated 18 * very soon. 19 * 20 * Most of the functionality can be either replaced by the gpiocfg calls 21 * for the s3c platform or by the generic GPIOlib API. 22 * 23 * As of 2.6.35-rc, these will be removed, with the few drivers using them 24 * either replaced or given a wrapper until the calls can be removed. 25*/ 该头文件包括: static inline void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int cfg) 该函数直接使用 linux/arch/arm/plat-s3c/gpio-config.c中的 int s3c_gpio_cfgpin(unsigned int pin, unsigned int config) 即可 *************************************************************************** 首先看一下设备初始化程序: 85 /* 86 * 设备初始化 87 */ 88 static int __init dev_init(void) 89 { 90 int ret; 91 int i; 92 for (i = 0; i 4; i++) { 93 //设置 LED 对应的端口寄存器为输出(OUTPUT) 94 if (s3c_gpio_cfgpin(led_table[i], led_cfg_table[i])0) printk(KERN_INFO config pin %d failed, i); 95 printk(KERN_INFO config pin %d failed, i); 95 //设置 LED 对应的端口寄存器为低电平输出,在模块加载 结束后,四个 LED 应该是全部都是发光 96 状态 97 s3c2410_gpio_setpin(led_table[i], 0); 98 } 99 ret = misc_register(misc); //注册设备 100 printk (DEVICE_NAME/tinitialized/n); //打印初始化信息 101 return ret; 102 } 可以看到,这里涉及到两个函数,分别是s3c2410_gpio_cfgpin,s3c2410_gpio_setpin,这两个函数分别对四个LED进行配置,从函数名来看,cfgpin对引脚寄存器状态进行配置,而setpin应该是对寄存器数据值进行配置,我们在分析函数之前先弄清楚传入的参数到底是什么。 led_table[i] 28 //LED 对应的 GPIO 端口列表 29 static unsigned long led_table [] = { 30 S3C2410_GPB(5), 31 S3C2410_GPB(6), 32 S3C2410_GPB(7), 33 S3C2410_GPB(8), 34 }; 这里S3C2410_GPB宏定义在ma

文档评论(0)

sheppha + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档