岑鉴峰嵌入式设计报告_第1页
岑鉴峰嵌入式设计报告_第2页
岑鉴峰嵌入式设计报告_第3页
岑鉴峰嵌入式设计报告_第4页
岑鉴峰嵌入式设计报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北 华 航 天 工 业 学 院课程设计报告(论文)设计课题: Linux系统下数据采集 专业班级:电子信息工程B09212班 学生姓名: 岑鉴峰 指导教师: 王达伟 设计时间:2012.12.102012.12.15 北华航天工业学院电子工程系 嵌入式系统 课程设计任务书姓 名:岑鉴峰专 业:电子信息工程班 级:B09212指导教师:王达伟职 称:讲师课程设计题目:Linux系统下的数据采集已知技术参数和设计要求:1.技术参数(1)了解嵌入式系统实验箱核心板及ADC模块的电路原理图。(2)熟悉linux文件系统,掌握linux字符设备驱动程序开发原理及的流程,理解用户应用程序调用内核设备驱动程

2、序的过程(3)理解无操作系统情况下,把S3C2410作为一个32位的单片机,用片上集成的ADC模块实现数据采集的工作过程。(4)使用通用的Linux操作,编写简单的字符设备驱动程序,完成应用程序调用字符设备驱动程序,深入理解程序执行过程(5)编写ADC模块的设备驱动程序,在实验箱上验证编写的设备驱动程序。利用minicom,显示结果在PC机的终端上显示(不需要开发LCD驱动程序,从而在实验箱上的LCD屏上显示)。2.技术指标:(1)输入电压范围0-3.3V.(2)电压分辨率3.2mv.所需仪器设备:pc机 嵌入式系统实验箱成果验收形式:在minicom超级终端可以显示ADC转换的值参考文献:(

3、1)linux教程 孟庆春,牛欣源编著 电子工业出版社(2)linux操作系统原理与应用 张玲,周旭 西安电子科技大学出版社(3)linux设备驱动程序 魏永明,耿岳等译 中国电力出版社时间安排指导教师: 教研室主任: 年 月 日内容摘要数据采集系统的工作原理就是将被测对象(外部世界或现场)的各种参量(可以是物理量,也可以是化学量,生物量)通过各种传感元件做适当转换后,再经信号调理、采样、量化、编码、传输等步骤,最后送到服务器进行数据处理和存储记录的过程。用于数据采集的成套设备称为数据采集系统(Data Acquisition System,DAS)。数据采集系统一般包括传感器、放大器、滤波器

4、、A/D采样转换电路、微处理器等元件。A/D转换电路在数据采集系统中起着至关重要的作用,它的转换精度和工作可靠度直接关系着整个采集系统的工作性能。本文仅就该数据采集系统中的A/D转换芯片的驱动开发过程加以概述。关键字:嵌入式Linux 数据采集 设备驱动目录内容摘要 .3一、概述5二、方案设计与论证. 5三、系统总体设计 61.系统的硬件 62.驱动程序设计 6(1)驱动程序的LKM实现机制 .6(2)驱动程序的注册与注销 7(3)file_operations结构体 .7(4)中断处理程序 8四、将驱动程序加载入内核 .8五、性能测试与分析 10六、心得体会 10七、参考文献 .11一、概述

5、 设备驱动程序是操作系统内核和机器硬件之间的接口,它为应用程序屏蔽了硬件的细节,将应用程序对设备的操作转化为对相应的设备文件的操作,使应用程序可以象操作普通文件一样,用处理普通文件的标准系统调用来打开、关闭和读写设备。设备驱动程序作为内核的一部分,主要完成如下功能:对设备进行初始化和释放;完成硬件与内核的数据交互;完成内核与应用层的数据交互;对可能出现的错误进行检测和处理。在Linux系统中,打开的设备在内核内部由设备文件结构标识,内核使用file_operations(文件操作)结构访问驱动程序的函数。每个文件都与自己的函数集相关联(通过包含在设备中指向file_operations结构的指

6、针实现),这些操作主要负责系统调用的实现。用户进程利用系统调用对设备文件进行操作时,系统调用通过设备的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数,这就是 Linux的设备驱动程序工作的基本原理。由此可见,编写设备驱动程序的主要工作就是编写file_operations中的子函数,完成对设备的操作。为了实现设备的独立性,Linux把设备分成三种类型:字符设备(character device),块设备(block device)和网络设备(network device)。每类设备都有独特的管理控制方式和不同的驱动程序,这样就可以把控制不同设备的驱动

7、程序与操作系统的其它部分分离开来,不但便于对不同设备的管理,而且为系统中增加和撤销某种设备提供了很多方便。二、方案设计与论证数据采集系统的采集任务在试验箱上完成。采集系统设计为分布式的采集控制系统,系统上位机与现场采集下位机之间的通信基于串口和网络接口。正常运行时,采集下位检测控制器完成数据采集、数据处理、数据存储、数据发送等多种任务。系统具有一定的自检测、自校正能力,能将异常情况传给PC机,以便维护。为了适应各种不同情况下自动检测的要求,整个检测系统采用模块化结构设计,可应用不同的模块组合成不同的应用系统。数据采集系统的基本组成如下图所示。基于嵌入式linux的微机PC机A/D转换器采集点1

8、采集点2A/D转换器图 1 数据采集系统组成示意图三、系统总体设计1.系统的硬件 数据采集系统主要完成实时数据采样、保持、并送入A/D 转换器变成数字信号,然后再对数据进行计算处理、保存,再通过通信接口将实时数据发送到上位机中,同时接收上位机下发的各种命令。其硬件结构如图所示。模拟量输入采样保持器A/D转换模块S3C2410处理控制器电源和复位电路串口电路存储模块图 2 数据采集硬件结构2.驱动程序设计(1)驱动程序的LKM实现机制Linux内核提供了两种机制来开发设备驱动程序,一种是直接把驱动程序编译进内核,成为Linux内核的一部分。另一种是通过LKM(Loadable Kernel Mo

9、dule,即可加载模块化机制)来开发可动态加载和卸载的驱动模块。驱动程序如果编译进内核的话,会增加内核的大小,还要改动内核的源文件,而且不能动态的卸载,不利于调试,所以本系统把驱动程序编写成了 LKM型驱动程序(就是把驱动程序作为一个独立的单元模块,在使用时可以使用insmod命令加载到核心中,用完后使用rmmod命令卸载的那种)。 (2)驱动程序的注册与注销向系统增加一个驱动程序则意味着要赋予它一个主设备号,这一赋值过程是在驱动程序模块的初始化中完成的。s3c2410_adc的初始化入口函数定义如下:_init s3c2410_adc_init(void) devfs_adcraw=devf

10、s_register(devfs_adc_dir,adc,DEVFS_FL_DEFAULT,adc_MAJOR,adc_MINOR,S_IFCHR|S_IRUSR|S_IWUSR,&adc_fops, NULL);在用insmod命令将编译好的模块调入内存时,s3c2410_adc_init(void)函数被调用。在这里,s3c2410_adc_init(void)只做了一件事,它调用函数devfs _register( )向内核注册该字符设备。如果登记成功,返回设备的主设备号,不成功,返回一个负值。在关闭字符设备或块设备时,还需要通过_exit s3c2410_adc_exit(void)从

11、内核中注销设备,并释放主设备号。在用rmmod卸载该驱动模块时,free_irq函数被调用,它释放字符设备在系统字符设备表中占有的表项。_exit s3c2410_adc_exit(void)free_irq(IRQ_ADC_DONE, NULL);(3)file_operations结构体file_operations结构体把系统调用和驱动程序关联起来。这个结构的每一个成员的名字都对应着一个系统调用。static struct file_operations adc_fops = owner: THIS_MODULE, /*adc _fops所属的设备模块*/read: adc_read,

12、/*读取数据*/ioctl: adc_ioctl, /*设备I/O控制*/open: adc_open, /*打开设备操作*/release: adc_release, /*释放操作*/;用户进程利用系统调用在对设备文件进行诸如read、write、open等操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。(4)中断处理程序响应中断并提供相应服务的程序称为中断处理程序。在s3c2410_adc的驱动程序中,中断处理程序的主要功能是,控制s3c2410_adc进行采样,并将采样后的数据放入缓冲区,等待应用程序调用read函

13、数读取。我们把中断处理程序注册到系统中,操作系统在硬件中断发生后,调用驱动程序的中断处理处理程序。四、将驱动程序加载入内核1 准备工作主机和试验箱通信,首先要配置minicom和主机的开发环境。2建立工作目录myjob,把共享文件夹中的adc复制到myjob中,命令如下 #mkdir /root/myjob #cp rf /mnt/hgfs/adc /root/myjob 3.设置linux的共享目录#vi /etc/exports编辑共享目录“/root/myjob 192.168.1.*(rw,no_root_squash)”,存盘退出4.设置pc机的linux的ip地址,启动nfs和po

14、rtmap服务#ifconfig eth0 192.168.1.169#service nfs start#service portmap start 5.设置试验箱的ip地址启动试验箱,在minico命令提示窗口输入命令#ifconfig eth0 192.168.1.163 netmask 255.255.255.0#route add default gw 192.168.1.16.在实验箱上挂载linux主机Ping 192.168.1.169 图 3 ping通结果7.挂载#mount t nfs o nolock 192.168.1.169:/root/myjob /mnt/nfs

15、图 4 挂载成功8.挂载成功,则可以在/mnt/nfs下看到adc的文件图 5 显示的adc9.修改Makefile文件10.对文件进行编译#make11.插入编译的模块#insmod adc.o12.运行测试程序# ./test_adc图 6 最终运行结果五、性能测试与分析经过实际的操作,可以实现预想的结果。实验结果如上图。实验中出现问题总结如下:1.实验箱ping linux主机时失败,可能的原因: linux主机的网络环境配置不正确,系统的防火墙没有关闭。 实验箱与主机的网线是否连接。2.挂载失败重新启动nfs和portmap服务 3.编译出错没有正确安装交叉编译环境或者没有改写Make

16、file文件4在运行测试程序时出现错误测试程序中没有改动设备号六、心得体会本学期为期一周的嵌入式课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,而且使自己的学习目标更加明确,学习方法更加完善,也体会到软件开发的趣味。在这其间又温习了上课其间的实验,把以前未做好的和没有成功的实验进行了完善。特别是在配置主机开发环境这一块,理解了pc机的ip、主机linux的ip,实验箱的ip,三者必须设置在同一个子网内。对linux操作系统有进一步的掌握,熟悉了常用的命令和文件操作过程,在其间也遇到很多的问题,要感谢王达伟

17、老师细心、耐心的指导,使自己收获颇多。通过这次的课设,我了解到,要真真正正的掌握计算机程序还不是一件简单容易的事儿,但真正掌握后,它带给我们的将是无穷的便捷与科技,我喜欢高端便捷的生活。我希望我能做计算机这个万能机器人的主人而不是奴隶,我会努力加油的!感谢学校,感谢王达伟老师给我的帮助,让我的思想、技能又上了一个台阶!感谢!加油!七、参考文献(1)linux教程 孟庆春,牛欣源编著 电子工业出版社(2)linux操作系统原理与应用 张玲,周旭 西安电子科技大学出版社(3)linux设备驱动程序 魏永明,耿岳等译 中国电力出版社(4)从事嵌入式系统培训的实验指导书电子工程系 嵌入式 课程设计成绩评定表专业:电子信息工程 班级:B09212学号: 姓名:岑鉴峰 课题名称Linux系统下的数据采集设计任务与要求设计要求:(1)了解嵌入式系统实验箱核心板及ADC模块的电路原理图。(2)熟悉linux文件系统,掌握linux字符设备驱动程序开发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论