- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux 下的gpio驱动
LINUX下的GPIO驱动 LINUX下的GPIO驱动 设备驱动程序是计算机硬件与应用程序的接口,是软件系统与硬件系统沟通的桥梁。如果没有设备驱动程序,那么硬件设备就只是一堆废铁,没有一点的功能。 LINUX下的GPIO驱动 。 设备驱动程序(Device Driver),简称驱动程序(Driver)。它是一个允许计算机软件(Computer Software)与硬件(Hardware)交互的程序。这种程序建立了一个硬件与硬件,或硬件与软件沟通的界面。CPU经由主板上的总线(Bus)或其它沟通子系统(Subsystem)与硬件形成连接,这样的连接使得硬件设备(Device)之间的数据交换成为可能。 LINUX下的GPIO驱动 核心板原理图与底板原理图可以确定,底板上的4个LED灯是由GPM0~GPM3 控制的 LINUX下的GPIO驱动 由S3C6410数据手册 设置GPMCON 设置IO口为输出还是输入 设置GPMPUD 设置IO口是上拉还是下拉 设置GPMDAT 设置IO口输出电平 LINUX 下的GPIO驱动 底层驱动文件在 Linux-3.0.1/drivers/char/s3c6410_leds.c 包含头文件后 #define DEVICE_NAME leds“ 表明注册设备名为leds 开发平台文件系统中,/dev目录下会有名为leds的设备 初始化函数 初始化函数 static int __init dev_init(void) { int ret; ? ? ?? ? ? ? ? unsigned tmp; ? ? ? ?//gpm0-3 pull up tmp = readl(S3C64XX_GPMPUD); //从IO口读32位数据 到tmp 参数为地址 tmp = (~0xFF);//GPMPUD物理地址0x7F008828 tmp |= 0xaa;//使能上拉电阻 writel(tmp,S3C64XX_GPMPUD); 初始化函数 //gpm0-3 output mode GPM配置寄存器 tmp =readl(S3C64XX_GPMCON); tmp = (~0xFFFF); tmp |= 0x1111; //设置为输出模式 writel(tmp,S3C64XX_GPMCON); //gpm0-3 output 0 tmp = __raw_readl(S3C64XX_GPMDAT); tmp |= 0x10;//输出数writel(tmp,S3C64XX_GPMDAT); ? ? ? ? ?//注册杂项字符设备 ret = misc_register(misc);//不用手动创建节点 printk (DEVICE_NAME\tinitialized\n); return ret; } Ioctl函数 static long s3c6410_leds_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { switch(cmd) { unsigned tmp; case 0: case 1: if (arg 4) { return -EINVAL; } Ioctl函数 tmp = readl(S3C64XX_GPMDAT); if(cmd==0) //close light { tmp = (~(1arg)); } else //open light { tmp |= (1arg); } Ioctl函数 writel(tmp,S3C64XX_GPMDAT); printk (DEVICE_NAME: %d %d\n, arg, cmd); return 0; default: return -EINVAL; } } 。 底层驱动的调用 2.6内核中,ioctl的原型为 long (* unlocked_ioctl)(struct *file,unsigned int,unsigned long); 在file_operations中,需定义为.unlocked_ioctl= s3c6410_leds_ioctl。应用层中调用仍为ioctl()。 应
您可能关注的文档
- jhu cssa 第五届趣味篮球赛比赛规则三对三对抗人员和比赛时间1 .pdf
- jelinek-vortrag cuba - la máquina del tiempo.doc
- jl9003型电缆故障测试系统(组合型测试系统) - 继电保护测试仪.doc
- jmct反应性微扰计算功能的实现 - 强激光与粒子束.pdf
- jpeg 压缩对相机型号来源取证的影响分析performance evaluation .pdf
- jstc-qd-504-08(计算机软件测试委托书) - 江苏省软件产品 .doc
- jrc smart electricity systems action 欧盟联合研究中心 .pdf
- kaczmarz 算法收敛解的性态分析 - ct理论与应用研究.pdf
- k- rb 原子冷却的半导体激光系统 - 物理学报.pdf
- kasami 扩频序列的研究.pdf
- 中国国家标准 GB/T 22517.2-2024体育场地使用要求及检验方法 第2部分:游泳场地.pdf
- GB/T 22517.2-2024体育场地使用要求及检验方法 第2部分:游泳场地.pdf
- 《GB/T 22517.2-2024体育场地使用要求及检验方法 第2部分:游泳场地》.pdf
- 苏教版(2017秋)科学三年级下册1.《种子发芽了》 教案(含课堂练习和反思).docx
- 2024-2025学年小学数学六年级上册冀教版(2024)教学设计合集.docx
- 地理商务星球版七年级上册4.5形成气候的主要因素 同步教案.docx
- 2024-2025学年中职中职专业课金融类73 财经商贸大类教学设计合集.docx
- 2024-2025学年初中地理七年级上册(2024)仁爱科普版(2024)教学设计合集.docx
- 2024-2025学年小学英语二年级上册外研版(一起)教学设计合集.docx
- 2024-2025学年高中数学选择性必修 第二册北师大版(2019)教学设计合集.docx
文档评论(0)