




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连民族学院本科毕业设计论文基于ARM的数据采集系统的设计学院系信息与通信工程学院专业通信工程学生姓名学号2007024116指导教师评阅教师完成日期2011610大连民族学院基于ARM的数据采集系统的设计I摘要随着嵌入式技术的迅速发展,嵌入式终端在家居和工业等领域发挥着越来越重要的作用。本设计提出了一种以嵌入式为基础的温度采集系统的设计方案,使得基于嵌入式系统做温度采集终端有较好的人机交互界面和系统高稳定性。本文介绍了整个硬件开发环境,BOOTLOADER的启动流程,LINUX系统的架构,LINUX内核的架构和根文件系统等相关知识。同时,本设计在软件方面主要编写了DS18B20的底层驱动程序,进行了LINUX内核的配置编译,设计了QT顶层应用程序;在硬件方面主要设计了DS18B20的硬件电路,搭建了嵌入式交叉开发环境。通过综合调试最终实现了基于ARM9的嵌入式温度采集系统的设计。基于嵌入式系统的数据采集终端一般都有较好的人机交互界面和软硬件可裁剪的特性,同时,使用MINI2440开发板做嵌入式开发平台具有成本低,功耗低,体积小,稳定性高,发展潜力大的特性。嵌入式系统良好的特性使得整个嵌入式温度采集系统也具备了发展潜力大,功耗低,稳定性高,可视化界面好,便于携带和功能可扩展的特性。关键词嵌入式系统;LINUX内核;温度采集基于ARM的数据采集系统的设计IIABSTRACTWITHTHERAPIDDEVELOPMENTOFEMBEDDEDTECHNOLOGY,EMBEDDEDTERMINALISPLAYINGANINCREASINGLYIMPORTANTROLEINTHEHOMEANDINDUSTRYTHISPAPERPRESENTSATEMPERATURECOLLECTIONSYSTEMWHICHISBASEDONEMBEDDEDSYSTEM,USINGTHEEMBEDDEDTERMINALTODODATACOLLECTIONWILLHAVEABETTERMANMACHINEINTERFACEANDHIGHSTABILITYTHISARTICLEDESCRIBESTHEENVIRONMENTOFHARDWAREDEVELOPMENT,BOOTLOADERBOOTPROCESS,LINUXSYSTEMARCHITECTURE,LINUXKERNELRELATEDARCHITECTURE,ROOTFILESYSTEMARCHITECTUREANDOTHERRELATEDKNOWLEDGEATTHESAMETIME,THISDESIGNMAINLYCOMPLETEDTHEPROGRAMMINGOFDS18B20SBOTTOMLEVELDRIVER,THECONFIGURATIONANDCOMPILATIONOFTHELINUXKERNELANDTHEDESIGNOFQTTOPLEVELAPPLICATIONPROGRAMINSOFTWAREINHARDWAREMAINLYIMPLEMENTEDDESIGNOFTHEDS18B20SCIRCUITANDBUILDTHECROSSTOOLDEVELOPMENTENVIRONMENTTHROUGHSYNTHESIZEDDEBUGGINGTHISPROJECTFINALLYREALIZEDTHEDESIGNOFTHETEMPERATURECOLLECTIONSYSTEMWHICHWASBASEDONARM9EMBEDDEDSYSTEMTHEDATACOLLECTIONTERMINALBASEDONEMBEDDEDSYSTEMGENERALLYHASTHEFEATURESOFBETTERHUMANMACHINEINTERFACEANDHARDWAREANDSOFTWARECANBECUT,WHILEUSINGTHEMINI2440DEVELOPMENTBOARDTODOAEMBEDDEDDEVELOPMENTPLATFORMWILLHAVETHEPROPERTIESOFLOWCOST,LOWPOWERCONSUMPTION,SMALLSIZE,HIGHDEVELOPMENTPOTENTIALGOODPERFORMANCEOFTHEEMBEDDEDSYSTEMSMAKESTHEWHOLETEMPERATURECOLLECTIONSYSTEMALSOHASTHEHIGHPOTENTIALFORDEVELOPMENT,LOWPOWERCONSUMPTION,HIGHSTABILITY,GOODVISUALINTERFACE,EASYTOCARRYANDFUNCTIONCANBEEXPANDEDFEATURESKEYWORDSEMBEDDEDSYSTEMLINUXKERNELTEMPERATURECOLLECTIONSYSTEM基于ARM的数据采集系统的设计III目录摘要IABSTRACTII1绪论111选题背景和意义112本文主要研究内容113本章小结22MINI2440开发板的介绍321S3C2440处理器322MINI2440开发板的接口资源3221硬件资源特性3222接口资源及时钟特点423基于MINI2440的开发环境的搭建4231搭建嵌入式交叉开发环境4232嵌入式开发的软件环境53DS18B20驱动731系统硬件整体设计732DS18B20驱动的编写733数据采集电路9331DS18B20简介9332DS18B20性能指标10333测温接口电路及工作时序1034DS18B20驱动编写11341读DS18B2011342写DS18B2012343DS18B20的控制13344打开释放14345DS18B20的操作函数14346DS18B20设备的注册和注销1535DS18B20驱动程序的测试154BOOTLOADER相关知识1741BOOTLOADER背景知识17基于ARM的数据采集系统的设计IV42SUPERVIVI1743本章小结195LINUX内核2051LINUX系统简介2052LINUX2629内核移植到MINI24402253配置编译生成ZIMAGE2254本章小结246QT应用程序的开发及调试2561QT的简介102562QT测温应用程序27621需求分析27622程序设计2863本章小结317根文件文系统的介绍3371文件系统相关知识3372ROOT_QTOPIA文件系统介绍348综合调试40结论44参考文献45附录A程序清单46附录B电路原理图58附录C实物图59致谢60基于ARM的数据采集系统的设计11绪论11选题背景和意义目前我国温室大棚技术已经在全国范围内被广泛应用,这一技术的诞生解决了北方人冬天没蔬菜的难题。温室大棚技术其关键技术在于对温室的温度进行严格控制,只有严格的温度控制才能保证棚内植物正常生长,而如何实现对温度的实时控制,显而易见温度采集作为大棚温控是一个不可忽略的环节,然而传统的温度采集系统一般稳定性不高,而且没有一个良好的人机交互界面,但是如果使用PC机作为温度采集系统就会大大提高生产成本,而且安装放置也很不方便。基于这一背景,本设计旨在通过设计一个基于ARM的嵌入式温度采集系统在成本高和稳定性差之间寻求一个平衡点。随着电子技术的不断发展,基于ARM的嵌入式系统已经在消费,工业控制,医疗卫生甚至是军事军工等领域得到了广泛的应用,并且将会在更广泛的领域中占有更多的市场份额。嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适应于系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统1。现在的嵌入式系统有很多种类,但最为成熟的是以ARM为基础的嵌入系统。基于ARM的嵌入式系统有诸多优点是传统电子系统无法比拟的,利用嵌入式开发本设计可以开发出具有良好的人机交互界面的实时系统,同时嵌入式系统最大的优点就是软硬件可裁剪,依据自己系统的需要可以进行灵活的软硬件设计开发,而且基于ARM的嵌入式系统开发成本低,而且系统稳定性高,功耗低,体积小,并且能够应用于多种应用场合。这些优点就大大扩大了基于ARM的嵌入式系统的应用范围。由于MINI2440是一款接口丰富,价格低廉,系统稳定性高,功耗小,性价比极高的ARM9系列开发板。所以本设计采用MINI2440为硬件开发平台。通过设计嵌入式温度采集一方面可以解决一些实际问题,但更为重要的是通过本设计是对自己大学四年学习的一个检验,由于大学期间没有学习有关嵌入式的相关知识,通过自学嵌入式开发的相关知识,让自己对嵌入式有一个深入的理解,为以后的学习工作奠定基础。12本文主要研究内容本设计主要研究的内容是利用MINI2440开发板通过DS18B20实现温度的实时采集并最终通过QT界面显示温度值,通过获取内核时间显示实现实时温度显示。具体设计内容如下基于ARM的数据采集系统的设计2首先,本设计详细介绍了MINI2440开发板的硬件环境和丰富的接口资源,论证以MINI2440开发平台做嵌入式温度采集系统的可行性和系统优点,以及对MINI2440开发板的交叉开发环境的搭建也进行了详细的介绍。其次,本文将对LINUX内核的架构和相关操作做一个简单的介绍,以及针对MINI2440开发板如何进行LINUX内核的移植,裁剪,配置和编译等关键环节做了详细的说明。第三,通过分析设计要求,结合MINI2440的硬件结构编写DS18B20的驱动程序,同时通过编写驱动测试程序,上机调试验证驱动的正确性。第四,介绍根文件系统的相关知识,了解根文件系统整体结构。最后,在验证硬件驱动的正确性的基础上实现人机交互界面的应用QT程序的开发,然后编译生成内核,制作根文件系统镜像,最后实现系统的整体综合调试。在硬件方面,主要实现了DS18B20的硬件电路的设计,可行性的论证以及交叉开发环境的搭建;在软件方面,主要是实现了D218B20的底层驱动的编写和顶层应用程序的编写,以及LINUX内核的移植,配置,编译和ZIMAGE的生成,同时还有根文件系统镜像制作等相关内容。13本章小结本章对基于ARM9做温度采集系统的意义做了总体概括,并对嵌入式开发的应用情况做了简单的介绍。另外,本文还详细介绍了本设计的主要内容及整个设计的开发流程。基于ARM的数据采集系统的设计32MINI2440开发板的介绍21S3C2440处理器MINI2440采用了S3C2440作为处理器2。S3C2440采用了ARM920T的内核,013M的CMOS标准宏单元和存储器单元。其功耗低,体积小且静态设计特别适合于对成本和敏感性有特殊要求的实际应用。其总线采用了新的总线架构AMBAADVANCEDMICROCONTROLLERBUSARCHITECTURE。S3C2440其特点是CPU是一个16/32位ARM920T的RISC处理器,ARM920T具备MMU,AMBA,BUS以及HARVARD高速缓冲体系结构。这一结构具有独立的16KB指令CACHE和16KB数据CACHE每个都是由具有8字长的行组成。通过一套完整的通用系统外设,S3C2440无需配置额外的组也同时减少整体系统成本。S3C2440集成以下片上功能列出部分内核采用12V供电,存储器采用33V独立供电,外部IO口采用33V独立供电;内置外部存储器控制器SDRAM控制和芯片选择逻辑;3个通用异步串行端口;LCD控制器;SD卡接口;主从USB接口;AC97解码器接口;130个通用I/口和24通道外部中断源;具有普通,慢速,空闲和掉电模式;PLL片上时钟发生器;S3C2440支持从NANDFLASH启动,NANDFLASH具有容量大,比NORFLASH价格等特点。用户可以选择将引导代码和操作系统镜像存放在外部的NANDFLASH中,并从NANDFLASH启动,当处理器在这种模式下开电复位时,内置的NANDFLASH将访问接口控制器并引导代码自动加载到内部SRAM并且运行。之后SRAM中的引导程序将操作系统镜像加载到SDRAM中运行。启动后释放4KB的SRAM,以便用于其他用途。22MINI2440开发板的接口资源221硬件资源特性3CPU处理器三星S3C2440A,主频400MHZ,最高可达533MHZ;SDRAM内存在板64MSDRAM,32BIT数据总线,SDRAM时钟频率高达基于ARM的数据采集系统的设计4100MHZ;FLASH存储;在板256M/1GBNANDFLASH,掉电非易失用户可定制64M/128M/256M/512M/1G在板2MNORFLASH,掉电非易失,已经安装BIOS;LCD显示板上集成4线电阻式触摸屏接口,可以直接连接四线电阻触摸屏,标准配置为统宝35寸真彩LCD,分别率240X320,带触摸屏;222接口资源及时钟特点1个100M以太网RJ45接口采用DM9000网络芯片;3个串行口;1个主USB接口;1个从USBB型接口;1个SD卡存储接口;1个立体声音频输出接口,一路语音输入接口;1个20MM间距10针JTAG接口;4个USERLED;6组USERBUTTONS;1个PWM控制蜂鸣器;1个可变电阻器,用于对AD模数转换进行测试;1个I2C总线AT24C08芯片,用于对I2C总线进行测试;1个20MM间距20引脚摄像头接口;电源接口5V,带电源开关和指示灯;1个34引脚20MMGPIO接口;1个40引脚20MM系统总线接口;12M无源晶振;内部实时时钟(带后备锂电池);23基于MINI2440的开发环境的搭建231搭建嵌入式交叉开发环境嵌入式系统的开发一般采用“宿主机目标机”交叉开发方式4。首先,利用宿主上丰富的资源以及良好的开发环境来进行开发和仿真目标机上的软件,再通过HJTAG口,UTAR口或者是以太网接口将生成的代码下载到目标机上进行运行。基于ARM的数据采集系统的设计5本设计宿主机主要是使用装有REDHAT5企业版LINUX操作系统的PC机,而目标机就是MINI2440开发板。组成架构如图21所示。宿主机PC机目标机MINI2440开发板串口、以太网接口、USB接口图21嵌入式开发交叉环境构架在调试阶段会用到NFS(虚拟文件系统)方式挂载根文件系统,所以要设置好NFS服务器,具体设置如下1设置共享目录运行命令VI/ETC/EXPORTS编辑NFS服务的配置文件注意第一次用VI打开时该文件是没有内容的,添加如下内容/OPT/FRIENDLYARM/MINI2440/ROOT_QTOPIARW,SYNC,NO_ROOT_SQUASH其中/OPT/FRIENDLYARM/MINI2440/ROOT_QTOPIA表示NFS共享目录,它可以表示同开发宿主机共享目录ROOT_QTOPIA作为开发板的根文件系统通过NFS挂载;表示所有的客户端都可以挂载此目录;RW表示挂接此目录的客户端对该目录有读写的权力;NO_ROOT_SQUASH表示允许挂接此目录的客户端享有和主机ROOT一样的权力;通过命令启动和停止NFS服务2运行命令/ETC/INITD/NFSSTARTMOUNTTNFSLOCALHOST/OPT/FRIENDLYARM/MINI2440/ROOTFS_QTOPIA/MNT/OPT/FRIENDLYARM/MINI2440/ROOTFS_QTOPIA。使用这个命令可以停止NFS服务/ETC/INITD/NFSRESTART基于ARM的数据采集系统的设计6232嵌入式开发的软件环境本小节将解压安装开发学习过程所用到的全部源代码以及其他一些小工具,这包括LINUX内核源代码;嵌入式图形界面QROPIA220源代码分为X86和ARM平台两个版本;BUSYBOX113源代码;LINUX编程示例源代码;用以启动LINUX的BOOTLOADER之VBOOT;其他开源的BOOTLOADER适用于LINUX其他开源软件源代码;目标文件系统映象制作工具MKYAFFSIMAGE;图形界面的LINUXLOGO制作工具LOGOMAKER;基于ARM的数据采集系统的设计73DS18B20驱动31系统硬件整体设计由于DS18B20是单总线数字器件,同时MINI2440提供了丰富的I/O接口资源;另外,DS18B20器件的供电范围是33V50V,MINI2440开发板的I/O接口电压是33V,所以也不存在电平不兼容的问题。综合以上可知使用MINI2440开发板结合DS18B20做温度采集系统理论上行得通。本设计硬件系统方面比较简单,系主要由两大部分组成一是系统控制部分,二是温度采集部分。其中系统控制部分又包括以下几个部分处理器、复位模块、显示模块、外部接口模块等四大部分组成。而温度采集本分主要由DS18B20电路组成。具体组成如图31所示。CPU及存储器显示模块复位模块测温模块其他接口I/O接口图31测温系统硬件框图32DS18B20驱动的编写硬件驱动大体可以分为一下几类网络接口驱动,字符设备驱动,块设备驱动5。字符设备是指按字节来访问的设备,字符驱动就负责驱动字符设备,这样的驱动通常实现READ、WRITE、OPEN、和CLOSE的调用。块设备是指按多数目字节进行访问的设备,该设备与字符设备的区别在于与内核的接口不同。进行网络数据访问的接口设备就叫做网络接口设备,它一般通过套接字来实现。LINUX用户一般是通过操作设备文件来访问和操作各种设备的,本设计可以通过图32有一个深刻的认识。所以用户想要使用DS18B20进行温度采集时,只需要对设备基于ARM的数据采集系统的设计8文件DS18B20进行打开、控制、读、写、关闭等一系列操作就可以控制DS18B20进行温度采集,这也是顶层应用文件如何使用底层驱动的一个实例。在设备描述中设备号是起着非常重要的中用作用,设备号又分为主次设备号。设备号使得设备文件和驱动程序之间建立起对应关系,其中,主设备号是用来区分不同种类设备,而此设备号是用来区分同类不同设备。应用程序字符设备文件文件系统块设备文件套接字字符设备驱动块设备驱动协议栈网络设备驱动字符设备块设备网络设备图32LINUX用户对各类设备的访问流程在字符设备中存在一种特殊的字符设备混杂设备,这类设备的主设备号都是10,次设备号通过函数调用可已进行动态分配。本设计DS18B20的驱动就被划归为字符设备中的混杂设备。LINUX中使用MISC_REGISTES,MISC_DEREGISTER来注册和注销设备TRUCTMISCDEVICE来描述一个混杂设备STRUCTMISCDEVICEINTMINORCONSTCHARNAMECONSTSTRUCTFILE_OPERATIONSFOPSSTRUCTLIST_HEADLISTSTRUCTDEVICEPARENTSTRUCTDEVICETHIS_DEVICEMISC设备注册INTMISC_REGISTERSTRUCTMISCDEVICEMISC/注册设备获取次设备号基于ARM的数据采集系统的设计9MISC设备注销INTMISC_DEREGISTERSTRUCTMISCDEVICEMISC说明上面的结构体是注册混合设备所需要的参数。主要有MINOR次设备号,所有的MISC设备共用一个主设备号,所以注册MISC设备时只要次设备号就可以了。利用次设备号来区分设备的。NAMEMISC设备名。FOPSMISC设备文件操作结构体,其它三个参数很少使用。33数据采集电路331DS18B20简介6本设计使用于由美国达拉斯公司设计生产的单总线结构的温度传感器DS18B20。起初达拉斯公司也生产过一种温度传感器DS1820,DS18B20继承DS1820一些特性并经过改进提升成为新一代数字单总线智能温度传感器。而相对于传统的热敏电阻,它可以直接读取测量温度值,并可以根据实际需要编程实现9到12位的数字值读数方式,并在很短的时间内完成9和12位数字值的转换,同时,信息的传输仅仅需要一条总线,实现了理论上的单总线传输,这样就大大节约了主系统的接口资源。实现温度的9和12位数字值的转换需要消耗一定的功率,而这些功率都是由单总线来提供的,也可连接DS18B20的总线供电,因此不需要额外的电源供应,这种设计大大减少I/O资源。因而使用DS18B20可以使系统结构变得简单,稳定,可靠性高。而其简单的结构,单总线结构和经济实用的特点,很容易实现多点温度采集。DS18B20的传感器测量温度范围55125,在1085范围内。测量场的温度值直接通过数字单总线传输,用符号扩展的16位数字量方式串行输出,在此基础上就大大提高了系统的抗干扰能力。因此,数字单总线器件DS18B20可应用的场合十分广泛。DS18B20可广泛应用于工业,民用,军事和教学等领域内的温度测量以及温度测量和控制仪表设备的生产。图33DS18B20实物图基于ARM的数据采集系统的设计10332DS18B20性能指标单总线接口方式DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;可用数据线供电,电压范围3055V,所以该长安其与开发板I/O口电平不兼容问题;测温范围55125,基本适应于各种环境温度的测量;温度读取方式通过编程控制可以实现912位的数字读数方式选择;用户可通过编程自设定非易失性的报警上下限值,实现温度预警;DS18B20可以实现多点测温,很容易实现温度测量网络;负压特性电源极性接反时,由于在在电源和地之间加了一个二极管,所以温度计不会因发热而烧毁。333测温接口电路及工作时序1测温模块的硬件电路如下图123J7DS8B0VCGN4KEST图34DS18B20电路图2DS18B20的时序DS18B20的时序主要包括两个方面一是DS18B20的复位时序,在系统发出复位时序后,DS18B20会发出才能在信号,具体如图35所示;二是DS18B20读写时序,具体如图36所示。基于ARM的数据采集系统的设计11图35DS18B20的复位时序和存在信号图36DS18B20的读写时序34DS18B20驱动编写341读DS18B20这部分程序主要是实现开发板从DS18B20读一个字节的数据。在函数内部主要是实现对读DS18B20读时序的描述,并通过COPY_TO_USERBUFF,CHARDDATIFSIZE2SIZE1FORI0I1S3C2410_GPIO_CFGPINDSDATA,DATAOUTP/配置数据总线(GPF0)为输出模式S3C2410_GPIO_SETPINDSDATA,0/拉低总线UDELAY4/延时4USS3C2410_GPIO_SETPINDSDATA,1/拉高总线S3C2410_GPIO_CFGPINDSDATA,DATAINP/设定数据总线(GPF0)为输入模式IFS3C2410_GPIO_GETPINDSDATA/如果读到数据DDAT|0X80/把最高位取零UDELAY80/延时70USS3C2410_GPIO_CFGPINDSDATA,DATAOUTP/配置数据总线为输出模式S3C2410_GPIO_SETPINDSDATA,1/拉高UDELAY3/1USS3C2410_GPIO_CFGPINDSDATA,DATAINP/配置数据总线为输入模式IFCOPY_TO_USERBUFF,RETURNSIZE342写DS18B20这部分程序主要实现开发板向DS18B20写一个字节的命令,函数内部主要实现对写时序的描述,同时通过函数COPY_FROM_USERBUFF,CHARDDAT0IFSIZE2SIZE1IFCOPY_FROM_USERRETURN1S3C2410_GPIO_CFGPINDSDATA,DATAOUTPFORI0I70USS3C2410_GPIO_SETPINDSDATA,1UDELAY3/1USDDAT1S3C2410_GPIO_CFGPINDSDATA,DATAINPRETURNSIZE343DS18B20的控制在这部分程序代码中主要是实现DS18B20的复位过程,代码主要是描述复位时序。STATICINTDS18B20_IOCTLSTRUCTINODEINODE,STRUCTFILEFILE,UNSIGNEDINTCMD,UNSIGNEDLONGARG基于ARM的数据采集系统的设计14INTRES0SWITCHCMDCASEDS18B20_RESET/复位时序S3C2410_GPIO_CFGPINDSDATA,DATAOUTPS3C2410_GPIO_SETPINDSDATA,1UDELAY27S3C2410_GPIO_SETPINDSDATA,0UDELAY500/500USS3C2410_GPIO_SETPINDSDATA,1UDELAY27S3C2410_GPIO_CFGPINDSDATA,DATAINPUDELAY60RESS3C2410_GPIO_GETPINDSDATAMSLEEP3DEFAULTRETURNEINVALRETURNRES344打开释放这部分代码主要是实现DS18B20设备的打开,和使用后设备的关闭释放。STATICINTDS18B20_OPENSTRUCTINODEINODE,STRUCTFILEFILE/设备打开初始化设备,标明次设备号S3C2410_GPIO_CFGPINDSDATA,S3C2410_GPB0_INP/CPU从数据总线上读取数据RETURN0STATICINTDS18B20_RELEASESTRUCTINODEINODE,STRUCTFILEFILE/设备关闭RETURN0345DS18B20的操作函数其实这也是顶层应用文件对硬件操作的一个接口,只要顶层文件对相应函数进行调用也就是对DS18B20的操作。基于ARM的数据采集系统的设计15STATICSTRUCTFILE_OPERATIONSDS18B20_FOPSOWNERTHIS_MODULE,OPENDS18B20_OPEN,/应用程序调用执行OPEN时驱动设备文件也要执行DS18B20_OPENRELEASEDS18B20_RELEASE,/应用程序调用执行RELEASE时驱动设备文件也要执行DS18B20_RELEASEREADDS18B20_READ,/应用程序调用执行READ时驱动设备文件也要执行DS18B20_READWRITEDS18B20_WRITE,/应用程序调用执行WRITE时驱动设备文件也要执行DS18B20_WRITEIOCTLDS18B20_IOCTL,/应用程序调用执行IOCTL时驱动设备文件也要执行DS18B20_IOCOTL346DS18B20设备的注册和注销STATICINT_INITDEV_INITVOIDINTRETRETMISC_REGISTERPRINTKDEVICE_NAME“TINITIALIZEDN“RETURNRETSTATICVOID_EXITDEV_EXITVOIDMISC_DEREGISTER35DS18B20驱动程序的测试在编写了DS18B20的驱动之后,本设计必须验证驱动的正确性。在这种情况下,通过编写简单的应用程序来验证驱动程序在开发板上能否实现测温。这里本设计使用NFS挂载根文件系统的方式来验证,具体的验证步骤如下1编译内核模块,把DS18B20的驱动以内核模块的方式进行编译,可以执行以下命令MAKEMODULESARCHARMCROSS_COMPILEARMLINUX2编译完成后会产生KO文件,编译应用程序APPC产生可执行文件APP,把18B20KO和APP拷贝到NFS共享目录下基于ARM的数据采集系统的设计16/OPT/FRIENDLYARM/MINI2440/ROOT_QTOPIA下。3通过SUPERVIVI命令行来挂载根文件系统A通过HJTAG把SUPERVIVI烧写到开发板,启动串口终端,重启开发板,进入SUPERVIVI命令提示界面。B按下X进行分区,然后下载SUPERVIVI和LINUX内核。C把开关拨向NANDFLASH,给板上电,按复位键同时按下K1K6任何一个键就可以进入VIVI命令提示界面,按下Q进入VIVI命令行模式。并且设定电脑NFS共享目录VI/ETC/EXPORTS并修改共享目录在文件中加入/OPT/FRIENDLYARM/MINI2440/ROOT_QTOPIARW,SYNC,NO_ROOT_SQUASH,SERVICENFSRESTART重启NFS服务。D输入VIVI命令PARAMSETLINUX_CMD_LINE“CONSOLETTYSAC0ROOT/DEV/NFSNFSROOT192168010/OPT/FRIENDLYARM/MINI2440/ROOT_QTOPIAIP19216801319216801019216801025525500SBC2440ETH0OFF“4通过串口打开超级终端,在根目录下安装DS18B20驱动模块FRIENDLYARMINSMOD18B20KO5运行测试程序FRIENDLYARM/APP运行可执行文件APP后会出现下图的测试效果,如图37所示。图37DS18B20驱动测试结果图基于ARM的数据采集系统的设计174BOOTLOADER相关知识41BOOTLOADER背景知识一个嵌入式系统从软件角度来看分为三个层次第一是引导加载程序包括固化在固件中的BOOT程序和BOOTLOADER两部分;第二是LINUX内核,特定于嵌入式平台定制内核;三是文件系统,包括系统命令和应用程序。如下图41所示。简单地说,BOOTLOADER就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,本设计可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的运行环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BOOTLOADER来完成。比如在一个基于ARM9的嵌入式系统中,系统在上电或复位时通常都从地址0X00000000处开始执行,而在这个地址处安排的通常就是系统的BOOTLOADER程序。BOOTLOADERLINUXKERNELROOTFILESYSTEM图41嵌入式系统软件层次结构42SUPERVIVI对于开发板MINI2440有多种BOOTLOADER,例如UBOOT,SUPERVIVI,VBOOT等等。他们之间的区别就是不同的BOOTLOADER可以引导不同内核。像SUPERVIVI能启动ZIMAGE,UBOOT能启动UIMAGE,而ZIMAGE和UIMAGE的不同之处就在于在编译时生成内核的文件头不同。本设计采用的是SUPERVIVI作为BOOTLOADER来引导LINUX内核。基于ARM的数据采集系统的设计18图42开发板内存分配SUPERVIVI和许多BOOTLOADER一样它的启动也包括两个部分STAGE1和STAGE2。STAGE1主要实现的是硬件的初始化同时为STAGE2准备内存空间,并将STAGE2复制到内存中并设置堆栈,然后跳转到STAGE2。STAGE1包括以下步骤初始化硬件为BOOTLOADER的STAGE2准备RAM空间拷贝BOOTLOADER的STAGE2到RAM空间设置堆栈跳转到STAGE2的C入口点STAGE2包括以下步骤初始化本阶段要使用的设备将内核和根文件系统从FLASH读到RAM中调用内核基于ARM的数据采集系统的设计1943本章小结本章节主要介绍了BOOTLOADER,从系统宏观地分析了BOOTLOADER的作用,同时也具体地分析了BOOTLOADER的启动流程。在此基础上更加具体地还分析了BOOTLOADER的每个关键阶段都做了什么工作。基于ARM的数据采集系统的设计205LINUX内核51LINUX系统简介7LINUX是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类UNIX操作系统。LINUX最早是由芬兰黑客LINUSTORVALDS为尝试在英特尔X86架构上提供自由免费的类UNIX操作系统而开发的。该计划开始于1991年,在计划的早期有一些MINIX黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。技术上说LINUX是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于LINUX内核的完整操作系统叫作LINUX操作系统,或是GNU/LINUX。USERAPPLICATIONSGNUCLIBRARYSYSTEMCALLINTERFACEKERNEL结构体系相关代码用户空间内核空间图51LINUX系统架构由上图可知LINUX系统构架是由用户空间和内核空间两部分组成,之所以分为两部分主要是为了实现系统稳定性。内核空间和用户空间是程序执行的两种不同状态,通过系统调用和硬件中断能够实现从用户空间到内核空间的转移。基于ARM的数据采集系统的设计21LINUX内核的主要模块或组件分以下几个部分存储管理、CPU和进程管理、虚拟文件系统、设备管理和驱动、网络通信,以及系统的初始化引导、系统调用等。具体如图42所示系统调用接口(SYSTEMCALLINTERFACE)进程管理PROCESSMANAGEMENT虚拟文件系统VRITUALFILESYSTEM内存管理MEMORYMANAGEMENT网络协议栈NETWORKSTACK结构ARCH设备驱动DEVICEDRIVERS图52LINUX内核架构系统调用接口SCI层为用户提供了一套标准的系统调用函数来访问LINUX内核,搭起了用户空间到内核空间的桥梁。进程管理主要是实现了进程的创建,进程的停止,并控制进程间的相互通信,进程管理还包括进程如何共享CPU,即进程的调度。内存管理主要是实现多个进程安全有序地共享内存。网络协议栈主要为LINUX系统提供了丰富的网络协议。虚拟文件系统VFS隐藏了各种文件系统的细节,为文件操作提供统一的接口,如图43所示。设备驱动LINUX内核中很多代码都在设备驱动中,它们控制特定的硬件设备。基于ARM的数据采集系统的设计22虚拟文件系统应用程序EXT2FATNFS设备文件图53虚拟文件系统提供统一文件接口52LINUX2629内核移植到MINI244081首先到WWWKERNELORG下载一套没有经过移植的LINUX2629源代码,并解压到相关目录下,进入目录LINUX2629;2对内核根目录下的MAKEFILE文件进行相应修改,修改CPU类型为ARM,编译工具改为ARMLINUX,ARCHARM,CROSS_COMPILEARMLINUX;3修改时钟频率VIARCH/ARM/MACHS3C2440/MACHSMDK2440CS3C24XX_INIT_CLOCKS12000000;4修改对NAND的分区信息。要让内核知道NANDFLASH的分区信息,设置成跟BOOTLOADER一致;5添加DM9000网卡驱动和其他设备驱动;6用S3C2410的默认配置文件来进行基础配置然后使用MAKEMENUCONFIG来详细配置;7编译内核;53配置编译生成ZIMAGE9使用已经移植好的LINUX2629内核进行ZIMAGE的生成,在此过程中通过内核编译的方式把DS18B20的驱动加载到内核当中,而不是使用内核模块的方式加载驱动程序,然后通过内核配置,编译最后生成ZIMAGE。具体过程如下1复制DS18B20驱动程序18B20C到/LINUX2629/DRIVERS/MISC/下,执行如下命令CP/18B20C/LINUX2629/DRIVERS/MISC基于ARM的数据采集系统的设计232编辑/LINUX2629/DRIVERS/MISC/下的KCONFIG和MAKEFILE执行以下命令VI/LINUX2629/DRIVERS/MISC/KCONFIG然后再一个位置添加以下内容CONFIG18B20BOOL“18B20”3VI/LINUX2629/DRIVERS/MISC/MAKEFILE然后增加以下内容OBJCONFIG_18B2018B20O4使用S3C2410的配置文件进行配置。5使用MAKEMENUCONFIG进行详尽配置,执行以下命令6MAKEMENUCONFIGARCHARM然后进入图形窗口进入DEVICEDRIVERS,在高目录下使用空格选择MISCDEVICE进入该目录下本设计可以看到18B20这个新设备,通过空格选择该驱动,退出并保存。7编译内核,执行以下命令完成内核编译MAKEZIMAGEARCHARMCROSS_COMPILEARMLINUX编译完成后本设计可以在/LINUX2629/ARCH/ARM/BOOT下可以看到编译生成的ZIMAGE。通过以上操作DS18B20的驱动已经被编译到内核当中,只要我饿们把内核下载到开发板下,在开发板的DEV目录下可以看到设备DS18B20,这就说明设备添加成功,如图54所示。基于ARM的数据采集系统的设计24图54添加设备DS18B2054本章小结在本章节本设计主要介绍了一些LINUX系统和LINUX内核的相关知识,以及怎样把LINUX内核移植到开发板上,但本设计得重点在于如何配置LINUX内核,并且编译内核以及通过编译内核来编译DS18B20驱动程序。基于ARM的数据采集系统的设计256QT应用程序的开发及调试61QT的简介10QT是事实上的标准C框架,是一种用于高性能的跨平台软件开发的工具。除了拥有扩展的C类库以外,QT还提供了一系列简单的可以用来直接进行快速编写应用程序的工具。此外,QT还具有跨平台能力并可以提供国际化支持,这一切确保了QT应用程序的应用领域是极为广泛的。自1995年以来,QTC框架一直是商业应用程序的核心。无论是大型跨国公司和大型组织(例如ADOBE、BOEING、GOOGLE、IBM、MOTOROLA、NASA、SKYPE)、还是无数小型企业和组织都在使用QT。QT的类功能全面,提供一致性接口,更易于学习使用,可减轻开发人员的工作负担、提高编程人员的效率。另外,QT一直都是完全面向对象的。QT提供了一系列标准窗体,通过使用这些部件,可以创作出具有良好的人机交互界面的应用文件。QT窗体具有简单,易用,灵活的特点。在遇到特殊情况时,通过派生新子类来满足设计要求。窗体是用于创建可视化界面的一些可视化元素的集合。这样的例子很多,例如按钮、菜单、滚动条、消息框以及应用程序窗口等。QT的窗体在“控件”或“容器”之间没有明显的区分。所以所有窗体既可以当做“控件”来使用、又可以作为“容器”来使用。当然用户可以自定义窗口,这就需要通过已有QT窗体派生子类也可以通过新建窗体来实现。标准窗体属于QWIDGET类或者其子类,而自定义窗体则可通过从标准窗体派生子类并重写虚函数的方式来创建。信号和槽为对象之间的通信提供了便利条件。它们易于理解和使用,并受到QTDESIGNER的全面支持。GUI应用程序要对用户操作做出响应。例如,当用户单击菜单项目或者工具栏按钮时,GUI应用程序便会执行某段程序。其实,本设计更希望任何一类对象均可彼此互相进行信息传递。编程人员工作就是将事件与相关相关程序相关联。老的开发工具套件TOOLKIT使用的机制不是类型安全的,例如,容易引起系统崩溃,不够灵活性而且不是面向对象的。奇趣科技公司提出了一种“信号和插槽”机制来解决以上问题。“信号和插槽”机制是一种功能强大的对象间进行信息传递机制,完全可以取代传统的开发套件所使基于ARM的数据采集系统的设计26用的粗糙的回调和消息映射。信号和槽机制相当灵活,而且使用C来实现了完全面向对象。若是使用原有的回调机制,将某一段程序与按钮关联起来,那么必须将函数指针传输给该按钮。当单击此按钮时,系统便会调用此函数。然而对于传统的工具套件而言,调用此函数时,它不确保将正确类型的参数传递,这样就很有可能导致系统崩溃。回调方法的另一问题是它将GUI元素与功能紧紧地联系在一起,这样就增加进行独立开发类的难度,从而导致开发不够灵活。但QT的“信号和插槽“机制却与传统调用方法不同。当有事件发生时,将会触发QT窗体发射某种信号。例如,当单击某一按钮时,该按钮将会发出“CLICKED”信号。编程人员要想连接一个信号可以通过创建一个“插槽”函数来实现。并通过调用CONNECT函数把信号与插槽连接起来。QT的“信号和槽”机制对各类彼此之间感知没有要求,这样就可以更轻松地开发极易重新使用的类。由于信号和插槽都属于类型安全的,因此,类型错误不会被报告为警告从而不会引起系统崩溃。在运行QT应用程序的过程中,可以随时添加连接或者移除连接。另外,可以为在发出信号时执行或者将连接设置为排队稍后执行,可以在不同的线程的对象之间建立连接。信号和插槽是通过平滑的扩展C语法并充分利用了C的面向对象特性实现。信号和插槽是类型安全的,可以重载,也可以重新实现,可以出现在类的公有区、保护区或私有区。若要使用信号和槽,必须继承QOBJECT或其子类,并在类的定义中包括Q_OBJECT宏。信号在类的“信号区”声明,而插槽则是在“公有槽区”、“保护槽区”或“私有槽区”中声明的。开发人员既可以创建“对话框”样式的应用程序、又可以创建带有菜单、工具栏、气球帮助以及其他标准功能的“主窗口”样式的应用程序。QTDESIGNER提供了多种窗体模板,开发人员可以创建自己的模板,确保某一应用程序或某一系列应用程序界面的一致性。编程人员可以创建自己的自定义窗体,这些窗体可以轻松与QTDESIGNER集成。QTDESIGNER支持采用基于窗体的方式来开发应用程序。窗体是由用户界面UI文件来表示的,这种文件既可以转换成C并编译成一个应用程序,也可以在运行时加以处理,从而生成动态用户界面。QT的构建系统能将用户界面的编译构建过程自动化,使设计过程更轻松。基于ARM的数据采集系统的设计2762QT测温应用程序621需求分析根据毕设要求,要设计一个直观的温度采集界面,能够实时显示为温度值,所以QT界面上能够同时显示时间和温度,使得操作者能够清楚地看到温度值和当前时间。应用程序具体流程如图61所示开始图形界面属性初始化1秒定时器开始定时判断能否打开设备DS18B20写入命令读取温度获取当前系统时间显示温度显示时间1秒定时是否结束结束YYNN图61应用程序流程图基于ARM的数据采集系统的设计28622程序设计1112首先进入/OPT/FRIENDLYARM/MINI2440/X86QTOPIA打开QTDESIGNER进行设计MYTEMUI的设计,QTDESIGNER开发界面如下图62所示。图62利用QTDESIGNER设计界面从图62可以看出使用DESIGNER来设计QT界面相对比较简单,很多组件只要从工具栏里拖拽到窗口中即可。1设计MYTEMUI,其中显示温度的部分使用了4位LCD进行显示,根据DS18B20的数据手册可知DS18B20的测温范围是55C到125C所以低三位用来显示温度数值,最高位也就是第四位显示温度的正负。显示时间的组件使用了标签,用标签来实时显示时间。然后进行信号插槽的连接即可,那么初步设计基本完成。本设计LCD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年地勤机务考试题及答案
- 2025年下半年无人机装调检修工考试试题及答案
- 2025年机务勤务试题及答案
- 2025年东航飞行测试题及答案
- 2025年航空服务员技能认定考试试题及答案解析
- 高校合同模板(3篇)
- 安全用药护理考试题及答案
- 高速公路挡墙施工合同(3篇)
- 电子商务合同法律风险防控与合同签订流程优化
- 专业人士个人房贷转按揭服务合同
- 夫妻忠诚协议书8篇
- 2025年大队委竞选面试题库及答案
- 2025年信用管理专业题库- 信用管理对企业市场风险的控制
- 双重上市公司“管理层讨论与分析”披露差异:剖析与弥合
- 物流会计面试试题及答案
- 集装箱货物高效清关代理服务合同范本
- 2025年结构上岗试题及答案
- 教科版小学五年级上册科学实验报告20篇
- 2025-2026学年人教版(五线谱)(2024)小学音乐三年级上册教学计划及进度表
- 江西省宜春市2025年上半年事业单位公开遴选试题含答案分析
- 开学第一课暨校长思政课:弘扬伟大抗战精神赓续强国复兴血脉
评论
0/150
提交评论