您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 基于嵌入式Linux的温度采集系统的设计与实现
课程设计论文题目基于嵌入式Linux的温度采集系统的设计与实现学院专业班级学号学生姓名指导教师完成时间2016年5月I摘要数据采集系统是信息科学的一个重要分支,它研究信息数据的采集、存储、处理以及控制等。本文提出采用嵌入式Linux作为操作系统,针对三星公司的S5PV210嵌入式处理器,设计一个嵌入式温度采集系统。论文在分析了Linux设备驱动程序的基本工作原理基础上,讨论了开发中经常会碰到的中断处理、拥塞处理、I/O端口,并在此基础上实现了基于S5PV210嵌入式处理器的开、读、写、关外部RAM的字符设备驱动和网络驱动。结合高精度温度传感器DS18B20,实现温度的正确采集,并通过以太网络将数据上传给上位服务器。论文首先介绍了通信网络中各种设备特性、总线结构及传输技术,然后介绍根据单片机与PC机之间的串行通信原理,用ubantu完成数据采集系统的软件设计与实现,为用户提供一个友好的人机界面,对采集系统进行控制并显示采集后的数据。使用串口线传输数据,为数据采集系统和计算机之间的通讯开辟了新的道路。关键词:数据采集系统;以太网络;S5PV210;DS18B20IIDesignandImplementationofanEmbeddedTemperatureAcquisitionSystembasedonLinuxAbstractDataAcquisitionSystemisanimportantbranchofinformationscience,itstudiesthecollection,storage,processingandcontrolofinformationdata.Inthispaper,theembeddedLinuxisusedastheoperatingsystem,andtheembeddedS5PV210processorisdesignedtodesignanembeddedtemperatureacquisitionsystem.BasedontheanalysisoftheLinuxdevicedriverbasedonthebasicworkingprinciplediscusseddevelopmentoftenencounterinterruptioncongestionhandling,processing,I/Oports,andonthisbasis,realizeds5pv210embeddedprocessoropen,read,write,outsidetheramofthecharactersetbydriverandthenetworkdriveon.CombinedwiththehighprecisiontemperaturesensorDS18B20,toachievethecorrecttemperaturecollection,andthroughtheEthernetnetworktouploaddatatothehostserver.Atfirst,thepaperintroducesthecommunicationnetworkcharacteristicsofvariousdevices,busstructureandtransmissiontechnology,andthenintroduceaccordingtotheprincipleofserialcommunicationbetweenMCUandPC,ubantucompletedsoftwaredesignandimplementationofdataacquisitionsystem,toprovideuserswithafriendlyman-machineinterface,tocontroltheacquisitionsystemanddisplayafterthecollectionofthedata.Theuseofserialdatatransmission,forthedataacquisitionsystemandthecommunicationbetweenthecomputerhasopenedupanewpath.Keywords:Dataacquisitionsystem;Ethernet;S5PV210;DS18B20IIII目录第一章需求分析.................................................11.1总体设计.................................................11.2客户端界面设计(app:Linux_client)......................11.3服务器设计(linux)......................................11.4硬件设计.................................................2第二章详细设计.................................................32.1代码调用过程.............................................32.2文件IO(系统库函数)...................................32.3网络编程.................................................42.4内核驱动开发:(模块编程)................................62.5注册字符设备驱动.........................................72.6操作硬件的过程:(裸奔代码)...............................8第三章测试过程................................................103.1测试....................................................10第四章项目拓展................................................114.1项目拓展................................................11附录...........................................................12总结...........................................................231第一章需求分析1.1总体设计图1-1总体设计图1.2客户端界面设计(app:Linux_client)1.作为用户操作的简单界面2.用于发送命令控制硬件3.接收server传输的数据4.显示数据。1.3服务器设计(linux)1.用于接收(app)客户端发送的命令2.处理命令3.转发给硬件4.读取硬件传输数据5.把数据传回(app)客户端21.4硬件设计1.Led灯点亮灯:led1、led2。2.温度传感器把温度数据读取到客户端。3.蜂鸣器用于报警以及音乐播放。3第二章详细设计2.1代码调用过程代码调用过程如图所示:图2-1代码调用图分析代码调用过程:0.准备工作:1.先调用insmodled.ko插入模块2.register_chrdev注册字符设备驱动1.App:fd=open(/dev/led,O_RDONLY);2.drivers:2.sys_open(/dev/led,O_RDONLY)3.由内核为我们匹配,看是否能够找到设备号为249的led-drivers4.如果匹配成功,继续找到structfile_operationsled_fops结构体5.通过结构体找到open函数的入口led_fops.open6.led_open7.arm_init2.2文件IO(系统库函数)1.Open打开文件4返回一个文件描述符2.Read通过文件描述符fd,读取文件3.Write通过文件描述符fd,写文件4.Close(进程结束的时候,会自动关闭,可以不必显示的调用close)阻塞:poll机制解决客户端如果要接收服务器回发的数据,则需要读取网络套接字,此时,客户端涉及到读终端和读服务器,而读终端和读服务器都是会阻塞的,所以调用poll机制解决。intpoll(structpollfd*fds,nfds_tnfds,inttimeout);功能:把所关心的文件描述符加入到structpollfd结构中,告诉内核我要非阻塞的读这个文件描述符,内核为我们判断,如果不阻塞,则相应的状态,参数1:structpollfd{intfd;/*所关心的文件描述符*/shortevents;/*告诉内核我要做什么:POLLIN:非阻塞的读*/shortrevents;/*内核返回的状态*/};参数2:关心的描述符的个数参数3:愿意等待多长时间-1:一直等待0:表示愿意等待的时间返回值:大于0:表示至少有一个已经成功返回==0:表示超时0:表示失败2.3网络编程TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。适用情况:1.适合于对传输质量要求较高,以及传输大量数据的通信。2.在需要可靠数据传输的场合,通常使用TCP协议3.MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议项目需求:1.Linux平台下a)服务器(server)i.等待连接客户端5ii.接收客户端发送的数据[字符串和文件]iii.处理客户端发送的数据和命令iv.发送处理结果给客户端b)客户端i.简单的界面ii.从键盘接收用户输入命令iii.发送数据或者命令给服务器iv.接收服务器返回的结果c)协议:tcp2.实现编程a)TCP四次握手协议b)TCP编程模型图2-2TCP编程模型图3.网络编程所需要的API函数a)服务器i.Socketii.Bindiii.Listeniv.Acceptv.Read/readvi.Closeb)客户端i.Socketii.Connectiii.Read/readiv.Close6通用地址结构structsockaddr{u_shortsa_family;//地址族,AF_xxxcharsa_data[14];//14字节协议地址};Internet协议地址结构structsockaddr_in{sa_family_tsin_family;/*地址族:AF_INET*/in_port_tsin_port;/*端口号*/structin_addrsin_addr;/*IPV4地址internetaddress*/};/*IPv4地址结构*/structin_addr{uint32_ts_addr;/*addressinnetworkbyteorder*/};2.4内核驱动开发:(模块编程)1.模块入口moude_init2.模块出口module_exit3.语法:c语言4.编译(Makefile)a)makeinstallb)makec)cpled.ko/opt/filesystem/test5.执行:驱动模块后缀:led.koa)插入内核:insmodled.kob)查看模块:lsmodc)移除模块:rmmodled72.5注册字符设备驱动staticinlineintregister_chrdev(unsignedintmajor,constchar*name,conststructfile_operations*fops)功能:把设备注册,添加到字符设备的表格中图2-3字符设备驱动图insmodled.ko调用内核驱动模块注册设备到内核字符设备管理注册表中8图2-4打开
本文标题:基于嵌入式Linux的温度采集系统的设计与实现
链接地址:https://www.777doc.com/doc-6212988 .html