- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DS18B20在linux下跑起来
/jammy_lee/
http://21
DS18B20在linux下跑起来
上次的让LED在linux下闪烁起来可算是困难重重,毕竟是刚入手。这次的DS18B20加载到linux同样是个探险之旅。在不断的摸索、尝试,最后还是有点小成果。现在写下笔记,希望能与同路人分享交流。
在加载到linux之前,我先确保DS18B20在无OS的环境下能正常工作,即“裸奔”。这个阶段也不是一路顺利,虽然以前有在单片机下驱动DS18B20的经验,但是在ARM延时确实是个问题。上网搜索一下,有的人用定时器延时,有的就直接程序耗时的方式延时。急于求成的我,为了避免使用定时器又出现新的麻烦,唯有使用后者的方法。好了,解决延时问题,DS18B20也自然运行起来,没有辜负我!哈~
“裸奔”成功之后,现在就要给DS18B20披上linux的大衣。这次同样是将它以字符型设备驱动。按上次驱动LED的过程照葫芦画瓢,一个驱动程序,一个测试程序。
?
驱动程序
驱动程序对比上次有所加深,多使用了几个系统调用函数。
?
open()函数,对设备特殊文件进行open()系统调用时,将调用驱动程序的open () 函数:
int (*open)(struct inode * ,struct file *);
其中参数inode为设备特殊文件的inode (索引结点) 结构的指针,参数file是指向这一设备的文件结构的指针。open()的主要任务是确定硬件处在就绪状态、验证次设备号的合法性(次设备号可以用MINOR(inode- i - rdev) 取得)、控制使用设备的进程数、根据执行情况返回状态码(0表示成功,负数表示存在错误) 等。
?
read()函数。当对设备特殊文件进行read() 系统调用时,将调用驱动程序read() 函数:
?? ssize_t (*read) (struct file *, char *, size_t, loff_t *);
来从设备中读取数据。当该函数指针被赋为NULL 值时,将导致read 系统调用出错并返回-EINVAL(Invalid argument,非法参数)。函数返回非负值表示成功读取的字节数(返回值为signed size数据类型,通常就是目标平台上的固有整数类型)。
?
release()函数,当最后一个打开设备的用户进程执行close ()系统调用时,内核将调用驱动程序的release () 函数:
void (*release) (struct inode * ,struct file *) ;
release 函数的主要任务是清理未结束的输入/输出操作、释放资源、用户自定义排他标志的复位等。
?
程序如下:
/************************************************************///文件名:ds18b20.c//功能:linux下的ds18b20驱动程序//使用说明: (1)//????????? (2)//????????? (3)//????????? (4)//作者:jammy-lee
//日期:2009-03-31/************************************************************/
//包含头文件
#include linux/init.h
#include linux/delay.h
#include linux/fs.h
#include linux/module.h
#include linux/kernel.h
?
#include asm/uaccess.h
#include asm-arm/arch-s3c2410/regs-gpio.h
#include asm/irq.h
#inculde asm/hardware.h
#include asm/arch/regs-gpio.h
#include asm/io.h
#include asm/arch/map.h
#include asm-arm/plat-s3c24xx/clock.h
#include asm/arch/regs-clock.h
?
//DS18B20端口的定义
#define DQ_PIN S3C2410_GPG14
#define DQ_IN S3C2410_GPG14_INP
#define DQ_OUT S3C2410_GPG14_OUTP
?
#define DEVICE_NAME DS18B20 //驱动设备的名称,可以使用命令 cat /proc/devices
#define DS18B20_MAJOR
您可能关注的文档
- CHAPTER 13 COMMUNICATION PRIVACY :13章通信隐私.doc
- Chapter 13 geography 地理位置.doc
- chapter2《pollution fighters》教案1(牛津上海八年级下).doc
- CHIP实验流程图(CST9002).doc
- ci5__急性发作期每日嘌呤摄入量控制在100.doc
- cigs可行性报告09.doc
- cima gbc 2015 作品.docx
- CM800长丝在针织毛衫领域的应用.docx
- CNMARC(中国机读目录格式)基础知识.doc
- COD-571使用说明书.doc
- 2025年综合类-炼铁工考试-高级炼铁工考试历年真题摘选带答案(5卷-选择题).docx
- 2025年卫生资格(中初级)-中医肛肠学主治医师历年参考题库含答案解析(5卷单选100题).docx
- 2025年公路交通运输技能考试-机动车检验工历年参考题库含答案解析(5套共100道单选题合辑).docx
- 2025年住院医师考试-急诊科住院医师历年参考题库含答案解析(5卷单选一百题).docx
- 2025年综合类-劳动保障协理员-劳动保障综合知识历年真题摘选带答案(5卷单选题100题).docx
- 2025年综合类-殡葬资格考试-殡葬服务历年真题摘选带答案(5卷100题).docx
- 2025年综合类-汽轮机检修-汽轮机本体检修工(高级)历年真题摘选带答案(5卷单选一百题).docx
- 2025年综合类-中学教育心理学-第二章中学生的心理发展与教育历年真题摘选带答案(5卷100题).docx
- 2025年大型设备上岗证-彩色多普勒CDFI医师、技师彩超上岗证历年参考题库含答案解析(5套共100.docx
- 2025年综合类-教师信息技术知识竞赛-团知识竞赛历年真题摘选带答案(5卷单选题100道).docx
文档评论(0)