基于ARM的嵌入式温度监测系统毕业设计论文.doc_第1页
基于ARM的嵌入式温度监测系统毕业设计论文.doc_第2页
基于ARM的嵌入式温度监测系统毕业设计论文.doc_第3页
基于ARM的嵌入式温度监测系统毕业设计论文.doc_第4页
基于ARM的嵌入式温度监测系统毕业设计论文.doc_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

内蒙古科技大学毕业设计说明书(毕业论文)毕业设计说明书基于ARM的嵌入式温度监测系统摘 要随着科技的发展,嵌入式系统的发展也异常迅速,同时,嵌入式系统已经应用于各个方面,给人们的生产和生活带来了极大的便利。目前嵌入式系统的应用已经发展到了嵌入式处理器与操作系统相结合的阶段,本设计就是将ARM处理器与Linux操作系统相结合实现的。矚慫润厲钐瘗睞枥庑赖。嵌入式温度监测系统由温度监测硬件系统和温度监测软件两部分组成。其中硬件系统包括SBC2410开发套件,温度检测电路、信号放大电路及信号显示终端,论文中按模块对各部分硬件的设计进行了详细的介绍。聞創沟燴鐺險爱氇谴净。温度监测软件系统的设计过程如下,本设计首先为温度监测系统构建Linux环境,其次在Linux下编写并加载系统驱动程序,然后编写应用程序,编译并下载到ARM开发板中。经过反复调试,实现了温度监测的功能。残骛楼諍锩瀨濟溆塹籟。关键词: ARM;linux;内核;驱动;温度监测 内蒙古科技大学毕业设计说明书(毕业论文)Embedded System of Temperature Testing Based on ARM酽锕极額閉镇桧猪訣锥。AbstractWith the development of science, embedded system develops at a fast speed. Embedded system has been applied to all aspects, which has brought great convenience to peoples production and daily life. At present, the application of embedded system have been developed to the stage of combining embedded processor with operating system, and the design comes true based on combining the ARM processor with linux operating system.彈贸摄尔霁毙攬砖卤庑。 Embedded temperature measurement system includes temperature monitoring hardware and software systems. Hardware system includes SBC2410 system development kit, temperature detection circuit, signal amplifier circuit and signal display terminal. This paper, in detail, introduces the hardware design according to modules.謀荞抟箧飆鐸怼类蒋薔。 The process of the design of temperature measurement software system is as follows: First,the design construct Linux environment for temperature measurement the system .Secondly, the design compiles and loads driver program in Linux; At last, the design writes, compiles and downloads the application program to ARM development board. After repeated debugging, the design achieves the purpose of the temperature measurement.厦礴恳蹒骈時盡继價骚。Key words: Linux ; ARM ; Kernel ; Drivert ; Emperature measurement茕桢广鳓鯡选块网羈泪。内蒙古科技大学毕业设计说明书(毕业论文)目 录鹅娅尽損鹌惨歷茏鴛賴。摘 要I籟丛妈羥为贍偾蛏练淨。AbstractII預頌圣鉉儐歲龈讶骅籴。第一章 嵌入式系统简介1渗釤呛俨匀谔鱉调硯錦。1.1 嵌入式系统的概念1铙誅卧泻噦圣骋贶頂廡。1.2 嵌入式系统的结构1擁締凤袜备訊顎轮烂蔷。1.3 嵌入式系统与普通单片机开发的不同之处2贓熱俣阃歲匱阊邺镓騷。1.3.1 交叉编译2坛摶乡囂忏蒌鍥铃氈淚。1.3.2 交叉调试3蜡變黲癟報伥铉锚鈰赘。第二章 设计用嵌入式模块5買鲷鴯譖昙膚遙闫撷凄。2.1 ARM处理器5綾镝鯛駕櫬鹕踪韦辚糴。2.2 Flash模块5驅踬髏彦浃绥譎饴憂锦。2.3 SDRAM模块6猫虿驢绘燈鮒诛髅貺庑。2.4 JTAG调试器8锹籁饗迳琐筆襖鸥娅薔。第三章 温度监测电路设计10構氽頑黉碩饨荠龈话骛。3.1 AD590的室温补偿电路10輒峄陽檉簖疖網儂號泶。3.1.1 性能10尧侧閆繭絳闕绚勵蜆贅。3.1.2 误差校正10识饒鎂錕缢灩筧嚌俨淒。3.1.3 AD590的补偿电路设计11凍鈹鋨劳臘锴痫婦胫籴。3.2 热电偶的测温电路12恥諤銪灭萦欢煬鞏鹜錦。3.2.1 热电偶的测温原理12鯊腎鑰诎褳鉀沩懼統庫。3.2.2 热电偶的测温电路设计14硕癘鄴颃诌攆檸攜驤蔹。第四章 温度监测系统的Linux构建17阌擻輳嬪諫迁择楨秘騖。4.1 构建交叉编译器17氬嚕躑竄贸恳彈瀘颔澩。4.1.1 交叉编译器17釷鹆資贏車贖孙滅獅赘。4.1.2 设置共享文件夹,并解压linux开发包17怂阐譜鯪迳導嘯畫長凉。4.1.3 安装交叉编译器18谚辞調担鈧谄动禪泻類。4.2 Linux操作系统19嘰觐詿缧铴嗫偽純铪锩。4.2.1 引导加载程序20熒绐譏钲鏌觶鷹緇機库。4.2.2 内核21鶼渍螻偉阅劍鲰腎邏蘞。4.2.3 文件系统23纣忧蔣氳頑莶驅藥悯骛。4.3 烧写24颖刍莖蛺饽亿顿裊赔泷。4.3.1 Windows下烧写vivi24濫驂膽閉驟羥闈詔寢賻。4.3.2 分区格式化Flash及重新下载vivi25銚銻縵哜鳗鸿锓謎諏涼。4.3.3 烧写linux内核27挤貼綬电麥结鈺贖哓类。4.3.4 下载文件系统27赔荊紳谘侖驟辽輩袜錈。第五章 温度监测系统的软件编程28塤礙籟馐决穩賽釙冊庫。5.1 编写Linux下的ADC驱动程序28裊樣祕廬廂颤谚鍘羋蔺。5.1.1 Linux设备29仓嫗盤紲嘱珑詁鍬齊驁。5.1.2 驱动程序的编写说明32绽萬璉轆娛閬蛏鬮绾瀧。5.1.3 驱动程序编写的具体内容34骁顾燁鶚巯瀆蕪領鲡赙。5.1.4 ADC驱动程序具体函数的分析36瑣钋濺暧惲锟缟馭篩凉。5.1.5 ADC驱动程序的加载和删除39鎦诗涇艳损楼紲鯗餳類。5.2 编写应用程序41栉缏歐锄棗鈕种鵑瑶锬。5.2.1 线性化部分41辔烨棟剛殓攬瑤丽阄应。5.2.2 A/D转换速率的计算44峴扬斕滾澗辐滠兴渙藺。5.2.3 主程序的编写45詩叁撻訥烬忧毀厉鋨骜。第六章 温度监测的调试47则鯤愜韋瘓賈晖园栋泷。6.1 编译ad驱动程序47胀鏝彈奥秘孫戶孪钇賻。6.2 运行应用程序48鳃躋峽祷紉诵帮废掃減。6.2.1 为ARM开发板更新内核和文件系统48稟虛嬪赈维哜妝扩踴粜。6.2.2 编译main.c应用程序48陽簍埡鲑罷規呜旧岿錟。6.2.3 运行main 主程序49沩氣嘮戇苌鑿鑿槠谔應。总结51钡嵐縣緱虜荣产涛團蔺。参考文献52懨俠劑鈍触乐鹇烬觶騮。附录54謾饱兗争詣繚鮐癞别瀘。附录A:程序源代码54呙铉們欤谦鸪饺竞荡赚。附录B:测温原理图68莹谐龌蕲賞组靄绉嚴减。附录C:ARM板电路图69麸肃鹏镟轿騍镣缚縟糶。致谢70納畴鳗吶鄖禎銣腻鰲锬。内蒙古科技大学毕业设计说明书(毕业论文)第一章 嵌入式系统简介1.1 嵌入式系统的概念嵌入式系统是不同于常见计算机系统的一种计算机系统,它不以独立设备的物理形态出现,即它没有一个统一的外观,它的部件根据主体设备以及应用需要嵌入在设备的内部,发挥着运算、存储、以及控制的作用。从体系结构上看,嵌入式系统主要由嵌入式处理器、支撑硬件和嵌入式软件组成。其中嵌入式处理器常是单片机或微控制器;支撑硬件主要包括存储介质、通信部件和显示部件;嵌入式软件则包括支撑硬件的驱动程序、操作系统、支撑软件以及应用中间件等。風撵鲔貓铁频钙蓟纠庙。1.2 嵌入式系统的结构嵌入式系统一般由3个部分组成,如图1.1所示:嵌入式系统硬件平台、嵌入式操作系统及嵌入式系统应用。其中,嵌入式系统硬件平台指各种嵌入式器件、设备,嵌入式操作系统是指在嵌入式硬件平台上运行的操作系统,目前主流的嵌入式操作系统有嵌入式linux、C/OS-II等,具体应用那种嵌入式操作系统应视具体情况而定。嵌入式linux提供了完善的网络技术支持,C/OS-II操作系统也成为实时操作系统或RTOS,使用它作为开发工具将会使实时应用程序变得相对容易。灭嗳骇諗鋅猎輛觏馊藹。 图1.1 嵌入式系统嵌入式芯片需要必要的外围芯片给它提供基本的工作条件。一个嵌入式芯片供电系统为其供电;必须有时钟信号系统提供时钟信号;必须有复位系统。嵌入式芯片还需要有存储系统。如果芯片内部没有存储器或存储器容量不足以满足需求,则需要外扩存储芯片。调试接口也是嵌入式系统不可缺少的一部分。这些嵌入式处理器运行的必要条件的电路或者芯片与嵌入式处理器一起构成了嵌入式处理器的最小系统。铹鸝饷飾镡閌赀诨癱骝。最小系统结构框图如图1.2: 图1.2 最小嵌入式系统1.3 嵌入式系统与普通单片机开发的不同之处按照软件工程的原理,嵌入式开发软件的一般流程为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。与一般软件开发的区别在于软件实现的编译和调试两部分。攙閿频嵘陣澇諗谴隴泸。1.3.1 交叉编译 由于宿主机和目标机的体系结构不同,在宿主机X86平台上可以运行的程序在目标机ARM平台上无法运行,因此嵌入式软件开发采用交叉编译方式在一个平台上生成可以在另一个平台上执行的代码。编译的主要工作就是将程序转化成该程序的CPU所能识别的机器代码。趕輾雏纨颗锊讨跃满賺。进行交叉编译的主机称为宿主机,也就是普通的通用计算机,宿主机系统资源丰富,使用的方便地集成开发环境和调试工具。夹覡闾辁駁档驀迁锬減。 程序实际运行的环境称为目标机,也就是嵌入式系统环境。嵌入式系统的系统资源紧缺,存储空间、处理器运行速度等很有限,并且没有相关的编译工具,因此,嵌入式系统的开发需要借助宿主机来编译出目标机的执行代码。视絀镘鸸鲚鐘脑钧欖粝。由于编译的过程包括编译、链接等几个阶段,因此,嵌入式的交叉编译也包括交叉编译和交叉链接等过程,通常,ARM的交叉编译器为arm-elf-gcc,交叉链接器为arm-elf-ld,一般可执行文件是ELF格式。如图1.3所示。偽澀锟攢鴛擋緬铹鈞錠。1.3.2 交叉调试嵌入式软件编译和链接完成后即进入调试阶段。调试器与被调试的程序一般运行在同一台计算机上,调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。緦徑铫膾龋轿级镗挢廟。在嵌入式软件开发中的调试方式采用的是交叉调试,调试器运行在宿主机上的通用操作系统之上,被调试的进程运行在基于特定硬件平台的嵌入式操作系统中。騅憑钶銘侥张礫阵轸蔼。宿主机与目标机通过串口或者网络进行通信。调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试的运行状态。疠骐錾农剎貯狱颢幗騮。嵌入式系统的交叉调试方法主要有两种:硬件调试和软件调试,它们共同的特点如下:调试器运行在宿主机上,而被调试的进程运行在目标机上。调试器通过串口、并口、网络、JTAG等控制被调试进程。在目标机上,一般会具备某种形式的调试代理与调试器共同配合对目标机上的进程进行调试。这种调试代理可能是某些支持调试功能的硬件设备,也可能是某些专门的调试软件。镞锊过润启婭澗骆讕瀘。目标机可能是某种形式的系统仿真器,通过在宿主机上运行目标机的仿真软件,整个调试过程可以在一台计算机上运行。此时物理上虽然只有一台计算机,但是逻辑上仍然存在这宿主机和目标机的区别22。榿贰轲誊壟该槛鲻垲赛。第二章 设计用嵌入式模块2.1 ARM处理器 ARM处理器当前有6个产品系列:ARM7、ARM9、ARM9E、ARM10E、ARM11和SecurCore,其中ARM11是最近推出的产品。ARM7、ARM9、ARM9E、ARM10E是4个通用处理器系列。每个系列提供一套特定的性能来满足设计者对功耗、性能、体积的需求。SecurCore是第5个产品系列,是专门为安全设备而设计的。邁茑赚陉宾呗擷鹪讼凑。在本设计中,我们用的是ARM9处理器。下面对ARM9进行相应的介绍。ARM9系列于1997年问世。由于采用了5级指令流水线,ARM9处理器能够运行在比ARM7更高的时钟频率上,改善了处理器的整体性能;存储器系统根据哈佛体系结构(程序和数据空间独立的体系结构)重新设计,区分了数据总线和指令总线。嵝硖贪塒廩袞悯倉華糲。ARM9系列的第一个处理器是ARM920T,包含独立的数据指令Cache和MMU。次处理器能够被用在要求有虚拟存储器支持的操作系统上。此系列的ARM922T是ARM922T的变种,只有一半大小的数据指令Cache。该栎谖碼戆沖巋鳧薩锭。ARM940T包含一个更小的数据指令Cache和一个MPU。它是针对不要求运行操作系统的应用而设计的。ARM920T、ARM940T都执型v4T架构指令13。劇妆诨貰攖苹埘呂仑庙。2.2 Flash模块Flash存储器是一种可在的系统的(In-System)进行电擦写,掉电后信息不丢失的存储器。它具有低功耗、大容量、擦写速度快、可整片或分扇区在系统编程(烧写)、擦除等特点,在体积、抗震性方面都有很大的优势,并且可有内部嵌入式算法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。作为一种非易失性存储器,Flash在系统中用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。常用的Flash为8位或16位的数据宽度,编程电压为单3.3V。Flash闪存是非易失性存储器,可以对存储器单元块进行擦写和再编程。任何Flash器件进行写入操作前必须先进行擦除。Flash按结构分为NOR和NAND两大类。NAND器件执行擦除操作十分简单,而NOR则要求在进行擦出前,现将目标块内所有的地址都写0。擦除NOR器件时是以64128KB的块进行的,执行一个写入/擦除操作的时间为15s;擦除NAND器件是以832KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时,块尺寸的不同进一步拉大了NAND和NOR之间的差距。NOR的特点是芯片内执行,这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统ARM中。NOR的传输速率很高,在14MB的小容量时具有极高的成本效益,但是很低的写入和擦除速度大大降低了它的性能。NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度的都很快,应用NAND的难点在于Flash的管理和需要特殊的接口。NOR主要用在代码存储介质中,NAND适合于数据存储22。臠龍讹驄桠业變墊罗蘄。2.3 SDRAM模块SDRAM与Flash不同,它不具有掉电保护数据的特性,但其存取速度大大高于Flash存储器,且有读/写的属性,因此SDRAM在系统中主要用作程序的运行空间,数据及堆栈区。当系统初始化后,CPU首先从复位地址0x0处读取启动代码,在完成系统的初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度,同时,系统及用户堆栈、运行数据也都放在SDRAM中。鰻順褛悦漚縫冁屜鸭骞。SDRAM具有单位空间存储容量大和价格便宜的优点,已经广泛应用在各种嵌入式系统中。SDRAM的存储单元可以理解为一个电容,总是倾向于放电,为不免数据丢失,必须定时刷新(充电)。因此要在系统中使用SDRAM,就要求微处理器具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路。穑釓虚绺滟鳗絲懷紓泺。SDRAM是高速的动态随机存取存储器,它的同步接口和完全流水线的内部结构使其拥有极大的数据速率,目前SDRAM时钟频率已经达到100MHz以上。另外,它们的行列地址线共用,有行地址选通(CAS),列地址选通(RAS)信号分时控制。基本存储单元是内存芯片中存储信息的最小单位,每个存储单元可以存储1bit的信息,并且有一个由行地址和列地址共同定义的唯一的地址。我们知道8bit可以组成1byte,而字节是内存中最小的寻址单元。虽然内存基本存储单元具有唯一的地址,但是并不能进行独立的寻址,这将要求内存芯片有数以百计的引脚同计算机通信,显然这是不可能的。现在内存架构是处于同一列的基本存储单元共用一条列地址线,而处于同一行的基本存储单元共用一条行地址线,组成一个基本单元构成的矩阵框架。而这些内存框架构成一个内存bank,SDRAM内存以bank为组织,可由行列地址寻址。另外,为了保持内部数据还必须进行刷新。隶誆荧鉴獫纲鴣攣駘賽。要知道SDRAM的结构特点,就必须先了解DRAM器件的结构特点。DRAM存储一个位的消息只需要一只晶体管,但是需要周期性的充电,才能使保存的信息不丢失,DRAM的一个存储位单元如图2.1所示:浹繢腻叢着駕骠構砀湊。图2.1只是DRAM一个基本单位的结构示意图,电容器的状态决定了这个DRAM单位逻辑状态是1还是0。一个电容可以存储一定量的电子或者电荷,一个充电的电容器被认为是逻辑上的1,而“空”的电容器则是0。但是电容被利用的这个特性也是它的缺点。因为电容器不能持久的保持存储的电荷,所以内存需要不断定时刷新,才能保持暂存的数据。电容器可以用电流来充电;同时,电容的充放电需要一定的时间,虽然对于内存基本单位中的电容来说这个时间很短,大约只有0.180.2s,但这个期间内存是不能执行存取操作的。鈀燭罚櫝箋礱颼畢韫粝。 图2.1 DRAM的原理图SDRAM的存储单元的基本原理同前面提到的DRAM基本一样,但是这些存储单元的组织和控制与DRAM就有相当大的差别了。SDRAM是多bank 结构22。惬執缉蘿绅颀阳灣熗鍵。2.4 JTAG调试器JTAG是英文“Joint Test Action Group(联合测试行为组织)”的词头字母的简写, 是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试及对系统进行仿真、调试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 相关JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,输入引脚,低电平有效,GND。 JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-System Programmable;在线编程),对FLASH等器件进行编程。 JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对PSD芯片内部的所有部件进行编程。贞廈给鏌綞牵鎮獵鎦龐。在硬件结构上,JTAG 接口包括两部分:JTAG 端口和控制器。与JTAG 接口兼容的器件可以是微处理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、ASIC 或其它符合IEEE1149.1 规范的芯片。IEEE1149.1 标准中规定对应于数字集成电路芯片的每个引脚都设有一个移位寄存单元,称为边界扫描单元BSC。它将JTAG 电路与内核逻辑电路联系起来,同时隔离内核逻辑电路和芯片引脚。由集成电路的所有边界扫描单元构成边界扫描寄存器BSR。边界扫描寄存器电路仅在进行JTAG 测试时有效,在集成电路正常工作时无效,不影响集成电路的功能。嚌鲭级厨胀鑲铟礦毁蕲。JTAG也可以实现对电路版的Flash编程。要通过JTAG接口对系统板上Flash编程,可以利用专用的硬件控制器或独立的编程器来访问JTAG器件实现,也可以直接用电缆线把PC机并行口与嵌入式系统的微处理器的JTAG引脚连接起来,由PC机上的程序模拟JTAG时序实现。嵌入式系统的Flash芯片的地址线、数据线和控制信号线接到嵌入式系统带JTAG接口的微处理器相应的引脚上,在对Flash编程时,PC机上运行的程序控制PC机发送指令或数据到嵌入式系统微处理器内部的边界扫描寄存器里,再把此数据或指令通过JTAG专用指令传送到Flash,从而将代码写入Flash中22。薊镔竖牍熒浹醬籬铃騫。第三章 温度监测电路设计能够把非电量转换为电量的器件称为传感器,传感器实质上是一种功能块,其作用是将来自外界的各种信号转换成电信号。随着技术的不断进步,传感器也有了飞速的发展,体积变得越来越小,精度越来越高,功能也越来越强大。传感器的种类繁多,在本次设计中所要用到的是温度传感器,要选择适当的传感器以满足设计要求。齡践砚语蜗铸转絹攤濼。温度传感器:温度传感器就是把温度信号转换成电信号的传感器。在本次设计中,我选用的是K型热电偶和用于温度补偿的AD590做为测温元件。绅薮疮颧訝标販繯轅赛。3.1 AD590的室温补偿电路3.1.1 性能集成温度传感器AD590 是一种高内阻、电流输出型的两端器件, 其检测灵敏度为1 A/K。由于其内部采用最新的薄膜电阻激光微调技术作最后定标, 故其具有很高的检测精度。饪箩狞屬诺釙诬苧径凛。AD590 的特点是:(1) 两端器件:电压输入,电流输出;(2) 线性电流输出:1A/K;(3) 较宽的检测范围:- 55 + 155;(4) 极好的线性:在工作范围内非线性误差 0. 5;(5) 较宽的工作电压:+ 4+ 30V。烴毙潜籬賢擔視蠶贲粵。3.1.2 误差校正经过激光微调定标的AD590 芯片,其灵敏度为1A/K,输出电流值(A ) 可直接表征绝对温度(K)。但由于客观因素,使封装后的变换器灵敏度可能有所偏离。为了消除这种误差,可采用单点校正电路进行校正。如图3.1所示,在一定温度下,调节R2,使A、B 两端输出电压V 0 (毫伏) 刚好等于绝对温度值(K) ,这时输出电压灵敏度为1mV/K。经校正后,大大减小了误差,同时也减小了误差对温度的依赖,即减小了误差温度系数20。鋝岂涛軌跃轮莳講嫗键。图3.1 AD590校正电路在使用AD590之前,必须对其进行校正,假如要是AD590输出的是0时的电压,就要进行如下校正:先把AD590放进冰水混合物中,然后调整AD590电路图中的电阻R2,使其输出为273.15mv。在测室温时,室温为n度,那输出的电压为:V0=273.15+n,单位为mv。撷伪氢鱧轍幂聹諛詼庞。3.1.3 AD590的补偿电路设计图3.2 AD590室温补偿电路AD590只是在校正的温度的周围测量相对来说要精确,有时我们为了得到更精确的测量结果,我们把AD590的零点调整在室温点上,这样就能使得测量结果更精确了。例如:室温在一般情况下为25,那么我们就应该调整电阻R2,使AD590的输出为:V0=273.15+25,单位为mv。在这种情况下,室温稍有变动,我们就能准确地得出室温变动的幅度,这样更有利于我们的测量,使得我们的测量结果有更小的误差。踪飯梦掺钓貞绫賁发蘄。但是AD590的输出级别是mv级别,而我们的单片机的串口不能感受到这微小的变化,那么就需要对AD590的输出进行放大,这样才能使得单片机能获得这个信号。如图3.1所示,输出的信号经过两个放大器进行放大,就可以得到正的信号,也就能让单片机识别了。在本设计中,单片机的串口电压是3.3V,所以AD590的信号经过放大后不能超过3.3V。假如说放大器的放大倍数是10倍,那末AD590的输出最大也就只能是330mv,330-273.15=56.85,也就是说,在这种情况之下,室温可测的最高温度是56.85,但是现实中,室温很难达到这温度,放大10倍完全可以满足测量的需求。婭鑠机职銦夾簣軒蚀骞。在上图中,我们用的是两级的负放大:第一级是放大倍数,第二级的作用是使输出为正。 (3-1)第一级放大倍数。 (3-2) 第二级放大倍数,此级的作用是改变符号。 所以: (3-3)3.2 热电偶的测温电路 3.2.1 热电偶的测温原理热电偶选用的是镍铬-镍硅热电偶,分度号为K。该种热电偶的正极为含铬10%的镍铬合金,负极为含3%的镍硅合金。它的负极亲磁,用磁铁可以很方便鉴别出热电偶的负极。它的特点是使用温度计范围宽,高温下性能较稳定,热电偶与温度的关系近似线性,价格便宜,因此它是目前用量最大的一种热电偶。它适于在氧化性气氛中连续使用,短期使用温度为1200度,长期使用温度为1000度。K型热电偶是氧化性较强的贱金属热电偶。不适宜在真空、含碳、含硫气氛及氧化与还原交替的气氛下裸丝使用。热电偶是工业上最常用的温度检测元件之一。其优点是:测量精度高。测量范围广。构造简单,使用方便。譽諶掺铒锭试监鄺儕泻。热电偶就是利用热电效应来工作的。将两种不同材料的导体或半导体A和B焊接起来,构成一个闭合回路。当导体A和B的两个执着点1和2之间存在温差时,两者之间便产生电动势,因而在回路中形成一个大小的电流,这种现象称为热电效应。俦聹执償閏号燴鈿膽賾。热电势与两端温度的关系式为:由于热电偶的材料一般都比较贵重,而测温点到仪表的距离都很远,为了节省热电偶材料,降低成本,通常采用补偿导线把热电偶的冷端(自由端)延伸到温度比较稳定的控制室内。热电偶补偿导线的作用只起延伸热电极,使热电偶的冷端移动到控制室,它本身并不能消除冷端温度变化对测温的影响,不起补偿作用。因此,还需采用其他修正方法来补偿冷端温度t00时对测温的影响。在使用热电偶补偿导线时必须注意型号相配,极性不能接错,补偿导线与热电偶连接端的温度不能超过100。缜電怅淺靓蠐浅錒鵬凜。从测温原理中可以看出,热电偶回路产生的热电势由热电偶工作端温度和自由端温度函数确定。如果自由端温度保持恒定,则热电偶热电势就变成为工作段温度的单值函数。在实际使用热电偶时,往往由于环境和现场条件等限制,自由端不能维持在0度,因此需要对热电偶冷端温度进行补偿或修正。骥擯帜褸饜兗椏長绛粤。设热电偶工作端温度为t,冷端为。此热电偶也可能处于工作端温度为。冷端温度为,则有 (3-4) (3-5)两式相加得 (3-6)所以, (3-7)各种热电偶的分度表都是在冷端为0是制成的,如果在实际应用热电偶的冷端不是0,而是中间的某一温度tn时,则热电偶输出的热电势应为。根据该热电偶的分度表,则可从分度表上查得,将此值与测量值求和,即可计算出,在查该热电偶的分度表,即可求得工作端温度t9。癱噴导閽骋艳捣靨骢鍵。3.2.2 热电偶的测温电路设计数据采集部分是利用热电偶测量现场温度,它需要冷端温度补偿,是使用AD590测得的温度数据进行补偿的,这个过程使用程序计算处理的。用三运放高共模抑制比放大电路可将热电偶测得数据进行放大处理后,送到A/D中转换接口,再送到单片机内进行处理。结合图3.3具体解说如下:鑣鸽夺圆鯢齙慫餞離龐。热电偶的输出信号从这里进入滤波和放大电路,经这里出来后就可以进入单片机了,从而被单片机识别。刚进入电路,是两个电容,一个是电解电容,一个是普通的电容。他们的作用是滤除电磁波等有害因素。由于他们的电容值不一样,所以他们能滤除波段的也不尽相同。当然,我们也可以多接几个电容,那样我们就可以滤除更多的有害因素,但是那样就会增加我们的成本。榄阈团皱鹏緦寿驏頦蕴。要滤除有害的因素,也可以通过其他的途径,比如说:增大电容值可以加大滤除的效率,但是当电容值增大到一定程度的时候,器滤波的效果就不会对这电容值的增大而增加,所以电容值就要选取合适的值,不能太大,也不能太小,这样不但能有效的滤除有害因素,还能节省我们的成本。在这里,我们所取得电解电容值是2.2F ,电容所取的值是0.1F。逊输吴贝义鲽國鳩犹騸。图3.3 热电偶测温电路中间的两个电阻和一个滑动变阻器共同组成了该电路的调零部分。通过调节滑动变阻器可以使在没有输入的条件下,是输出为零,这样可以大大减小测量的误差,从而提高测量的精度。幘觇匮骇儺红卤齡镰瀉。之后是三个运算放大器构成了共模抑制比的放大电路,其放大倍数将在下面推导。推导过程如下:我们假设上面的运放器的输出为V01,输入为Vi1;下面的运放器的输出为V02,输入为Vi2;最后的运放器的输出为V0。誦终决懷区馱倆侧澩赜。 (3-8)R6为滑动变阻器,主要用于调节放大倍数。由 得, (3-9)由 得, (3-10)由(3-9)式-(3-10)式,得 (3-11) (3-12)到此为止,前面两个运算放大器是组成的放大器的放大倍数已经证明完成。第三个运放是双输入单输出的运算放大器,它的放大倍数推导过程如下:医涤侣綃噲睞齒办銩凛。当V01单独作用的时候,输出V0为: (3-13)也就是普通的运算放大器负放大。当V02单独作用的时候,输出V0为: 由 (3-14)得 (3-15)所以, (3-16)又因为 所以 (3-17)综上所述,输出为: (3-18)舻当为遙头韪鳍哕晕糞。 式(3-18)为最终的输出,而R5是为了使整个电路的安全而设置的,R4和R8为固定电阻17。第四章 温度监测系统的Linux构建4.1 构建交叉编译器4.1.1 交叉编译器arm-linux-gcc 是一个用于linux-2.4.18内核的交叉编译器,它包括编译器、汇编器连接器、调试器、库函数等。交叉编译器就是在一个平台上生成能够在另外一个平台上运行的代码。平台包括两个概念:体系结构和操作结构。同一个体系可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。由于ARM目标板上无法安装所需的编译器,只好借助于宿主机,在宿主机上对即将运行在目标机上的应用程序代码进行编译,这就是安装交叉编译器的意义。鸪凑鸛齏嶇烛罵奖选锯。4.1.2 设置共享文件夹,并解压linux开发包此方法要求开机是进入root用户,按照以下步骤进行:(1)在虚拟机的界面下,选择菜单条的VMsetting,弹出一个画面,点击options,选择shared folders,点击右侧窗口的内的add,进行共享文件设置。本设计所设置的共享文件夹是:F/mag文件夹。筧驪鴨栌怀鏇颐嵘悅废。(2)选择菜单条的VMInstall VMware Tools,安装tools工具完成后,在linux系统里的界面上出现光盘图标:Vmware Tools,在/mnt/cdrom/下自动挂载Vmware Tools压缩包。以后在光驱中放入光盘,则光盘图标的名称会变为放入光盘的名称。韋鋯鯖荣擬滄閡悬贖蘊。(3)在linux系统的终端里,进入系统的根目录,执行命令:cp /mnt/cdrom/Vmware Tools-5.0.0-03124.tar.gz /tmp(4)进入系统的/tmp目录,执行命令:cd /tmptar zxvf Vmware Tools-5.0.0-03124.tar.gz解压时间约为15s,解压后,在/tmp/生成vmware-tools-distrib文件,大小为112.6MB。涛貶騸锬晋铩锩揿宪骟。(5) 进入新生成的文件夹:vmware-tools-distrib,执行命令: cd vmware-tools-distrib./vmware-install.pl 遇到询问时点击enter回车键,看到“yes?”时输入“y”回车,最后输入“2”,可看到执行过程,完成后又回到终端。成功后,可在/mnt/hgfs目录下看到共享文件夹:mag。钿蘇饌華檻杩鐵样说泻。至此,虚拟机和主机之间的设置共享文件夹完毕。解压/mnt/hgfs/mag/linux/ 的linux开发包:tar xvzf /mnt/hgfs/mag/linux/sbc2410v6_linux-2.4.18_sdk.tgz C /戧礱風熗浇鄖适泞嚀贗。另外,也可以把linux 开发包放在移动存储设备中,在linux系统下挂载移动存储设备后在解压开发包。購櫛頁詩燦戶踐澜襯鳳。4.1.3 安装交叉编译器解压安装光盘中的编译器arm-linux-gcc-2.95.3.tgz,版本是2.95.3,在编译linux2.4.18版本时使用该编译器。嗫奐闃頜瑷踯谫瓒兽粪。(1) 解压安装设置共享完毕后,可解压 /mnt/hgfs/mag/linux/arm-linux-gcc-2.95.3.tgz c /虚龉鐮宠確嵝誄祷舻鋸。解压时间为25s,解压成功后,将在/usr/local/目录下生成arm文件夹,此文件夹大小为177.2MB。解压前,/usr目录下大小为4.0G,解压后 /usr目录下的大小变为4.2G。與顶鍔笋类謾蝾纪黾廢。(2)在根目录下,选择/etc/profile,再右键点击打开形式gredit,则进入编辑状态键入有下划线一行即可。結释鏈跄絞塒繭绽綹蕴。 #path maniplation if id-u=0; then pathmunge /sbin pathmunge /usr/sbin pathmunge /usr/local/sbin pathmunge /usr/local/arm/2.95.3/bin fi(3)重新启动系统并以root身份登录(4)在终端命令行输入arm-linux-gcc -v检查编译器是否安装: #arm-linux-gcc v回车后,显示如下信息则说明交叉编译器已安装: Reading specs from /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/specs餑诎鉈鲻缥评缯肃鮮驃。 gcc version 2.95.3 20010315(release)4.2 Linux操作系统微处理器产生以来,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxwork、pSOS、Neculeus和Windows CE。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。另外,结合国内实情,当前国家对自主操作系统的大力支持,也为源码开放的LINUX的推广提供的广阔的发展前景。还有,对上层应用开发者而言,嵌入式系统需要的是一套高度简练、界面友善、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。在不久的将来,从冰箱到收音机都会内置处理器。因为Linux的开放性,许多人认为Linux非常适合多数Internet设备。他们认为Linux可以支持不同的设备,支持不同的配置。Linux对厂商不偏不倚而且成本极低,能够很快成为用于各种设备的操作系统。如今,业界已经达成共识:即嵌入式Linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。 爷缆鉅摯騰厕綁荩笺潑。嵌入式Linux系统从软件的角度看通常可以分为4个层次:(1)引导加载程序。包括固化在固件中的启动代码(可选)和Bootloader两大部分。(2)内核。特定于嵌入式板子的定制内核以及控制内核引导系统的参数。(3)文件系统。包括根文件系统和建立于Flash内存设备之上的文件系统。通常用Ramdisk作为根文件系统。它是提供管理系统的各种配置文件以及系统执行用户应用程序的良好的运行环境的载体。锞炽邐繒萨蝦窦补飙赝。(4)用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。曠戗輔鑽襉倆瘋诌琿凤。4.2.1 引导加载程序嵌入式系统的引导代码是嵌入式系统开发的难点之一,同时是系统运行的一个基本前提条件。嵌入式系统的启动代码是和处理器体系结构紧密相关的,而且通常是C语言和汇编语言联合使用。没有这段代码,多么精悍的内核也不能发挥作用。轉厍蹺佥诎脚濒谘閥糞。Bootloader是系统加电后运行的第一段代码。一般它只是在系统启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的系统组成部分。当我们使用单片机或者像UCOS这样的操作系统时,一般只需要在初始化CPU和其它硬件设备后,直接加载程序即可,不需要单独构建一个引导加载程序。但是构建或移植一个Bootloader,从某种意义上来说,对所有的Linux系统都是一个最普通的任务。在PC中,引导加载程序由BIOS和位于硬盘MBR中的操作系统引导加载程序(如LILO)一起组成。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的Bootloader读到系统的RAM中,然后将控制权交给操作系统引导程序。引导加载程序的主要运行任务就是将内核映像从硬盘读到RAM中,然后跳到内核的入口点去运行,即开始启动操作系统。嬷鯀賊沣謁麩溝赉涞锯。在嵌入式系统中,通常并没有像BIOS那样的固件程序(有的嵌入式CPU会34在芯片内部嵌入一段短小的程序,一般用来将Bootloader装载进RAM中,它有点类似BIOS的功能,但功能远比BIOS弱),因此在一般典型的系统中,整个系统的加载启动任务就完全由Bootloader来完成。在一个基于ARM的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的Bootloader。通过这段小程序可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。讯鎬謾蝈贺綜枢辄锁廪。Bootloader是严重地依赖于硬件而实现的。每种不同体系结构的处理器都有不同的Bootloader。不过Bootloader的发展也趋于支持多种体系结构,比如U-Boot目前同时支持PowerPC,ARM,X86等多种体系结构。除了依赖于处理器的体系结构外,Bootloader实际上也依赖于具体的嵌入式板级设备的配置,也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种处理器而构建的,要想让运行在一块板子上的Bootloader程序也能运行在另外一块板子上,通常也需要对Bootloader进行一直工作25。所以需要针对自己的嵌入式硬件系统,移植自己的Bootloader程序。U-Boot是一个开放源代码的嵌入式Bootloader程序,可以在此基础上进行自己系统的移植工作16。兒躉讀闶軒鲧擬钇標藪。4.2.2 内核通常操作系统由内核和一些系统服务程序(命令解释、库文件、链接和编译程序等)组成。内核是操作系统的灵魂,它为用户进程提供一个虚拟接口。用户进程可以并行运行、公平地占用系统资源而互不干扰。繅藺詞嗇适篮异铜鑑骠。Linux操作系统一般由内核、shell、文件结构和实用工具4个主要部分组成。Linux系统的内核采用单块结构,可以动态地加载和卸载模块。系统利用内核模块的可动态装载和卸载功能,可以方便地在内核中添加新的组件或卸载不再需要的内核组件:内核模块的动态装载性使得内核映像的尺寸保持在最小,并且具有最大的灵活性、同时便于检验新的内核代码,而不需重新编译内核且重新引导,从而用户可以根据自己系统的需要构筑自己的私有内核,其源码的公开更为改造其内核提供了可能,尤其为重建有特殊要求的操作系统提供了可能。鮒簡觸癘鈄餒嬋锵户泼。Linux是一个移植性非常好的操作系统,它广泛支持许多不同体系结构的CPU。嵌入式系统是“硬件可裁剪”的,因此工程师们设必须结合自己的硬件电路,对已有的内核代码进行修改移植

温馨提示

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

评论

0/150

提交评论