LEDS-GPIO驅动中遇到的问题总结.docxVIP

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

1、#ifdef 语句1 ????// 程序2 #endif可翻译为:如果 HYPERLINK /view/2076445.htm \t _blank 宏定义了语句1则程序2。 作用:我们可以用它区隔一些与特定 HYPERLINK /view/668911.htm \t _blank 头文件、 HYPERLINK /view/421066.htm \t _blank 程序库和其他 HYPERLINK /view/2303554.htm \t _blank 文件版本有关的代码。 遇到的几个函数: 2、miscdevice函数,为混杂设备驱动。在Linux系统中,存在一类字符设备,他们共享一个主设备号(10),但此设备号不同,我们称这类设备为混杂设备(miscdeivce),查看/proc/device中可以看到一个名为misc的主设备号为10。所有的混杂设备形成一个链表,对设备访问时内存根据次设备号找到对应的miscdevice设备。包含以下三个变量minor次设备号,*name设备名,*fops文件操作函数集即可。 static struct miscdevice misc = { .minor = MISC_DYNAMIC_MINOR, .name = DEVICE_NAME, .fops = dev_fops, }; Linux内核使用misc_register函数注册一个混杂设备。注册成功后,linux内核为自动为该设备创建设备文件。? int?misc_register(struct?miscdevice?*misc)? 3、.unlocked_ioctl与ioctl的区别 .unlocked_ioctl = s3c6410_leds_ioctl,为什么不写成 .ioctl = s3c6410_leds_ioctl,? 在应用程序中ioctl是兼容的,可直接用,不必变化;但加载到内核的驱动程序中我们的ioctl函数必须变化,采用unlocked_ioctl,否则就会发生cmd参数的变化,驱动程序中这个指针函数变了之后最大的影响是参数中少了inode,建议均采用unlocked_ioctl。 ioctl是 HYPERLINK /view/15565.htm \t _blank 设备驱动程序中对设备的 HYPERLINK /view/1431426.htm \t _blank I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:int ioctl(int fd, int cmd, …);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就能在用户程序中使用ioctl函数控制设备的I/O通道。 返回值:成功为0,出错为-1 4、GPX有三个控制寄存器, GPxCON配置寄存器,用于选择引脚功能。每两位控制一根引脚:00表示输入,01表示输出,10表示特殊功能,11保留不用。 GPxDAT数据寄存器,用于读写引脚数据。00输入,读(read)可知该引脚电平状态—高或低;01输出,写(write)可自己设定该引脚电平状态—高或低。 GPxPUD上拉电路使能寄存器,用于确定是否使用内部上拉电阻。1该引脚无内部上拉电阻;0该引脚使用内部上拉电阻。 上拉电阻的作用:当GPIO引脚处于第三态(既不是输出高电平,也不是输入低电平,而是呈高阻态,即相当于没接芯片)时,该引脚的电平状态由上拉电阻、下拉电阻确定。 5、readl(S3C64XX_GPMDAT); 内核函数,读取数据寄存器 writel(tmp,S3C64XX_GPMDAT); 内核函数,写入数据寄存器 __raw_readl(S3C64XX_GPMDAT);寄存器读取函数 readl(S3C64XX_GPMCON); 内核函数,读取配置寄存器 6、A、引用端口的定义,旧版本直接通过S3C2410_GPmn来定义端口GPIOm的第n个引脚,比如GOIOB的第5个引脚引用为S3C2410_GPB5。在新版本中改为采用S3C2410_GPm(n)的方式,比如GPIOB的第5个引脚就改为S3C2410_GPB(5)。这里的S3C2410_GPm(n)函数在arch/arm/march-2410/include/mach/gpio-nrs.h中定义,共有S3C2410_GPA()~S3C2410_GP

文档评论(0)

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

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

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档