首页资源分类嵌入式处理器ARM MPU > ARMμCLinuz的智能乙醇电子鼻系统的研究与实现

ARMμCLinuz的智能乙醇电子鼻系统的研究与实现

已有 445148个资源

下载专区

文档信息举报收藏

标    签:ARMμCLinuz的智能乙醇电子鼻系统的研究与实现

分    享:

文档简介

基于电子鼻技术和嵌入式技术的智能乙醇电子鼻系统是针对乙醇气体浓度检测的集成系统,可以在规定的温度、湿度和气压条件下,分析测量出气体中乙醇含量,具有广阔的应用前景。本文中智能乙醇电子鼻系统的研制涉及到测量人体肺深部气体中的乙醇含量,即呼出气体中的乙醇含量BrA.(breat.alcoho.concentration),然后根据比例关系得出人体血液中的乙醇含量BAC(bloo.alcoho.concentration),本文的研究内容如下: 第一章提出了课题来源及研究意义;在此基础上分析电子鼻技术和嵌入式技术的国内外研究现状,涉及到乙醇电子鼻、气敏传感器,以及嵌入式操作系统等技术;然后根据这些技术特点,确定了本文的研究内容和实施路线;最后,给出了论文的框架结构。 第二章分析系统需求,结合嵌入式技术理论,确定系统硬件方案和软件方案;在硬件方案中涉及到信息的处理、存储、通信等,在软件方案中涉及到嵌入式操作系统、文件系统、GUI系统的选择;对于乙醇电子鼻传感器方案,详细论述了乙醇燃料电池的工作过程及原理;最后,制定了智能乙醇电子鼻系统的总体技术及实施方案。 第三章着重阐述了系统的硬件设计过程,采用模块化思想,分阶段、分步骤地设计了硬件电路:分别从中央处理单元、信息采集及预处理、数据显示及报警、数据通信、数据存储、人机交互这六个方面,详细描述了硬件电路的工作过程和原理;至此,搭建出了硬件平台。 第四章主要描述了系统的软件设计过程,按照软件开发的流程,从系统引导代码BootLoader的编写,到嵌入式操作系统μClinux的移植,再到文件系统JFFS2的移植,最后到MiniGUI图形库的移植,都一一详细论述了实现过程;至此,搭建出了系统的软件平台。 第五章基于搭建的软件平台,阐述了系统相关驱动程序的开发过程、操作界面和应用程序的设计过程,给出了系统的界面图与操作流程图,明确体现了系统的功能模块;至此,完成了智能乙醇电子鼻系统的驱动及应用程序开发。 第六章和第七章,针对智能乙醇电子鼻系统的测试分析,搭建了系统测试平台,指定了符合本系统的测试指标及标准;对测试结果进行详细分析和对比,得出了系统性能的评价。根据这些评价,提出了系统的不足和今后要进一步研究和完善的方面。关键词:乙醇电子鼻;嵌入式系统;燃料电池;ARM;μCLinux操作系统

文档预览

浙江理工大学 硕士学位论文 基于ARM+μCLinux的智能乙醇电子鼻系统的研究与实现 姓名:张鹏举 申请学位级别:硕士 专业:机械制造及自动化 指导教师:陈昆昌;李仁旺 20090316 浙江理丁大学硕士学位论文 摘要 基于电子鼻技术和嵌入式技术的智能乙醇电子鼻系统是针对乙醇气体浓度检测的集 成系统,可以在规定的温度、湿度和气压条件下,分析测量出气体中乙醇含量,具有广阔 的应用前景。本文中智能乙醇电子鼻系统的研制涉及到测量人体肺深部气体中的乙醇含 量,即呼出气体中的乙醇含量BrAC(breath alcohol concentration),然后根据比例关系得 出人体血液中的乙醇含量BAC(blood alcohol concentration),本文的研究内容如下: 第一章提出了课题来源及研究意义;在此基础上分析电子鼻技术和嵌入式技术的国内 外研究现状,涉及到乙醇电子鼻、气敏传感器,以及嵌入式操作系统等技术;然后根据这 些技术特点,确定了本文的研究内容和实施路线;最后,给出了论文的框架结构。 第二章分析系统需求,结合嵌入式技术理论,确定系统硬件方案和软件方案;在硬件 方案中涉及到信息的处理、存储、通信等,在软件方案中涉及到嵌入式操作系统、文件系 统、GUI系统的选择;对于乙醇电子鼻传感器方案,详细论述了乙醇燃料电池的工作过程 及原理;最后,制定了智能乙醇电子鼻系统的总体技术及实施方案。 第三章着重阐述了系统的硬件设计过程,采用模块化思想,分阶段、分步骤地设计了 硬件电路:分别从中央处理单元、信息采集及预处理、数据显示及报警、数据通信、数据 存储、人机交互这六个方面,详细描述了硬件电路的工作过程和原理;至此,搭建出了硬 件平台。 第四章主要描述了系统的软件设计过程,按照软件开发的流程,从系统引导代码 BootLoader的编写,到嵌入式操作系统lxClinux的移植,再到文件系统JFFS2的移植,最 后到MiniGUI图形库的移植,都一一详细论述了实现过程;至此,搭建出了系统的软件平 厶 口。 第五章基于搭建的软件平台,阐述了系统相关驱动程序的开发过程、操作界面和应用 程序的设计过程,给出了系统的界面图与操作流程图,明确体现了系统的功能模块;至此, 完成了智能乙醇电子鼻系统的驱动及应用程序开发。 第六章和第七章,针对智能乙醇电子鼻系统的测试分析,搭建了系统测试平台,指定 了符合本系统的测试指标及标准;对测试结果进行详细分析和对比,得出了系统性能的评 价。根据这些评价,提出了系统的不足和今后要进一步研究和完善的方面。 关键词:乙醇电子鼻I嵌入式系统I燃料电池I删l I_tCLinux操作系统 浙江理jT=大学硕+学位论文 Research on Intelligent Alcohol Electronic Nose System and its Implementation based on ARM and pCLinux Abstract With the rapid development of science technology,the intelligent alcohol electronic nose system has been developed based on the electronic nose technology and the embedded technology.The system is a measuring instrument which can measure the alcohol concentration of the alcohol mixture in the conditions of temperature,humidity and air pressure.In this paper, the intelligent alcohol electronic nose system can get the blood alcohol concentration(BAC)by measuring the alcohol concentration of the mixture from the lung,which is called the breath alcohol concentration(Brae).The intelligent alcohol electronic nose system Call be applied to on.The test drivers for drunk driving and SO research ofthis paper is as follows: The first chapter reviews the research background,the source and the significance of the issue firstly.Then,based on the analysis of domestic and foreign research,including the electronic nose,embedded system,gas sensor and SO on,it determines the route of the implementation and the framework of the paper. The second chapter,analyses the requirements of the system,determines the hardware and principium software project.For the alcohol electronic nose sensor,it describes the working detailedly.Last,it determines the general route of the technology. The third chapter focuses on hardware design process,including the demarcation of modules.There ale six modules,CPU,signal acquisition,data showing and alarm,data communication,data storage and interaction.It describes the design process of the hardware modules detailcdly and establishes the hardware platform. The fourth chapter discusses the process of establishment of the software platform according to the software design flow,which includes the BootLoader,gCLinux Operming System,JFFS2 File System and MiniGUI. The fifth chapter expounds the development of device drivers and applications,especially depicts the system interface by some interface pictures.Thus,the intelligent alcohol electronic nose system is designed completely. II 浙江理’.r=大学硕士学位论文 Last,the performance of the intelligent alcohol electronic nose system is analysed by some experimentations.It estimates the performance and brings up some shortcomings.We need to do some measures to perfect the intelligent alcohol electronic nose system. Keywords:Alcohol Electronic Nose,Embedded System,Fuel Cell,ARM,pCLinux OS III 浙江理工人学硕+学位论文 浙江理工大学学位论文原创性声明 本人郑重声明:我恪守学术道德,崇尚严谨学风。所呈交的学位论文,是本人在导师 的指导下,独立进行研究工作所取得的成果。除文中已明确注明和引用的内容外,本论文 不包含任何其他个人或集体已经发表或撰写过的作品及成果的内容。论文为本人亲自撰 写,我对所写的内容负责,并完全意识到本声明的法律结果由本人承担。 学位论鸾作者签名:豸奶睇 日期:沁?年p害月‘/∥白。 浙江理工大学硕七学位论文 浙江理工大学学位论文版权使用授权书 学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家 有关部门或机构送交论文的复印件和电子版,允许论文被查阅或借阅。本人授权浙江理工 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印 或扫描等复制手段保存和汇编本学位论文。 本学位论文属于 保密口 ,在 不保密口 。 年解密后使用本版权书。 学位论文作者签名:考臣硐鸟泽 日期:劢夕年捉月I舌日。 …√和修 吼叫年3月厂厂日 浙江理一I:大学硕十学位论文 第一章绪论 【本章摘要】本章主要阐述了课题的来源及研究意义,分析电子鼻技术及嵌入式技术在国内外的发展及 研究现状,并提出了课题研究的技术路线,论述课题研究的主要内容和论文的整体结构框架。 1.1引言 电子鼻是90年代发展起来的一种新的检测技术,它将传感器技术、电子技术、信号处 理和计算机技术融合在一起,克服了传统的单一气体传感器在检测中存在的交叉敏感等缺 点,能够对混合气体中各气体成分进行定性或定量分析,它涉及材料、精密制造、多传感 器融合、计算机、嵌入式系统、应用数学等多领域的科学与技术,在食品加工和检验、医 学诊断、气体检测和控制等领域有着广阔的应用前景。 近年来,随着我国经济的高速发展,人民生活水平的迅速提高,公路上行驶的车辆大 量增加,酒后驾驶造成的交通事故频频发生。据有关资料统计,全世界每年因车祸丧生的 人数就超过60万人,留下永久性残伤者在400万以上,一般受伤者则不计其数。在许多 国家,车祸已成为第一位意外死亡原因。此外,由交通事故造成的经济损失也相当惊人。 据事故调查统计,大约50%一60%的车祸与饮酒有关。公安部近年来反复强调要求各地加强 查处酒后驾驶,以减少由酒后驾驶造成的恶性交通事故,要查处就涉及到怎样检测人体内 的BAC(blood alcohol coneentration),即血液中的酒精浓度。但在事故现场勘验或交警的同 常检查中,现场抽血检测几乎行不通,倘若送驾驶员到医院抽取血检验,由于被检验者的 身体在路上对体内酒精不停分解、代谢,使得检测结果不准。最简单有效的方案是现场检 测驾驶员呼气中的酒精含量,技术上如何准确检测血液酒精浓度,就成了亟待解决的问题。 本章首先提出了课题的来源及研究意义,然后从电子鼻技术的分析入手,介绍了电子 鼻技术在国内外发展及研究现状,指出了电子鼻系统所涉及的相关技术及发展概况,并且 对嵌入式系统的研究进展、嵌入式操作系统的开发过程及应用进行了综述。在此基础上, 提出了课题研究的主要内容和论文框架结构。 1.2课题来源及研究意义 本课题来源于:国家自然科学基金项目(50675208) 浙江省杰出青年团队项目(R6080403) 电子鼻及其应用研究在我国尚处于学术研究和实验室开发的初级阶段,但近年来已发 展成为一个热门的研究方向。近五年来,平均每年在国内各种期刊杂志上发表关于电子鼻 1 浙江理j I:大学硕士学位论文 的科技文章总数在100篇左右。从所发表的国内研究成果看,该领域在我国方兴未艾,与 国际上的成果相比,存在以下特点:(1)综述类文章较多,该类文章主要侧重介绍电子鼻 技术和国际上的电子鼻动态,也从一个侧面反映了我国的电子鼻研究现状; (2)注重于 传感材料的研究,与如何制备气敏传感器材料有关的研究论文相对较多。 (3)比较而言, 电子鼻及其应用中的一些关键技术,如模式识别【ol】【021、集成化【031、气体敏感机理研究‘叫【05】、 电子鼻应用【删等方面的研究还远远不够,与国际先进水平的差距还相当明显。 目前,我国在一些乙醇气体的检测方法中,虽然采用的敏感单元灵敏度很高,但由于 受到背景气体的干扰,分析的准确性比较差;另外,现有的一些乙醇气体电子鼻设备,体 积庞大、操作复杂、界面粗糙,缺少人性化和智能化。近年来随着计算机、网络和多智能 技术的不断进步,电子鼻技术正向着高度数字化、网络化、综合化和智能化的方向迅速发 展,为了适应这种技术革新,本课题在分析和吸收国内外电子鼻设备先进技术和经验的基 础上,在系统的软硬件上都提出了较新的设计思路,力求通过进一步的整合提高其整体性 能。因此,研究并实现一种抗干扰的、人性化的、智能的乙醇气体电子鼻是本文的研究目 的所在。 首先在应用性方面,为检测司机是否酒后驾车提供了便携的电子鼻设备,对减少交通 事故的发生率有重要意义。目前全世界几乎所有国家都采用呼气乙醇电子鼻(呼气乙醇电 子鼻有燃料电池型和半导体型)对驾驶员进行现场检测,以确定被测量者是否酒后驾驶。 其次在研究性方面,将ARM嵌入式技术应用在电子鼻的设计之中,对不断发展的智能技术 进行了有效的尝试和研究。经过十几年的发展,嵌入式技术已经在很大程度上改变了人们 的生活、工作和娱乐方式,而且这些改变还在加速。在设计过程中,研究并应用了操作系 统与底层硬件抽象接口技术,实现底层硬件与上层应用程序的分离,便于系统的在平台间 的更新和移植。最后在扩展性方面,系统模块化集成以及多接口的设计思想,便于扩展电 子鼻的应用范围,而不仅限于乙醇气体。 目前,在很多领域仍然应用人或动物的嗅觉对气味进行分辩、识别或评价,如:利用 人的嗅觉评价食品(如咖啡、白酒等的质量),利用狗的嗅觉检测毒品和爆炸物等。但是, 人和动物的嗅觉系统有一定的主观性,判断结果随着年龄、性别、识别能力及表达能力的 不同存在相当大的个体差异,即使同一个人在一个环境呆久了,嗅觉系统也容易疲劳。更 重要的是,在自动化程度高的领域,由于生产过程的其它环节己实现自动化,用人工方法 评价原料、成品或半成品的质量己经成为制约生产效率进一步提高的瓶颈。因此,扩展这 种电子鼻的应用领域,对解决这种瓶颈有重要意义。 2 浙江理工人学硕士学位论文 1.3国内外发展及研究现状 1.3.1电子鼻技术的发展及研究现状 由于客观的需要、传感器技术的发展和人对嗅觉过程的理解促使了电子鼻的产生和发 展。1964年Wilkens和HatrIl锄【o刀利用气体在电极上的氧化.还原反应对嗅觉过程进行了电 子模拟,这是关于电子鼻的最早报道。1965年,Buck等t081利用金属和半导体电导的变化 对气体进行了测量,Dravieks等【叫则利用接触电势的变化实现了气体的测量。然而,作为 气体分类用的智能化学传感器阵列的概念直到1982年才由英国Warwick大学的Persuad等 人‘101提出,他们的电子鼻系统包括气敏传感器阵列和模式识别系统两部分。其中传感器阵 列部分由三个半导体气敏传感器组成。这一简单的系统可以分辨桉树脑、玫瑰油、丁香牙 油等挥发性化学物质的气味。随后的5年,电子鼻研究并没有引起国际上学术界的广泛重 视。1987年在英国Warwick大学召开的第八届欧洲化学传感研究组织年会是电子鼻研究的 转机。在本次会议上,以Gardner为首的Warwick大学气敏传感研究小组发表了传感器在 气体测量方面应用的论文,并重点提出了模式识别的概念【111,引起了学术界广泛兴趣。1989 年,北大西洋公约研究组织(NATO Advanced Research Workshop)专门召开了化学传感器 信息处理高级专题讨论会,致力于人工嗅觉及其系统设计这两个专题。1991年8月,北大 西洋公约研究组织在冰岛召开了第一次电子鼻专题会议。电子鼻研究从此得到快速发展。 1994年Gardner发表了关于电子鼻的综述性文章,正式提出了“电子鼻”的概念f121,标志 着电子鼻技术进入到成熟、发展阶段。 “电子鼻系统”也称人工嗅觉系统,它模拟生物鼻的工作原理,是模仿生物鼻的一种 电子系统。1994年,英国Warwick大学的J.W.Gardner在(Sensors and Actuators))上发表 文章,正式使用术语电子鼻系统(Electronic Rose),并给出如下的定义【141:“电子鼻系统是 一种仪器,由具备部分专一性的气敏传感器构成的阵列和适当的模式识别系统组成,用来 识别简单和复杂气味。"(An electronic nose is an instnmaent,which compfises all array of electronic chemical sensors诵廿l partial specificity and an appropriate pattern recognition system, capable ofrecognizing simple or complex odors.)。从以上的定义可以看出,它的概念是十分 简单和宽泛的,它的目的是为了实现对气味的识别。更通俗的说,电子鼻系统就是为了实 现类似“生物鼻”的功能而研制的一种电子仪器。所以,它的结构在功能上必然和生物鼻 有许多相似之处。 一个典型的电子鼻结构包含3个层次㈣【14111 51,即气敏传感器阵列、信号预处理单元和 模式识别单元,如图1.1所示。 1 浙江理工人学硕+学位论文 电子鼻系统 叫传感器阵列)—<信号预处理)—< 模式识别 ). 『k 一 嗅觉细胞)—<嗅 泡)—<人脑嗅觉中枢)_ 动物嗅觉系统 图1.1动物嗅觉系统与电子鼻系统原理示意图 (1)气敏传感器阵列,相当于初级嗅觉神经元,由具有广谱响应特性、并对不同气味 /气体灵敏度不同的气敏元件组成。电子鼻系统就是利用传感器阵列的交叉敏感特性,通过 模式识别技术来实现系统的选择性并提高测量精度。通常,气敏传感器阵列可以采用数个 分立的气敏传感器组合而成,也可以采用集成工艺制作气敏传感器阵列,这种阵列体积小、 功耗低,便于信号的集中采集与处理。单个气敏传感器的检测方法与传感器阵列的识别方 式有质的区别,单个气敏传感器对气味/气体的响应可用一个参数来表示,而气敏传感器阵 列除了各个传感器的响应外,在全部传感器组成的多维空间中形成响应模式,这正是电子 鼻能够对多种气味气体进行辨识的关键所在。 (2)信号预处理单元,即运算放大器等电子线路,相当于二级嗅觉神经元。它对传感 器阵列的响应模式进行预加工,完成特征信号的提取。 (3)模式识别单元,相当于动物和人类的大脑。它运用一定的算法(对嗅觉信号进行 处理判断的分析软件)完成对气味/气体的定性定量辨识。目前在电子鼻系统中采用的模式 识别算法有:相关方法、最小二乘法、聚类方法、主成分分析法、偏最小二乘法、人工神 经网络法、模糊逻辑法等。 1.3.2气敏传感器的发展及研究现状 随着科学技术的发展和社会的进步,生产过程控制、环保、安全、办公、家庭等各方 面的自动化J下在迅速发展。作为感官或信息输入部分之一的气体传感器是不可缺少的重要 组成部分,它相当于人类的鼻子,能够对可燃气、毒气、特殊气味等进行识别。 气敏传感器也就是能感知环境中某种气体及其浓度的一种装置或器件,它能将与气体 种类和浓度有关的信息转换成电信号,从而可以进行检测、监控、分析、报警。气体传感 器从原理上可分为四大类。第一类:电学类气体传感器,又可分为电阻式和非电阻式两大 类,其中电阻式气体传感器主要有接触燃烧式、热导式、半导体气体传感器等,非电阻式 气体传感器则通常是利用材料的电流或电压随气体含量变化的特点而制成的传感器,主要 4 浙江理’r=大学硕十学位论文 包括MOS二极管式、结型二极管式和场效应管式等f161。第二类:光学类气体传感器,它 是利用气体的光学特性来检测气体成分和浓度的传感器。可分为红外吸收式、可见光吸收 光度式、光干涉式、化学发光式和试纸光电光度式、光离子化式等的气体传感器。第三类: 电化学类气体传感器。 近20年来,气敏传感器的研究开发在各类传感器中最为活跃,因为气敏传感器与人们 生活、生产活动关系最为密切,因而引起了全人类的重视和兴趣‘17Ⅱ181。目前已开发出了氧 化物半导体、固体电解质、有机半导体、石英振子、场效应、热催化、表面声波、光学、 电化学气敏传感器等多种形式【19】。 选择性和灵敏度是气敏传感器的两个重要参数,因为许多应用场合要求气敏传感器对 待测气体既要有很高的选择性,又要有很高的灵敏度,而对共存的干扰气体的灵敏度很低。 因此,单个气敏传感器虽然能有效地用于特定的场合,但是在检测成分复杂的混合气体或 挥发性化学物质时,在灵敏性、对复杂混合物的分辨能力和对变化环境的适应性上远逊于 人的嗅觉系统,更无法和狗等以嗅觉灵敏著称的动物相比。所以,结合仿生学和传感器电 子学技术,研究开发性能优越的电子鼻,是气敏传感器研究开发的又一重要方向。 1.3.3乙醇电子鼻的发展及研究现状 在过去几十年中用于测量呼气乙醇浓度的方法在经历了巨大的进步和变化。呼气乙醇 浓度分析方法的主要发展过程【20】如下: 与最初的血液乙醇浓度分析一样,呼气乙醇电子鼻对乙醇浓度的分析最初也是采用化 学中的重铬酸钾,高锰酸钾等作为氧化剂进行测量分析的。第一代作为执法目的的呼气乙 醇电子鼻有Drunk meter(乙醇气体测量器),Alcometer(测醉仪)以及便携式Intoximeter (测醉仪)。这些设备由受过训练的执法人员操作,并现场标明该醉酒司机血液中的乙醇 浓度,以现在的标准,这个结果并不是很精确。 第一部呼吸乙醇电子鼻是由R.F.Borkenstein博士在1954年制造,这标志着技术上的一个 大飞跃。该乙醇电子鼻融入了许多新的特点,与以前的仪器相比,它更加稳定,简单易用 (使受训警察更容易掌握),并在各种不同情况下表现出令人印象深刻的长期的稳定性。 这个乙醇电子鼻在在完成采样后一两分钟内得到结果,并在由20世纪60年代在美国,加拿 大,澳大利亚等国家被确定作为执法使用仪器。许多乙醇电子鼻所得的结果和BAC比较表 明,乙醇电子鼻常常有10%的结果太低,所以另一方面对接受测试的人就不太公平。 Borkenstein博士的乙醇电子鼻在呼气乙醇浓度测试领域占据了30年以上的主导地位,到现 在有些地方仍在使用这种仪器。 5 浙江理:f大学硕七学位论文 20世纪70年代出现了几种呼气乙醇浓度测试的新技术,其中有气相色谱分析,电化学 氧化、燃料电池、红外线(IR)光谱等。微处理器的出现带来呼气乙醇电子鼻的大小和结 构的一场革命。小型手提式呼气乙醇电子鼻被广泛使用,主要对于在路边的驾驶人进行检 查。随着这个领域的应用,Alcolmeter(Lion Laboratories PLC.:Barry,U.K.),Intoxilyzer(CM Inc.:Owensboro,KⅥ,AlcoSensor(Intoximeter Inc.:St.Louis,MI)和Alcotest(Draeger Safety Inc.:Breathalyzer Division.:Durango,co)全都引入电化学(燃料电池)传感器,作为定性 及定量检测呼气乙醇浓度之用。 1.3.4嵌入式系统的发展及研究现状 在当前数字信息技术和网络技术高速发展的后PC时代,嵌入式系统已经广泛地渗透到 科学研究、工程设计、军事技术、各类产业和商业文化艺术以及人们的同常生活等方方面 面中。随着国内外各种嵌入式产品的进一步开发和推广,嵌入式技术越来越和人们的生活 紧密结合。嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户 的应用程序等四个部分组成,它是集软硬件于一体的可独立工作的“器件”。 嵌入式系统从上世纪七十年代出现以来,发展至今已经有30多年历史。嵌入式系统的 发展大致经历了以下四个阶段【211[221: 第一阶段是以单芯片为核心的可编程控制器形式的系统,同时具有与监测、伺服、指 示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,一般没 有操作系统的支持,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。 第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。这一阶段的 操作系统具有一定的兼容性和扩展性,但用户界面不够友好。 第三阶段是以嵌入式操作系统为标志的嵌入式系统。这一阶段系统的主要特点是:嵌 入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精小、效率 高,并且具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支 持、图形窗口以及用户界面等功能;具有大量的应用程序接口(API),开发应用程序简 单;嵌入式应用软件丰富。从上世纪80年代开始,出现了各种各样的商用嵌入式操作系统 百家争鸣的局面,比较著名的有VxWorks、pSOS和Windows CE等等,这些操作系统大部 分是为专有系统而开发的。另外,源代码开放的嵌入式Linux,由于其强大的网络功能和低 成本,近来也得到了越来越多的应用。 第四阶段是以基于Intemet为标志的嵌入式系统,这是一个正在迅速发展的阶段。目前 大多数嵌入式系统还孤立于Intemet之外,但随着Interact的发展以及Intemet技术与信息家 6 浙江理工人学硕十学位论文 电、工业控制技术等结合日益密切,嵌入式设备与Intemet的结合将代表着嵌入式技术的真 正未来。 嵌入式系统的发展对嵌入式操作系统提出了更高的要求。因此,对嵌入式操作系统的 结构、设计、用户界面等诸多方面进行深入研究,将有助于嵌入式系统的应用和发展。 1.3.5嵌入式操作系统的发展及研究现状 嵌入式操作系统EOS(Embedded Operating System)是一种用途广泛的系统软件,过去 它主要应用于工业控制和国防系统领域。EOS负责嵌入式系统的全部软、硬件资源的分配、 调度工作,控制协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来 达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。随着Intemet技 术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高 专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件 固态化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而言的, 它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等 外,还有以下特点[231: (1)可装卸性。开放性、可伸缩性的体系结构。 (2)强实时性。EOS实时性一般较强,可用于各种设备控制当中。 (3)统一的接口。提供各种设备驱动接日。 (4)操作方便、简单、提供友好的图形GUI,图形界面,追求易学易用。 (5)提供强大的网络功能,支持TCP/IP协议及其它协议,提供TCP舢DP/IP/PPP协议支持 及统一的MAC访问层接口,为各种移动计算设备预留接口。 (6)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预,这就要 负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令, 它通过系统调用命令向用户程序提供服务。 (7)固化代码。在嵌入系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机 的ROM中。辅助存储器在嵌入式系统中很少使用,因此,嵌入式操作系统的文件管理功能 应该能够很容易地拆卸,而用各种内存文件系统。 (8)更好的硬件适应性,也就是良好的移植性。 国外嵌入式操作系统已经从简单走向成熟‘24】[25】,主要有Vxwork、QNX、PalmOS、 Windows CE等。国内的嵌入式操作系统研究开发有2种类型,一类是基于国外操作系统二 次丌发完成的,如海信的基于Windows CE的机顶盒系统;另一类是中国自主开发的嵌入式 7 浙江理jr大学硕士学位论文 操作系统,如凯思集团公司自主研制丌发的嵌入式操作系统Hopen OS(“女娲计划”)等。 Windows CE内核较小,能作为一种嵌入式操作系统应用到工业控制等领域。其优点在 于便携性、提供对微处理器的选择以及非强行的电源管理功能。内置的标准通信能力使 Windows CE能够访I'口-JInternet并收发Email或浏览Web。除此之外,Windows CE特有的与 Windows类似的用户界面使最终用户易于使用。Windows CE的缺点是速度慢、效率低、价 格偏高、开发应用程序相对较难。 3Com公司的Palm OS在掌上电脑和PDA市场上独占其霸主地位,它有开放的操作系统 应用程序接口㈣I),开发商可根据需要自行开发所需的应用程序。 QNX是由加拿大QSSL公司开发的分布式实时操作系统,它由微内核和一组共操作的进 程组成,具有高度的伸缩性,可灵活地剪裁,最小配置只占用几十KB内存。因此,可以广 泛地嵌入到智能机器、智能仪器仪表、机顶盒、通讯设备、PDA等应用中去。 Hopen OS是凯思集团自主研制开发的嵌入式操作系统,由一个体积很小的内核及一些 可以根据需要进行定制的系统模块组成。其核-0Hopen Kemel一般为10KB左右大小,占用 空间小,并具有实时、多任务、多线程的系统特征。 在众多的实时操作系统和嵌入式操作系统产品中,WindRiver公司的VxWorks是较为有 特色的一种实时操作系统。VxWorks支持各种工业标准,包括POSIX、ANSI C和TCPflP 网络协议。VxWorks运行系统的核心是一个高效率的微内核,该微内核支持各种实时功能, 包括快速多任务处理、中断支持、抢占式和轮转式调度。微内核设计减轻了系统负载并可 快速响应外部事件。 当前随着32位嵌入式处理器的广泛应用,嵌入式操作系统得到了迅速的发展,而以 开源而著称的嵌入式Linux操作系统更是借助开源的浪潮应用越来越广泛,而且随着Linux 2.6内核的发布,更是为其在嵌入式领域的应用提供了更好的保障。越来越多的开发者开 始选择使用Linux,作为一种可裁减的软件平台系统,是发展未来嵌入设备产品的绝佳资 源,遍布全球的众多Linux爱好者又能给予Linux开发者强大的技术支持。因此,Linux 作为嵌入式系统新的选择,是非常有发展前途的。 1.4课题研究内容及论文框架结构 通过对电子鼻技术和嵌入式技术的发展及研究现状分析,消化国内外现有的电子鼻系 统所采用的软、硬件架构,吸收借鉴最新的研究成果和经验,研究开发智能乙醇电子鼻系 统。 8 浙江理工人学硕士学位论文 1.4.1课题的研究内容 本课题是对基于ARM和pClinux的智能乙醇电子鼻系统的研究与实现,主要研究内容 是:完成了乙醇电子鼻系统理论的探讨,特别是乙醇电子鼻传感器原理的分析;实现了基 于ARM平台的智能乙醇电子鼻系统硬件电路的设计;构建了基于嵌入式-tClinux操作系统 的智能乙醇电子鼻系统的软件平台。 本课题首先从理论角度对智能乙醇电子鼻系统进行阐述,涉及到电子鼻系统理论、气 敏传感器的发展状况、嵌入式系统技术特点及嵌入式操作系统及其运行机制等。接着,从 硬件和软件两个大的方面确定了系统设计的总体方案,包括乙醇电子鼻传感器的选择等, 并从技术角度对智能乙醇电子鼻系统的实现进行详细解析。然后,从硬件角度,运用模块 化思想对系统的硬件实现进行一一描述;再者,提出了系统软件技术的实施框架,并从软 件角度,系统地叙述了嵌入式操作系统的移植、驱动程序的移植及各模块应用程序的编写 过程。最后,主要针对智能乙醇电子鼻系统进行测试分析,评价测试结果,总结整个系统 设计过程,并对智能乙醇电子鼻系统的改善和发展前景做了展望。 1.4.2论文框架结构 本论文的总体框架,如图1.2所示。 ( 第一章绪论 ) 理论层 ◆ ( ) 第二章智能乙醇电子鼻系统的设计方案 r一一一一一一一一一一一一‘ 技术层 1r ( 第三章智能乙醇电子鼻系统的硬件设计 I I lL… …一一一一一一一一一一◆一一一一一一一一一一一一一 厂 、 L 第四章智能乙醇电子鼻系统的软件设计 / 3 占 , 、 第五章智能乙醇电子鼻系统驱动及应用程序开发 实现层 ◆ ( ) 第六章智能乙醇电子鼻系统的测试分析 ◆ ( 第七章总结与展望 ) 图1.2论文框架结构 9 浙江理下大学硕士学位论文 1.5本章小节 在本章中,首先介绍了课题的来源及研究意义,然后论述了电子鼻技术在国内外的发 展及研究现状,其中包括气敏传感器的发展状况、乙醇电子鼻的发展状况;接着,针对电 子鼻系统的重要实现技术——嵌入式技术做了详细阐述,包括嵌入式系统和嵌入式操作系 统的发展及研究现状。最后,介绍了课题的研究内容及论文的框架结构。 10 浙江理下大学硕+学位论文 第二章智能乙醇电子鼻系统的设计方案 【本章摘要】本章主要介绍智能乙醇电子鼻系统的设计方案,包括嵌入式系统硬件方案、软件方案和乙 醇电子鼻传感器方案,最后整合出系统的总体方案。 2.1引言 本章主要介绍嵌入式智能乙醇电子鼻系统的设计方案,包括嵌入式系统硬件方案、嵌 入式系统软件方案、乙醇电子鼻传感器方案及系统的总体方案。在嵌入式系统硬件方案中, 着重分析了在信息处理、信息存储和信息通信中的硬件需求及解决方案;在嵌入式系统软 件方案中,详细介绍了嵌入式操作系统、文件系统和GUI系统的选择;在乙醇电子鼻传感 器方案中,了解到常用的乙醇电子鼻传感器,并对燃料电池传感器原理做了阐述,详细描 述了乙醇燃料电池传感器的技术原理;最后,在嵌入式智能乙醇电子鼻系统的总体方案中, 明确了系统的硬件设计方案及软件的实施框架。 2.2嵌入式系统硬件方案 在嵌入式系统硬件设计中,特别是涉及到嵌入式智能乙醇电子鼻系统,要考虑到信息 处理、信息存储和信息通信。 2.2.1信息处理方案 一个完整的嵌入式系统,最为核心的行为就是信息处理,选一个合适的处理器是完成 这一核心行为的基础。目前,嵌入式处理器大致分为嵌入式微控制器、嵌入式微处理器、 嵌入式DSP处理器、嵌入式片上系统(SOC)和FPGA处理器。而作为嵌入式微处理器的 代表——ARM,已经随着国内外嵌入式应用领域的逐步发展,越来越受到广泛的关注和应 用。 ARM是一款最近应用十分广泛的高性能、低功耗RISC微处理器【261,目前包括下面几 个系列:ARM7系列、ARM9系列、ARM9E系列、ARMl0E系列、SecurCore系列、Inter 的Xscale、StrongARM以及其它厂商基于ARM体系结构的处理器,除了具有ARM体系 结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。其中, ARM7,ARM9,ARM9E和ARMl0为4个通用处理器系列,每一个系列提供一套相对独 特的性能来满足不同应用领域的需求。ARM微处理器的主要应用领域有工业控制、无线 通讯、网络应用、消费类电子产品和安全产品等。 11 浙江理工人学硕士学位论文 其中ARM9TDMI核将ARM7TDMI的功能提高到了一个更高的水平,ARM9TDMI也 支持Thumb指令集,并支持片上调试。不同的是,ARM7TDMI使用3级流水线,而 ARM9TDMI使用的是5级流水线,采用哈佛结构区分了数据总线和指令总线,进而支持 使用更高的时钟频率。在处理器选型中,除了考虑功能和性能之外,还要考虑价格、开发 难道及操作系统支持,针对智能乙醇电子鼻这样的手持设备,选择ARM9系列,成本高、 开发难度大,且ARM7本身满足系统需求,因此选择Philips公司生产的LPC2210 32一bitRISC 微处理器,高性价比、低功耗,并且支持主流嵌入式操作系统ItC/OS II、ItCLinux等。 LPC2210是Philips公司推出的基于一个支持实时仿真和跟踪的16/32位 ARM7TDMI.SCPU处理器1271。采用144管脚封装、极低功耗、多个32位定时器、8路10 位ADC以及多达9个外部中断,使它特别适用于工业控制、医疗系统、移动式应用等, 且通过配置总线LPC2210最多可提供76个GPIO。它有如下的特性: · 1 6/32位1 44脚ARM7TDMI.S微控制器。 ●16KB片内静态RAM。 ·外部8位、16位或32位总线。 ·通过外部存储器接口可将存储器配置成4组,每组的容量高达16Mb。 ● 串行boot装载程序通过UART0来实现系统下载和编程。 ·EmbeddedlCE.RT接口使能断点和观察点,当前台任务使用片内RealMonitor软件调 试时中断服务程序可继续执行。 · 嵌入式跟踪宏单元ETM,支持对执行代码进行无干扰的高速实时跟踪。 ·8路10位A/D转换器转换时问低至2.44I.ts。 ·2个32位定时器带4路捕获和4路比较通道、PWM单元带6路输出、实时时钟和看门 狗。 ·多个串行接口包括2个16C550I业标准UART,高速12C接ISl400kbit/s和2个SPI接口。 · 向量中断控制器可配置优先级和向量地址。 · 多达76个通用I/OFf可承受5V电压,12个独立外部中断引脚EIN和CAP功能。 · 通过片内PLL可实现最大为60MHz的CPU操作频率。 ·片内晶振频率范围l"-'30MHz,若使用PLL或ISP功能,则为10-~25MI-Iz。 ·通过外部中断将处理器从掉电模式中唤醒。 ·可通过个别使能/禁止外部功能来优化功耗。 ·双电源CPU操作电压1.8 V+8.3%,I/O操作电压3.3V+10%。 12 浙江理下大学硕七学位论文 2.2.2信息存储方案 Flash存储器作为一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据 不丢失等一系列优点【231。目前已经逐步取代其它半导体存储元件,成为嵌入式系统中主要 数据和程序载体。 Flash存储器按底层技术结构,主要分为NAND Flash和NOR Flash两大类。NOR Flash 的主要特点是芯片内执行(EIP,Execute In Place)的功能,应用程序可以直接在Flash内 运行,不必再把代码读到系统RAM中。NAND Flash的主要特点在于提供极高的密度单元, 可以进行高密度存储,写入和擦除的速度非常快。以下表2.1为NOR Flash和NAND Flash 各项指标的综合比较。 表2.1 NOR Flash和NAND Flash各项指标的综合比较 名称 NOR Flash NAND Flash 容餐 尺寸、成本 接¨形式 访问形式 访问速度 寿命 可谍性 写入方式 易用性 设计口的 小(一般l’16M)代码存储 低存储密度、尺寸人、价格高 并行总线、SRAM接口 随机 读快、弓慢、擦除慢 十万次 高、位交换几率低 以字1i为单位 容易 作为ROM的替代品 大(一般8’128M)数据存储 高存储密度、尺寸小、价格低 串行总线、i/o口 顺序 读慢、写快、擦除快 百万次 低、位交换儿率高 以页为单位 复杂 硬盘或其他块设备 任何Flash器件进行写入操作前必须先执行擦除。NAND器件执行擦除操作十分简单; 而NOR则要求在进行擦除Ij{『,先要将目标块内所有的位都写为0。擦除NOR器件时是以 64"--"128KB的块进行的,执行一个写入/擦除操作的时间为1"-一5s;擦除NAND器件是以8~ 32KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时,块尺寸的不同近一步 拉大了NOR和NADN之间的性能差距。根据表2.1可看出,NOR的读取速度比NAND 稍快一些;NAND的写入速度比NOR快很多;NAND的擦除速度远比NOR快;NAND 的擦除单元更小,相应的擦除电路更少。而大多数写入操作需要先进行擦除操作,因此系 统选用16 MB的NAND FLASH(芯片型号是K9F2808UOC)作为数据存储,存储测试数 据、日志信息及应用程序等;选用Intel公司的16位4M字节的NORFlash存储器28F320C3B 作为程序存储,存储系统引导程序、操作系统代码等。 2.2.3信息通信方案 根据智能乙醇电子鼻系统的需求,系统涉及到的信息通信有程序下载、数据上传、无 线打印。在程序下载通信中,系统采用传统的、成熟的RS232串口下载方式,因此需要设 13 浙江理下人学硕士学位论文 计串口传输电路;在数据上传通信中,系统采用USB口与上位机连接,因此需要设计USB 接口电路;在无线打印通信中,系统采用RF无线射频技术进行无线传输数据,因此需要 设计RF射频传输电路。 2.2.3.1 RS232串口通信 RS232是美国电子工业协会EIA(Electronic IndustryAssociation)制定的一种串行物理 接口标准【291。RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数。RS.232C 标准规定了21个信号和25个引脚,包括一个主通道和一个辅助通道,在多数情况下主要 使用主要通道。对于一般的双工通信,仅需几条信号线就可以实现,包括一条发送线、一 条接收线和一条地线。RS.232C标准规定的数据传输速率为50、75、100、150、300、600、 1200、2400、4800、9600、19200b/s。驱动器允许有2500PF的电容负载,通信距离将受此 电容的限制。信号传输速率为20kb/s时,最大传输距离为15 M。传输距离短的另一原因 是RS.232属单信号传输,存在共地噪声和不能抑制共模干扰问题,因此一般用于短距离 通信。RS.232串口它有25芯与9芯引脚。本系统主要用到9芯的串口功能,采用的RS232 串口芯片是SP3232E,SP3232E是RS232收发器对便携式或手持式应用的芯片。下面给出 9芯的串口引脚功能如表2.2所示: 表2.2串口引脚信号功能表 引脚号 1 2 3 4 5 6 7 8 9 2…2 3 2 USB通信 信号名称 DCD RXD TXD DRT GND DSR RTS CTS RI 信号方向来自 调制解调器 调制解凋器 PC PC 调制解调器 PC 调制解调器 调制解调器 信号功能 PC机收剑远释信号(载波检测) PC机接收数据 PC机接收数据 PC机接收数据 信号地 对方准嵛就绪 PC机请求发送数据 对方也换到接收状态(清除发送) 通知PC机,线路止常(振铃指不) 通用串行总线USB(Universal Serial Bus)是Intel、Microsoft等大厂商为解决计算机 外设种类的日益增加与有限的主板插槽和端口之间的矛盾而于1995年提出制定的。它是 一种用于将适用USB的外围设备连接到主机的外部总线结构,主要用在中速和低速的外 设。USB同时又是一种通信协议,支持主机和USB的外围设备之间的数据传输。1996年 1月正式发布了USBl.0版本,现在最新的版本是于2000年4月发表的USB2.0。 USBl.1有全速和低速两种方式,低速方式的速率为1.5Mbps,支持一些不需要很大数 14 浙江理1:火学硕十学位论文 据吞吐量和很高实时性的设备,如鼠标等;全速模式为12Mbps,可以外接速率更高的外 设。发布的USB2.0中,增加了一种高速方式,数据传输率达到480Mbps,可以满足更加 高速的外设的需要。 USB之所以能得到广泛支持和快速普及,是因为它具备下列的很多优点【301: _低成本:USB接口电路简单,易于实现,特别是中/f氐速设备。 _热插拔:可带电插拔,支持即插即用,由系统自动检测并配置插入设备。 一 易于扩展:理论上,一台主机最多可连接127个USB设备。 -速度快:USBl.1支持低速1.5Mb/s、全速12Mb/s两种传输速率。而USB2.0除支 持低速、全速传输以外,还支持高速480Mb/s的传输速率。 ●总线供电:USB总线可以为设备最大提供500mA的电流。 一不占用系统资源:不像ISA、EISA、PCI设备,USB设备不需要内存和I/o地址空 间,而且也不需要中断请求线路。 一数据传输可靠:USB传输有完善的错误检测和恢复机制。 USB规范定义了四种传输模式,以满足不同的USB设备传输特性口11。USB数据传输 是在主机软件和USB设备的一个特定端点之间进行的。任何一个USB设备连接上主机后, 都要通过描述符向主机报告需要哪一种或几种传输模式。 ·控制传输(Contr01):主要用于主机把命令传给设备及设备把状态返回给主机。任何 一个USB设备都必须支持一个与控制类型相对应的端点0。 ·批量传输(Bulk):批量传输适用于大量非周期性数据传输,例如,扫描仪、打印机 等设备。这种方式下,主控制器会保证数据正确无误的传输,但是并不会保证一定的总线 带宽,因此,如果总线传输事务繁重,批量传输会有一定的延迟。 ·中断传输(Interrupt):用来支持那些偶然需要少量数据通信,但服务时间受到限制 的设备。中断传输常常用在键盘、鼠标和游戏杆上。 · 同步传输(Isochronous):同步传输保证传输速率,但是没有错误校验,系统会为同 步传输预留~定的总线带宽,以保证连续的数据传输和相同的传输速率,它适用于视频和 音频类USB设备。 根据系统需求选用National Semiconductor公司设计生产的一款较新型的专用USB通信 控制芯片USBN9604作为USB通信的处理芯片。 浙江理工大学硕十学位论文 2.2.3.3 RF射频通信 射频技术RF(Radio Frequency)的基本原理是电磁理论。在RF射频通信中,系统采 用是挪威Nordic公司推出的无线收发一体芯片nRF24011321,和蓝牙一样,都工作在2.4GHz 自由频段,能够在全球无线市场畅通无阻。nRF2401支持多点间通信,最高传输速率超过 1Mbit/s,而且比蓝牙具有更高的传输速度。它采用SoC方法设计,只需少量外围元件便可 组成射频收发电路。与蓝牙不同的是,nRF2401没有复杂的通信协议,它完全对用户透明, 同种产品之间可以自由通信。更重要的是,nRF2401比蓝牙产品更便宜。nRF2401是业界 体积最小、功耗最少、外围元件最少的低成本射频系统级芯片。 2.3嵌入式系统软件方案 在嵌入式系统软件设计中,特别是设计到嵌入式智能乙醇电子鼻系统,要考虑到嵌入 式操作系统、文件系统及图形用户界面GUI系统。 2.3.1嵌入式操作系统方案 嵌入式操作系统(Real.Time Embedded Operating System,RTOS或EOS)是一种实时的、 支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的 组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、 图形界面、标准化浏览器Browser等。它是一段在嵌入式系统启动后首先执行的背景程序, 用户的应用程序是运行于RTOS之上的各个任务,RTOS根据各个任务的要求,进行资源(包 括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS支持的系统 中,每个任务均有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务,保 证对实时性的要求。 嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统 庞大的应用中显得愈来愈重要。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操 作系统嵌入进去,才是真正的计算机嵌入式应用。使用实时操作系统主要有以下几个因素: (1)嵌入式实时操作系统提高了系统的可靠性。 (2)提高了开发效率,缩短了开发周期。 (3)嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。 目前,嵌入式操作系统的品种较多,据统计,仅用于信息电器的嵌入式操作系统就有 40种左右,其中较为流行的主要有:IxC/OS—II、WinCE、Linux、lxClinux、VxWorks、Palm OS、QNX等[331。 16 浙江理T大学硕士学位论文 一I-tC/OS.II[34】是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作 系统。其绝大部分源码是用ANSI C写的,使其可以方便的移植并支持大多数类型的处理器。 ttC/OS.II占用很少的系统资源,只包括了进程调度、时钟管理、内存管理和进程间的通信 与同步等基本功能,而没有包括I/O管理、文件系统、网络等模块,与CPU相关的代码包装 在3个文件中:os 和 h .、 OS cup, a. asm os cpu C.C 。.epu —Windows CE[33]是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于 掌上型电脑类的电子设备操作,它是精简的Windows 95。Windows CE的图形用户界面相当 出色。Win CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。 Win CE不仅继承了传统的Windows图形界面,并且在W'm CE平台上可以使用Windows95/98 上的编程工具(女IlVisual Basic、Visual C++等)、使绝大多数的应用软件只需简单的修改和 移植就可以在Windows CE平台上继续使用。 一LinuX【35】是一套以UNIX为基础发展而成的操作系统,也是目前发展最快、应用最 广泛的一款开放源代码的操作系统。目前正在开发的嵌入式系统中,49%的项目选择Linux 作为嵌入式操作系统,它现已成为嵌入式操作系统的理想选择。其源代码是开源的,因此 嵌入式开发者可以根据自己的需要进行剪裁。它遵从GPL(General Public License,通用公 共许可证),有大量的应用软件和免费的优秀开发工具可用,且都是开源的。 ·ixClinuxD6】是一个完全符合GM『/GPL公约的操作系统,完全开放代码。l_tClinux从 Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU 的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元 (MMU)的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。它 保留了Linux的大部分优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系 统的支持、以及标准丰富的API等。 四种主流嵌入式操作系统的综合分析比较如表2.3所示【3311341[351[361: 表2.3四种主流嵌入式操作系统的综合分析比较 名称 u C/OS-II Windows CE Linux pClinux 内核大小 可开发定制 互操作性 通用性 实时性 进程调度 50KB 方便开发定制 强 强 实时 可剥夺型 1.5MB 不方便定制 比较强 多川丁ARM9 1F实时 分时调度 1000KB左右 方便开发定制 很强 多川T-ARM9 1I!实时 分时调度 500KB左右 不受限制 很强 非实时 分时调度 结合表2.3的分析和微处理器AI己M7TDMI的特点,选择FtClinux操作系统较好,虽然 lxClinux自身不提供实时性,但是针对实时性的问题,pClinu)【可以采用RT-Linuxl约实时解决 17 浙江理工人学硕十学位论文 方案,利用RT-Linux的实时补丁,来增强系统的实时性。嵌入式操作系统laClinux的优点有: ◆针对没有MMU的CPU而设计的精简化的Linux,开放源码,核心技术依赖性小,系 统的开放性强:具有丰富的软件资源,常用嵌入式芯片的驱动集,支持大量的周边硬件设 备,驱动丰富,便于系统的集成与开发; ◆通用Linux API,易于调用、应用程序开发; ◆内核体积<512KB,内核+文件系统<900KB,占有很少的内存; ◆完整的TCP/IP协议栈,支持大量其他的网络协议: ◆支持各种文件系统,包括NFS,Ext2,ROMfs, JFFSx等。 2.3.2文件系统方案 嵌入式系统中需要存储的程序和数据主要包括系统引导代码、嵌入式操作系统、设备 驱动程序、第三方软件资源、系统应用程序、数据和系统辅助工具集等。选择并建立合适 的文件系统是嵌入式开发的一个重要组成部分。“Clinll)【可支持多种文件系统【371,常用的主 要包括: (1)ROMFS,是一个只读的文件系统,它是最早支持FLASH的文件系统。ROMFS是 一种基于块设备的文件系统,它是只读的,非常小巧。在l,tClinux中,它属于默认的为嵌入 式系统定制的文件系统。ROMFS为根文件系统,需要读写的var和tmp目录采用RAMFS。 (2)CRAMFS,是2.4系列Linux内核提供的一种新的文件系统。它是一种压缩的只读 文件系统,它主要的优势是所有存储的文件都是压缩的,而且这些文件只是在被访问到的 时候才解压到洲中,而不在访问之列的文件并没有被解压缩到洲中,这样就有效的 减少了FLASH和RAM的占用量。 (3)JFFSl3引,是专门针对嵌入式系统中FLASH存储器的特性设计的一种日志文件系 统。它是基于NOR FLASH开发的文件系统。它最大的特点是支持对FLASH的直接读写。 (4)JFFS2[391,是在JFFS的基础之上开发的,它采用了成熟稳定的MTD技术,因此要 比JFFS稳定。和JFFS相比,JFFS2支持更多节点类型,提高了磨损均衡和碎片收集的能力, 增加了对硬连接的支持,和传统的1.tClinux文件系统相比,JFFS2处理擦除和读写操作的效 率更高,并且具有完善的掉电保护功能,使存储的数据更加安全。 综合考虑,JFFS和JFFS2都是开源的R志文件系统,适合在Flash芯片上使用,包括NOR Flash和NAND Flash。日志结构能够保证文件系统的连续性,即使文件系统崩溃或者非正常 掉电,重启的时候也不需要执行fsck。在介质上,JFFS只有一种节点类型,而JFFS2更灵活, 在保持向后兼容的同时,支持定义新的类型节点。所有的节点都有一个公共的头部信息, 18 浙江理工人学硕+学位论文 包括幻数、节点类型、节点总长度和节点头的循环冗余校验码。其数据结构的内存表示如 图2.1所示。 MSB LSB _u16 magic (幻数) —.u1 6 nodetype (节点类型) ——u32 totlen (节点总长度) ——u32 hdr—.crc (循环冗余校验码) 2.3.3 GUI系统方案 图2.1 JFFS2的数据结构内存表示 出于提高系统人机交互友好性和易操作性考虑,GUI已成为本设计的重要环节。嵌入 式GUI为嵌入式系统提供了一种应用于特殊场合的人们交互接口。嵌入式GUI要求简单、 直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。另外,由于嵌入 式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁减性,以适应不同的硬 件条件和使用需求。 目前较为流行的嵌入式GUI有Micro Windows、QT/Embedded、M黼GUI和OpenGUI等【40J 【4l】142】。Micro Windows采用传统的基于Unix套接字的客户/服务器系统结构(NanoX),这 样非常依赖于Unix套接字通讯,不利于实时性;OpenGUI的内核是用汇编实现的,不利于 移植:QT/Embedded是著名的Qt库开发商TrollTech公司发布的面向嵌入式系统的Qt版本, 对系统运行要求较高,并且该系统不是开放源码。 MiniGUI为实时嵌入式操作系统提供了完善的图形用户界面支持。可移植性设计使得它 不论在哪个硬件平台、哪种操作系统上运行,均能为上层应用程序提供一致的应用程序编 程接口。作为操作系统和应用程序之间的中间件,MiniGUI将底层操作系统及硬件平台差 别隐藏起来,并对上层应用程序提供了一致的功能特性,这些功能特点包括:完备的多窗 口机制和消息传递机制;常用的控件类齐全;对话框和消息框支持以及其它GUI元素;支 持界面皮肤;支持Windows的资源文件;通过两种不同的内部软件结构支持低端显示设备 (比如单色LCD)和高端显示设备(比如彩色显示器);支持各种流行图像文件:支持多字符集 和多字体;支持多种键盘布局;支持简体中文(GB2312)输入法;针对嵌入式系统的特殊支 持,包括一般性的I/O流操作,字节序相关函数等。 和其它针对嵌入式产品的图形系统相比,MiniGUI具有如下技术优势143】: 19 浙江理丁大学硕士学位论文 (1)轻型、占用资源少 MiniGUI本身的占用空间非常小。以嵌入式Linux操作系统为例,MiniGUI的典型存储 空间占用情况如下: ①lxCLinuxI勾核:300KB~500KB(由系统决定)。 ②MiniGUl支持库:500KB~700KB(I土I编译选项确定)。 ③MiniGUI字体、位图等资源:400KB(fl了应用程序确定,可缩小到200KB以内)。 ④GB2312输入法码表:200I圆(不是必需的,由应用程序确定)。 ⑤应用程序:lMB ̄2MB(由系统决定)。 总体的系统占有空间应该在2MB到4MB左右。在某些系统上,功能完备的MiniGUI系 统本身所占用的空间可进一步缩小到lMB以内。 MiniGUI能够在CPU主频为30MHz,仅有4MB RAM的系统上正常运行(使用l_tCLinux操 作系统)。这是其它针对嵌入式产品的图形系统,比如MicroWindows或者Qt/Embedded所无 法达到的。 (2)高性能、高可靠性 MiniGUI良好的体系结构及优化的图形接口,可确保最快的图形绘制速度。在设计之初, 就充分考虑到了实时嵌入式系统的特点,针对多窗口环境下的图形绘制开展了大量的研究 及开发,优化了MiIliGUI的图形绘制性能及资源占有。 (3)可配置 为满足嵌入式系统千变万化的需求,必须要求GUI系统是可配置的。和肛CLiIlu)【内核类 似,MiniGUI也实现了大量的编译配置选项,通过这些选项可指定MiniGUI库中包括哪些功 能而同时不包括哪些功能。如:操作系统、运行模式、GAI,/IAI,引擎的支持、字体、字符、 图像、控件等,这些配置选项大大增强了MiniGUI的灵活性,对用户来讲,可针对具体应 用需求量体裁衣,生成最适合产品需求系统及软件。 (4)可伸缩性强 MiniGUI丰富的功能和可配置特性,使得它既可运行于低端产品中,亦可运行于基于高 端产品中,并使用MiniGUI的高级控件风格及皮肤界面等技术,创建华丽的用户界面,同 时,在不同的操作系统上,提供完全兼容的API接口。 (5)跨操作系统支持 理论上,MiniGUI可支持任意一个多任务嵌入式操作系统;目前已支持Linux/laCLinux、 lxC/OS.II、VxWorks等嵌入式操作系统。同时,在不同操作系统上的MiniGUI,提供完全 20 浙江理:f=人学硕十学位论文 兼容的API。 MiniGUI具有良好的软件架构,通过抽象层将MiniGUI上层和底层操作系统 隔离开来,如图2.2所示,基于MiniGUI的应用程序一般通过ANSI C库以及MiniGUI自身提 供的API来实现自己的功能;MiniGUl中的可移植性层将特定操作系统及底层硬件的细节隐 藏起来,而上层应用程序则无需关心底层的硬件平台输出和输入设备。 圈2.2 MiniGUI与嵌入式操作系统的关系图 总之,MiniGUI是一个非常适合于实时嵌入式产品的高效、可靠、可定制又灵活的轻 量级图形用户界面支持系统,正因为其小巧、可配置、高性能及易于移植等特性,本设计 选用MiniGUI来设计图形用户界面。 2.4乙醇电子鼻传感器方案 嵌入式智能乙醇电子鼻系统的“嗅觉器官,’_电子鼻M,是靠乙醇电子鼻传感器仿效 的。乙醇电子鼻传感器是感应乙醇气体的敏感元件,目前传感器种类较多,对乙醇电子鼻 传感器方案的确定关系到处理器软件算法的编写。 2.4.1常用乙醇电子鼻传感器 可以对气体中乙醇含量进行检测的设备有五种基本类型H51,分别是:1.燃料电池型(电 化学);2.半导体型;3.红外线型;4.气体色谱分析型:5.比色型。 根据价格和使用是否方便等因素影响,目前普遍使用的只有燃料电池型(电化学型) 和半导体型二种。这二种能够制造成便携型呼气乙醇电子鼻,适合于现场使用。半导体型 采用氧化锡半导体作为传感器,这类半导体器件具有气敏特性,当接触的气体中其敏感的 气体浓度增加,它对外呈现的电阻值就降低,半导体型呼气乙醇电子鼻就是利用这个原理 做成的。这种半导体在不同工作温度时,对不同的气体敏感程度是不同的,因此半导体型 2l 浙江理J=大学硕士学位论文 呼气乙醇电子鼻中都采用加热元件,把传感器加热到一定的温度,在该温度下,该传感器 对乙醇气体具有最高的敏感度。 燃料电池乙醇传感器属于电化学类型,因此又称为电化学型。燃料电池是当前全世界 都在广泛研究的环保型能源,它可以直接把可燃气体化学能转变成电能,而不产生污染。 作为乙醇气体传感器只是燃料电池的一个分支。与半导体型相比,燃料电池型呼气乙醇电 子鼻具有稳定性好、精度高、抗干扰性好的明显优点。但遗憾的是由于燃料电池乙醇电子 鼻的结构要求非常精密,制造难度相当大,目前世界上只有美国、英国、德国等少数几个 国家能够生产。因其材料成本高,所以价格比较昂贵。 对于嵌入式智能乙醇电子鼻系统来说,一些重要指标直接影响到检测精度,如示值误 差、重复性、抗干扰能力、吹气压力和吹气连续性监视等。其中吹气压力和吹气连续性监 视等指标可以通过压力传感器来监控,而示值误差、重复性及抗干扰能力等指标就要靠乙 醇电子鼻传感器来完成。对此2001年我国公安部制定了国家公共安全行业标准“呼出气体 酒精含量探测器GA307。2001"也做了定量规定【拍】:其中示值误差要求在整个工作范围(温 度从0℃至40℃,相对湿度从20%RH至90%RH)都要满足如下要求: 士10%(量程:0.400m鲫■1.000mg/L) 士O.040mg/L(量程:0.200mg/㈨.400mg/L) 士0.025mg/L(量程:<o.200mg/L) 重复性是反映仪器测量值稳定性的指标,经过示值误差和重复性检测的调查,部分半 导体型的乙醇气体传感器达不到要求,而燃料电池型的都能够满足要求,并且还有比较大 的宽余量。所谓抗干扰能力实际上是仪器对其它气体敏感度的大小。理想的乙醇气体测试 仪应该只对乙醇气体有反应,而对其它气体不应该有任何反应。半导体传感器可以利用控 制工作温度来使得它对于乙醇气体具有最高的敏感度。但即使这样,它对某些气体的敏感 度还在对乙醇气体敏感度的20%.80%范围内。GA307.2001标准对乙醇气体测试仪抗干扰能 力的要求是:在2.00mg/L浓度的正己烷气体作用下,测试仪的示值应不大于0.04mg/L。按 照这个条件对作检测调查发现,所有的半导体乙醇气体测试仪的测试结果都大于0.1mg/L, 有些甚至达No.25mg/L,远远超过GA307—2001标准的要求,而所有的燃料电池型乙醇气体 测试仪都没有超过0.02mg/L,符合标准要求。出于测试精度及实施方便等因素的考虑,设 计决定采用乙醇燃料电池传感器。 2.4.2燃料电池技术原理 燃料电池是一种将燃料和氧化剂的化学能直接转换成电能的电化学反应装置【471[481。燃 22 浙江理工大学硕士学位论文 料电池的基本结构是由夹着电解质的一对电极和连接电极的导线(外部电路)构成。工作 时向一个电极供给氢气,另一个电极供给氧气。供给燃料氢气的电极称为“燃料极”(或 者称为“阳极”);供给氧气的电极称为“空气极”(或者称为“阴极”)。燃料在阳极 氧化,氧化剂在阴极还原,从而完成整个电化学反应。根据电解质的不同,燃料电池可分 为5大类型: (1)磷酸型燃料电池(PAFC) (2)聚合物电解质膜燃料电池(PEMFc) (3)碱性燃料电池(AFC) (4)熔融碳酸盐燃料电池(McFc) (5)固体氧化物燃料电池(SOFC) 实际的化学反应因燃料电池的种类不同而略有不同,这景以虽常用的“磷酸型燃料电 池”(PAFC)和“聚合物电解质膜燃料电池”(PEMFC)为例,说明燃料电池产生电时 的化学反应。如图2.3所示为燃料电池的组成及化学反应过程。 图∞燃料电氇的组成及化学反应过程H1 供给燃料极的氢气,在电极上铂的催化作用下,释放出电子形成氢离子。氢离子通过 23 浙江理T大学硕士学位论文 电解质向空气极移动。电解质具有智能通过离子而不能通过电子的性质,所以,释放出的 电子只能在外部电路中移动。当氢离子到达空气极后,与空气极上的氧气以及从外部电路 移动过来的电子结合形成水。燃料电池进行化学反应时,导线上形成的电子流为直流电流, 反应中燃料电池要排出水和热量。 氢释放电子变为氢离子以及氢离子与氧结合形成水的反应,只分别发生在气体、电极 和电解质三相接触的部分(三相界面),如图2.3所示,并且该面积的大小决定电流的大小。 实际上,氢与氧生成水的反应就是“水的电解反应”的逆反应。 2/t20(+电流)-->2马+02 公式2一(1) 在一个氢气.氧气的PEMFC中,半电化学反应式1481: f必斗2日++2e一 {1 【主D2+2H++2e-一/-z2D 这就是燃料电池的化学反应式,也是燃料电池技术的基本原理。 2.4.3乙醇燃料电池传感器技术 公式2.(2) 燃料电池型气体传感器的工作原理与燃料电池相同,它是利用某种还原性气体或液体 作燃料,使其在阳极发生氧化反应。产生的电流或电压信号与气体或液体浓度呈定量关系, 从而达到检测待测物质的目的。 乙醇燃料电池传感器为聚合物电解质膜燃料电池传感器[491[501,为低温型燃料电池,工 作温度在200C-2000C。一般采用杜邦公司的Nation膜作为聚合物电解质,具有良好的化学 耐受性和机械性,可制成薄膜来保证H+的自由移动,且具有酸性,满足酸性反应要求。在 Nation膜两侧沉积有催化剂,材料是贵金属铂,仅能使进入燃烧室内的乙醇气体充分燃烧 转变为电能输出,对其他气体不产生反应,输出没有任何影响,因而抗干扰能力强。 如图2.4所示为乙醇燃料电池传感器的结构示意图,反应了乙醇燃料电池传感器的工作 原理,电化学反应式【491为: 啄 舳 日 日 专 C e 删 卜 H + 2P 印扣乏 2 矿 + 知 专 H夕9 公式2.(3) 在电池的阳极一边,由于催化剂铂的作用,乙醇被氧化成乙醛,并释放出2个电子,在 阴极一边,从阳极迁移来的旷与空气中的氧发生反应,产生水并释放能量。总反应式为: 2c2HsOH+D2_2CH3CHO+2凰0 24 公式2一(4) 浙江理T大学硕十学位论文 乙醇气体 C2H50H(乙醇H 阳极 CH3CHO(乙醛)+2H++ze- 氢离子H+通过的电解质 取样电阻 (负载) 琵弦缢缢缢貉缁缢缢磁三盔琵“篮魄缢2蚴-2帮霉髟 空气中的氧≤z[—j∑ 电子沿外电路流动,形成电流 图2.4乙醇燃料电池传感器的结构示意图【50】 这样,电子(e.)通过外部的导线从阳极到达阴极,氢离子(H+)则通过电解质膜Nafion迁 移至阴极,从而在阳极和阴极之间产生电流,外接负载的情况下,可以在取样电阻上采集 输出电压。接着,要分析乙醇燃料电池传感器传输出电压与乙醇浓度的关系。 初步分析,电流的大小跟H+、e.的浓度成正比,也就和乙醇浓度成正比。根据能斯特 公式,在理想温度和系统压力范围内,乙醇燃料电池传感器输出电压与吸入乙醇气体的压 力满足下式: …。+尹RT c¨+器埘彘, 公式2一(5) 式中,Eo为标准压力下的电动势,£为各个气体的分压,丁为工作温度,F为法拉第 常数(96485C),R为摩尔气体常数8.314 J·mol-1.k一。 1阪砹瓦甲只伺厶醇气体嗣分比伺父化,田鼻父化到艺,叨厶酸、%、1-120酮分挫邵个 变,根据式2一(5)可得到电压的变化值: 肌等hc争 婉娟) 当乙醇浓度变化时,乙醇气体的分压即发生变化,会影响传感器的输出电压。 令国=石RT,昱=丘+△尸,将式2一(6)化为: △矿=汕(1+等) 公式2-(7) 依照麦克劳林公式,在iAP专0的条件下,有: p 浙江理丁大学硕士学位论文 △矿≈国—A—P:竺△尸 毋只 公式2一(8) 根据式2.(8)可以看出,保证一定压力值的条件下,即一定乙醇气体浓度下,乙醇燃 料电池传感器的输出电压变化值与乙醇气体浓度变化成线性关系,如图2.5所示为传感器输 出电压值与乙醇浓度关系。根据式2.(7)中的∞表达式,增加温度可以提高反应速率。另 外,在传感器接触乙醇气体的0~30s的时间内,输出电压增加较快,在30s后基本保持一个 恒定的值,响应特性较好,如图2.6所示为传感器输出电压与时间的关系。这就是乙醇燃料 电池传感器的基本工作原理。 lO 0S O6 乙醇气体浓度(mg/L) 图2.5传感器输出f乜压值与乙醇浓度关系 04 ^>吕v目脚丑集 O2 0O 0 10 20 30 40 50 卯 70 加 接触时间(s) 图2.6传感器输出电|压与时问的关系 2.5智能乙醇电子鼻系统总体方案 根据以上系统的硬件方案及软件方案分析,结合实际需求,系统设计以高性能、低功 耗的ARM7TDMI为硬件平台,移植ItCLinux操作系统、引到代码u-boot、文件系统JFFS2及 MiniGUI图形用户界面系统等,编写驱动程序及应用程序。 系统的总体框架如图2.7所示。 浙江理T大学硕士学位论文 总体方案 V 用户交互界面、应用程序 ‘, Ⅳ 图形用户界面支持系统(MiniGUl) ‘’ Ⅲ 嵌入式操作系统(ttClinux) ‘, Ⅱ 嵌入式操作系统驱动程序 ● I ARM硬件平台 Y 1(FueIceIl、LPC2210、nRF2401等) 实4 施 步2 骤 3 ( 串口、UsB、CelO等 : (移植u-b。ot、|I cI.nux、JFFs2等: ( 移植MiniGuI、LC。等 : 5 ( 编写应用程序代码等 : 图2.7系统总体框架图 根据需求分析,硬件系统划分了6个模块:包括核心的中央处理单元、信号采集及预处 理模块、数据显示及报警模块、数据通信模块、数据存储模块和人机交互模块,如图2.8 所示。 图2.8系统硬件结构图 中央处理单元是系统核心模块,参与系统的整个工作流程,包括信号的采集、处理、 显示、传输和存储,是信息的集成;信号采集及预处理模块完成对乙醇气体的信号采集和 预处理,是信息处理的初级阶段;数据显示及报警模块完成对测试结果的显示和指示报警, 是信息处理的中级阶段;数据通信模块完成数据的无线传输打印及通过USB接口或RS232 串行接口与上位机通信,是信息处理的高级阶段;数据存储模块采用NOR Flash作为系统 引到代码、嵌入式操作系统和MiniGUI开发库的存储器,以NAND Flash作为应用程序和采 集数据及日志的存储器,SDRAM作为程序运行空间,是信息处理的最后阶段;人机交互 模块完成操作人员通过按键进行不同类型的测试、相关参数的设定及数据的查询等操作, 浙江理J:大学硕士学位论文 是信息交互阶段。 软件系统通过编写嵌入式系统引导代码B00tLoader,移植嵌入式pCLinuX操作系统、 MiIliGUI图形界面开发库和JFFS2文件系统,编写和集成基于laCLinux操作系统的驱动程序, 最后编写基于MiniGUI的应用软件系统。系统软件结构如图2.9所示。 图2.9系统软件结构图 2.6本章小结 本章根据嵌入式智能乙醇电子鼻系统的需求,从硬件和软件两个方面提出了设计方案。 在硬件设计方案中,针对信息处理、信息存储和信息通信,分别对处理器的选择、存储器 的存储方式及三种通信方式做了分析和确定;在软件设计方案中,针对嵌入式操作系统、 文件系统和GUI系统做了分析,并确定采用嵌入式I_tCLinux操作系统、JFFS2文件系统和 MiniGUI图形界面开发库;另外本章还对乙醇电子鼻传感器方案做了详细分析,包括常用 的乙醇电子鼻传感器,燃料电池的技术原理和乙醇燃料电池传感器的工作原理,并选择了 乙醇燃料电池传感器作为“电子鼻’’;最后,对智能乙醇电子鼻系统的总体方案进行了总 结,并描述了实施步骤。 浙江理:T=大学硕士学位论文 第三章智能乙醇电子鼻系统的硬件设计 【本章摘要】本文主要阐述了智能乙醇电子鼻系统的硬件设计,对其进行了模块划分,并针对6人模块 的硬件电路设计分别做了详细的分析。 3.1引言 本章主要介绍嵌入式智能乙醇电子鼻系统的硬件设计方案及电路,本系统的硬件设计 方案主要是在以ARM微控制器LPC2210为控制核心的基础上提出的,根据系统的需求将整 个设计方案划分了6个模块,其中包括核心的中央处理单元、信号采集及预处理模块、数 据显示及报警模块、数据通信模块、数据存储模块和人机交互模块。本章将对各个模块的 硬件电路设计思路逐一进行阐述。 3.2硬件体系模型 根据系统6大模块的设计方案,得出如图3.1所示的系统硬件体系模型。其中中央处理 单元是系统核心模块,参与系统的整个工作流程,包括信号的采集、处理、显示、传输和 存储,该模块主要包括以ARM微控制器LPC2210为主的控制电路及其必要的外围电路,如 复位、时钟、供电等;信号采集及预处理模块完成对乙醇气体的信号采集和预处理,主要 完成将乙醇气体的化学量转化为模拟电量,再进行滤波、放大等处理,连接到中央处理单 元的A/D转换接口,该模块主要包括Fuel Cell传感器电路、压力传感器电路、信号滤波放大 电路、加热及温度传感电路及气泵装置;数据显示及报警模块完成对测试结果的显示和指 示报警,受中央处理单元控制,该模块主要包括LCD显示驱动电路、LCD显示接口电路和 SPEAKER报警电路;数据通信模块完成数据的无线传输打印及通过USB接门或RS232串行 接口与上位机通信,该模块主要包括RF射频传输电路、USB驱动接口电路、RS232串口驱 动电路等;数据存储模块完成对测试数据的本地存储,以供查询和上传,该模块主要是Flash 存储电路;人机交互模块完成操作人员通过按键进行不同类型的测试、相关参数的设定及 数据的查询等操作,该模块主要包括KEYPAD键盘电路和JATG调试电路。 浙江理J:火学硕士学位论文 Fuel Cell 传感器电路 : 置≥ 加热及 温度传 感电路 JATG 调试电路 KEYPAD 键盘电路 压力传感 电路 信号放大 滤波电路 LCD显示 接口电路 气泵装置 ARM7 LPC2210 LCD显示 驱动电路 SPEAKER 报警电路 Flash 存储电路 RF射频传II USB驱动l l RS232串[1 电 输电路 l I接n电路I l驱动电路 耄疆 圈3.1系统硬件体系模型 3.3中央处理单元模块 中央处理单元的核心是ARM CPU,ARM最llAdvanced RISC Machines的缩写,由英国 Advanced RISC Machines(ARM)Limited公司设计。ARM7系列处理器是低功耗的32位RISC 处理器。其最高频率可以达到30MHz。ARM7系列处理器支持16位元的Thumb指令集,使 用Thumb指令集可以以16位元的系统开销得到32位元的系统性能。ARM7系列包括: ARM7TDMI、ARM7TDMI—S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的 ARM7EJ.S。其中ARM7TDMI是广泛使用的32位嵌入式RISC处理器。本论文使用的Philips 公司生产的LPC2210 32.bitRISC微处理器就属于ARM7TDMI—S系列产品之一。 整个系统是以中央处理单元模块为核心的,它主要包括电源电路、复位电路及时钟电 路。而中央处理单元的核心芯片是ARM7TDMI.SCPU处理器LPC2210,如图3.2所示 LPC2210的管脚排列图。 浙江理:l:大学硕士学位论文 露媚!≥囊坐麴剿 M ——群! … .一 ●_‘ 鬻骢鹱誊骘雾鬻 拦’|藉乎 ⅢJm P7∞ 蘑i 蘸纂 ‰ 攀甚~璧1I鬟帮萝i篇。挚l ‘” i,.菱 |i 垂 ”;HⅢ,on“ |: ia。!==砉! ..i懋 :z‘=!:要: l 馨 2: !:==li B!.=:譬1 l 荟; } 香j 爱i;=l{ ;;;互:昌; :三;==二2: :£:#Z:二定: 卜瑚。 越” I: 刺]i 圭 袢H精s 娥 事{ l i 图3.2 LPC2210的管脚排列图 3.3.1电源电路 电源为整个系统提供能量,是系统工作的基础。由于LPC2210要使用两组电源,其中I/O 口供电电源为3.3V,内核及片内外设供电电源为1.SV,所以系统设计为3.3V应用系统。如 图3.3所示,由JO电源接口输入9V直流电源,二极管DO防止电源反接,经过电容C3和C4滤 波,然后通过LM2575将电源稳压至5V。使用LM2575开关电源芯片稳压,可以为功率较大 的负载提供足够的电流。当9V的模拟电源正常供电产生所需要的5V电压,发光二极管DS0 会发亮。 +gV 图3.3电源电路(1) 电源稳压至5V以后,通过使用LDO芯片,即低压差电源芯片,来稳压输出3.3V及1.8V 电压,如图3.4所示。LDO芯片采用的是SPXlll7M3.1.8和SPXlll7M3.3.3,该系列芯片输 3l 浙江理工大学硕十学位论文 州一麓VC茎6VSPXll7M3-3 茳 上 宁篙——二否i 上 .宁‰I一冷Yy., 、I宁△篙螋 罩 L一—迪吐L多,n吖、_1—△迪幽t +5v。_—,———L vIN voUT 上 牛宁‰ 昌 舀 { T一C。洲洲州8州10州 一一一SPXlll7M3-1.8-L ? 上 7 牛宁锰 加上m 图3.5复位电路 32 浙江理:J:人学硕+学位论文 图中的信号nRST连接到LPC2210芯片的复位脚RESET,当复位键RST按下时, CATl025JI一30的两菊亍引脚输出复位信号,使LPC2210,t…>片复位。其中芯片CATl025JI.30 的RESET的引脚上的下拉电阻 R2和RESET引脚上的上拉电 阻R4是必不可少的。 由于LPC2210微控制器的 RTC没有独立的时钟源,使用的 时钟频率通过对F。。lk分频得到, 所以CPU不可以进入掉电模式, 因此,系统采用外部时钟芯片提 …工冀3Ⅷ砷呦 供时钟信息,如图3.6所示。 图3.6 RTC电路 该RTC电路是低功耗的实时时钟电路,通过标准的12C接口电路与中央处理单元通信。 以M41T1l作为核心芯片,采用3V的锂电纽扣电池供电,它是一种12C总线的串行接口实时 时钟芯片,工作电压在2.0V05.5V。M41Tl l的TIMEKEEPER RAM是一个低功耗的512 bit 静态CMOS RAM(64bit*8),采用50mA/h 3V的锂电纽扣电池,保存数据的时间可达5年之 久,它还内嵌一个由外部晶振控制的32.768KHz的钟摆,其中RAM的高8位控制时钟/日历 功能的切换,并完全采用BCD码提供秒、分、时、日、星期、月和年的时间信息,并带有 闰年补偿功能,地址和数据通过12C双向数据总线串行传输,内置了电源电压监控电路, 可使芯片在掉电时自动转入电池供电模式。 3.4信息采集及预处理模块 信号采集及预处理模块是系统非常重要的模块之一,是智能乙醇电子鼻系统的鼻子。 信号采集及预处理模块完成对乙醇气体的信号采集和预处理,首先要完成的是通过燃料电 池传感器将乙醇气体的化学量转化为模拟电量,然后进行滤波、放大等处理后,传输到中 央处理单元的A/D转换接口。该模块主要包括Fuel Cell传感器电路、压力传感器电路、信号 滤波放大电路、加热及温度传感电路及气泵装置。 33 浙江理_:l=大学砸士学位论文 3.4.1FuelCell传摩器电路 Celll㈣,2 Fuel Cell传感器电路根据Fuel Cell传感器的结构设计,采用7位捧针排母的接口方式,其 中Puel Cell传感器上附有7位的排母,如图3.7所示,两端的1、7位是Fuel 和6引脚控制加热电阻,3、4、5引脚主要完)燕Fuel cell的温度控制。其中要说明的是HEAT 通过场效应管Ql连接到6引脚用来控制加热电 阻工作,HEAT是WLPC221嗵过74LCX373扩 展出的埠。如图3.8所示为FuelCell的实体图。 图土7FⅡcIc印传瘟器电路 3.4.2压力传感器电路 压力传感器电路是使能系统采样的关键,Fuel Cell传感器对气流中的乙酵气体有一个反 应过程,为了实现电压变化与乙醇气体浓度之间的近似线性关系,需要控制进气的压强, 只有当呼气压力达到默认值的时候,才能保证有效采样。因此,在电路设计过程中,在Fuel Cell燃烧室的气管后,安装一个气体压力传感器,如图3 9所示。当人体呼气流出燃烧室, 压力传感器检测气流压力,转化为电信号,通过微功耗fltJCMOS运算放大g;OPA336放大输 出给PSENSEiJ]脚,其中该 引脚连接到LPC2210的 P2 25,当气流压力达到预 定的数值时,PSENSE输出 高电平,LPC2210发出指 令控制信号采集及预处理 模块开始采样,从而将气 体中的乙醇浓度值转化为 电量输出。 图3.9压力传赙器电路 浙江理jr大学硕十学位论文 3.4.3信号滤波放大电路 信号滤波放大电路是信号预处理的重要环节,主要完成对Fuel Cell传感器采集信号的使 能和信号的滤波放大。如图3.10所示,电路的最前端有一个场效应管Q3,主要完成信号采 集的使能和禁止,当压力传感器电路判断压力无效时,LPC2210发出高电平的FCELL SHORT信号,Q3的漏极和源极导通,使Fuel Cell放电,从而阻止了信号的采集;当压力传 感器电路判断压力有效时,LPC2210发出低电平的FCELL SHORT信号,这样信号滤波放大 电路就可以正常采集Fuel Cell两端的电信号。电路的核心器件是微功耗的CMOS运算放大 器OPA336,单电源供电即可工作,最低到2.1V,采用RAIL—TO—RAIL技术,功耗仅为201.t A,输入偏置电流仅为10pA,非常适合运用于微电流转电压的设计。当呼气气流经过Fuel Cell传感器燃烧室的时候,一旦含有乙醇气体,Fuel Cell两端就会对负载产生微弱电流信号, 满足压力条件后FCELL+和FCELL.就会和R13形成回路,产生电压Ui。其中R14=R15, R16=R19,为匹配电阻,Fuel Cell的电压增益系数是R19/R14,VRl和R17负责调节Fuel Cell 的偏差电压。放大处理后的电压信号,经过R20和C52、C53滤波,取出了噪声信号,最后 的FCELL信号连接到了LPC2210的AIN0 ̄AIN3引脚。 LPC2210的A/D转换器的基本时钟由VPB时钟提供。可编程分频器可将时钟调整至逐步 逼近转换所需的4.5MHz。10位元精度要求的转换需要11个A/D转换时钟,测量范围在 0-3.3V,10位的转换时间>2.241as。在使用ADC模块时,先要将测量通道引脚设置为AINx 功能,然后通过ADCR寄存器设置ADC的工作模式,ADC转换信道,转换时钟,并启动ADC 转换。系统是通过查询方式等待ADC转换完毕的,转换数据保存在ADDR寄存器中。 AVDD3 t攀~丁L Ⅷ汽黑 — 049 3 lllF pF AGND R15 、/一、 IK R19 图3.10信号滤波放人电路 浙江理T大学硕士学位论文 3.4.4加热及温度传感电路 加热及温度传感电路是Fuel Cell传感器电路的辅助电路, 辅助完成加热和温度控制功 能。如图3.1l所示,在7位排针接口中,两端的l和7位连接到Fuel Cell传感器的正负极,2 和6位接加热电阻板两端,加热电阻板采用4宰120fl的 贴片电阻,用来加热燃烧室,控制其工作的在Fuel Cell 传感器电路有介绍;此电路的温度测量芯片采用的是 LM60,是一款高精度的温度传感器,2.7V供电电压, 测量范围在400C,-,+1250C,LM60的输出电压与温度 基本成线性关系(+6.25mV/oC),并且存在一个直流偏 移(+424mV),即Vo=(+6.25 mV/oC X T oC)+424 mV, 因此,在.400C ̄+1250C的范围内,正常的输出电压范 围应该是+174 mV~+1205 mV。LM60采用SOT-23封 装,体积较小,适合安装在小型加热板上。最后,用 导热材料的黏合剂将加热板固定在燃料电池上。 图3.U加热及温度传感电路 3.4.5气泵装置 气泵装置是信号采集及预处理模块的主要组成部分,也是压力传感器电路的辅助电路。 气泵的气囊进气口与Fuel Cell燃烧室的出气口通过气管相连,并且与压力传感器进气端的 气管相连,气泵装置的关键部分在于用到了电磁吸 铁RG—O一0520L,供电电压DC3V~DC48V,如图 3.12所示,L4为电磁吸铁,其中SOLENOID—MAX 信号控制L4的吸合,当SOLENOID.MAX为高电平 时,Q4源极和漏极导通,L4工作进行抽气,反之, R2lB L4通过D2放电,回复原位。SOLENOID.HOLD信 25W 号控制L4保持抽气状态,当SOLENOID.HOLD为高 电平时,Q5源极和漏极导通,由于R21的分压和限 流使得L4不会达到饱和状态, 只要 SOLENOID.HOLD是一个连续的脉冲,即可保证L4 连续的抽气,这适用于被动测试模式。 图3.12气泵装置电路 36 浙扛理工_人学硕士学位论文 t扫fFuel ceu燃烧室的容量是固定的,进入燃烧室的气体压力肯定会因人而异;同样, 就个人而言,每次呼出气休的压力值也会各不相同。这里只考虑压力超过规定值的情况(因 为若压力不到规定值,处理器会通过压力传感器判断此次采样无效),特别是在采样的初 期,瞬间的压力值可能会比较大。因此,采样初期的输出电流会产生波动,在压力传感器 感知瞬间较大的压力值消失以后,燃烧室的气体压力逐渐进入稳卷,此时,输出为恒流, 处理器就会发出高电平的 SOLENOID-IvIAX信号,启动L4抽气采 样,同时抽去燃烧室内及气管中的残余 气体,保证下次检羽4不会受影响,这种 方法可保证每次检测时所用样品容量 的一致。如图3.13所示为电磁吸铁与气 囊的实体图。 目飘”电磁吸铁与气囊的实体图 3.5数据显-V,,R报警模块 数据显示及报警模块是系统与用户交互的前提,不仅提供了用户图形界面的硬件条件, 而且提供了报警指示功能,可以直观醒目地表达铡试结果。该模块主要分为两部分,即: 数据显示电路和指示报警电路。数据显示电路要完成处理器处理后的数据显示,将测试结 果分不同类别显示缭用户,并为用户设置和操作系统提供方便;指示报警电路要完成系统 初始化指示、测试完成指示、测试失败报警、测试超标报警等功能,方便用户对测试过程 及结果有一个直观的判断。 3.5.1数据显示电路 数据显示电路,如图3.14所示,该电路的芯片是TFT4267液晶模块,屏幕大小为2 2英 寸,点像素为240x320,内带液晶控制器和液晶驱动器,支持真彩邑2.62K色。 TFT4267液晶模块的工作电压为2.7~2 9v,内带白光LED背光灯,可以直接使用8位、 16位、18位总线方式与控制器连接(因为液晶模块内部包含IS6D0129液晶控制驱动91)。 如图3.14,在3 3v电源上串接一个1N5400二极管,将电压降至3.Ov,然后再串接5n的电阻, 使TFT4267的供电电源接近于2.9V。 为了得到更高的数据传输效率,设计电路时采用16位总线接12,按照s6D0129芯片数 据手册说明,需要将IM3、IMO引脚接0dg习z。16位数据分别为D17~D10、D8~Dl引脚, 末使用的DO、D9接地。 浙江理丁人学硕十学位论文 图3.14数据显示电路 TFT液晶接口电路是采用PACK板形式与主板连接,将TFT4267液晶模块的LCD RST 引脚连接至U/P4连接器上,使用主板的LPC2210的P0.22控制液晶模块复位,当LCD RST低 电平时,TFT4267复位。TFT4267液晶模块的LCD CS、LCD WR和LCD RD引脚均连接到 JP4连接器上,与主板的LPC2210的片选、写和读信号连接(主板上分配了一个片选信号给 液晶模块),而LCD RS引脚则使用A1连接,当A1为高电平时为数据操作,当A1为低电平 时为命令/索引操作,使用两个不同的地址来区别向TFT4267液晶模块发送命令还是发送数 据。在16位的总线接口,索引/指令的操作地址是0x83200000,数据读写的操作地址是 0x83200002。 TFT4267液晶模块的背光是LED背光,采用3个白光LED并联连接,其驱动电压最大值 为3.3V。由于LCD PACK板上只有3.3V的电源,所以要设计相应的升压电路。CAT3200ES6—5 就是专门用于并联连接的白光LED驱动的升压芯片,固定输出电压为5V,最大驱动电流为 100mA。CAT3200ES6.5的/SHDN为输出关闭控制引脚,由LEDC信号控制(与主板的 LPC2210的PWM引脚P0.21相连,可以使用PWM控制背光的亮度),为了保证LEDC连接的 I/O没有配置为输出时也能点亮LED背光,所以接了一个10K的上拉电阻R29。 3.5.2指示报警电路 指示报警电路中有两个独立的LED,分别由P2.30和P2.31控制,采用共阳极驱动方式, 38 浙江理。r大学硕十学位论文 电路如图3.15所示,当相应的I/O输出为O时LED灯点亮,输出为I:是:LED灯熄灭。一般LED 的压降为1.7V,LED点亮时的电流为 ILED=(VDD-VLED)/IP(3.3V-1.7V)/470tl-≈-,0.0034A=3.4mA 而LPC2210的Ioi的最小值为4mA,可以使用I/O直接驱动。 报警电路的蜂鸣器使用的是PNP一=极管Ql vDD3。3 进行驱动控制,当P0.7控制电平输出0时,Q1 导通,蜂鸣器报警;当P0.7控制电平输出1时, Q1截止,蜂鸣器停止报警。 当系统初始化完毕,LEDl和LED2都点亮, 表示可以进行测试;当测试失败时,LEDl和 LED2会连续闪烁,直到系统再次初始化,同时 蜂鸣器会短鸣一声以警示;当测试成功,LEDl 和LED2交替闪烁,直到系统再次初始化,此时, 如果测试超标,蜂鸣器会长鸣一声以警示,如 果不超标,蜂鸣器会短鸣两声。 图3.15指示报警电路 3.6数据通信模块 数据通信模块是系统与外界交流的通道,主要负责与PC机和射频打印机之间的通信, 包括RS232串口驱动电路、USB驱动接口电路和RF射频驱动电路。RS232串行接口和USB 接口负责与PC机通信,上传数据或下载更新系统程序;RF射频传输接口负责与匹配的射频 打印机进行测试数据的传输,完成无线打印功能。以下将一一介绍每个通信接口的实现方 法: 3.6.1 RS232串口驱动电路 由于RS.232的逻辑0电平规定为十5 ̄+15V,逻辑1电平规定为本.15~5V,因此在与1vrL 电路连接时必须经过电平转换。转换的方法很多,比如:三极管和其他分离元件搭成,也 可以直接用电平转换芯片,用芯片,有它的好处,体积小,连接方便,而且抗静电能力强。 这里由于系统电源是3.3V,所以使用SP3232E进行RS232电平转换,SP3232E是RS232收发 器对便携式或手持式应用的芯片。SP3232E有一个高效的电荷泵,工作电压为3.3V时只需 0.11.tF电容就可进行操作。电荷泵允许SP3232E在+3.3v至tJ+5.0V内的某个电压下发送符合 RS.232的信号。SP3232E是一个2驱动器、2接收器的器件,适用于便携式或手持式设备。 39 浙江理T大学颈十学位论文 SP3232E芯片的ESD保护使得驱动器和接收器的管脚可承受:t:15kV人体放电模式和 IECl000-4-2气隙放电模式。 SP3232E由3个基本电路模块组成:1.驱动器;2接收器;3.Sipex特有的电荷泵。其 中驱动器是一个反相发送器,它将1TL或CMOS逻辑电平转换为与输入逻辑电平相反的 EIA/TIA-232电平。典型情况下,RS-232空载时输出电压范围是士5.5V,满载时至少为±5 5V。 发送器的输出被保护,预防一直短路到地的情况,从而使得其可靠性不受影响。驱动器输 出在电源电压低至2.7V时也可满足EIA/TIA-562的=t:3.7V电平。接收器把ELA/FLA-232电平转 换成TTL或CMOS逻辑输出电平。所有的接收器有一个反相三态输出。当使能控制EN为高 时,这些接收器输出(RXOUT)为三态。电荷泵是Sipex的专利设计,相对其他早期产品 的低效设计,它使用了一种独特的方法。电荷泵仍然需要4个外接电容,但运用一种4相电 压转换技术,保持输出对称的5.5V电源。内部源电压由一对可调节的电荷泵组成,即使输 入电压(VCC)超过+3.0V到+5.5V的范圈,电荷泵仍提供5.5V输出电压。电路设计中通过 在C7x处连接一个0 1llF 的旁路电容来对电源去 耦,如图316所示。在对 电源噪声敏感的应用中, 用一个与电荷泵电容 C71值相同的电容接地 来去耦VCC,要尽量使 C7x旁路电容与SP3232E 紧售纛一 更靠近。 lil3.16RS&32串口驱动电路 3.6.2USB驱动接口电路 3.6.2.1 USB系统架构 深入理解USB系统架构,即各通信模型的层次关系是开发USB设备接口的前提条件。 USB系统DlJ【521主要山3部分组成:usB主机、USB设备和USB的互连。各通信模型之问的 层次关系如图3.17所示。一台主机与一个USB设备问llq连接是由许多层相互连接组成的。 USB总线接口层处理电气及协议层的互连并提供主机和设备之问的物理连接和数据包 连接。从互连的角度考虑,USB设备和主机都提供类似的USB总线接口。在物理结构上。 设各通过C2D连接到主机;而在逻辑上,主机是直接与各个逻辑设备通信的。 浙江理工人学硕士学位论文 一个USB设备在逻辑上由端点、接口、 物理设鲁 配置组成,对USB系统来说它就是一个端 点集合。系统软件基于逻辑设备来完成对 设备的一般操作。USB系统软件包括USB 驱动程序、主机控制器驱动程序和主机软 件。这里主机控制器驱动程序由主机系统 提供。 功能层可以通过与其相配合的客户软 件来完成一个USB物理设备的功能。主机 上的客户软件和设备功能部件之问的通 <:二爿逻辑置信漉 信基于实际的应用需求及设备所提供的能力。 图3.17 USB系统架构 一个客户软件不能直接访问设备的硬件,必须通过USB软件编程接口才能操纵功能部件。 USB设备提供的功能是多种多样的,但面向主机的接口却是一致的。所以,对于所有 设备,主机可以用同样的方式来管理它们与USB有关的部分。USB设备接口的开发主要是 设计中间层的功能与操作,实际上开发集中在主机的系统软件和设备接口的硬件与固件 上。 USB的基本思想在于共享,即多个设备共享一条总线。实现多个设备共享一条总线的 关键在于设备与主机的接口特征及传输信息的标准化和规范化,并恰当地把共享总线的带 宽分配给每个传输管道。USB的数据传输事务总是由主机发送标志包开始,并由主机来管 理和安排所有的USB通信事务。主机把时间分成1毫秒间隔的帧,并在每帧的开始时刻将帧 起始标志包广播出去,同时主机把每个帧的时间按事务逐一分给各个传输。一个传输可以 包含多个帧,而一个事务必须在同一帧内发生。 USB中数据传输的结构比较复杂,其实际规范是将一个完整的传输过程(transfer)分解成 若干个数据传输事务(transaction),而每个传输事务通常是由一个标志包(Token Packet)一个 数据包(Data Packet)和一个握手包(Hand shade)组成。包是USB信息传输的最基本的概念对 应于批量、控制、中断和同步4种数据传输方式,USB规范定义了4种类型的传输事务来处 理总线上的数据传输。USB设备与主机之问的数据传输是通过逻辑上的管道进行的。一个 USB管道是驱动程序的一个数据缓冲区与一个外设端点的逻辑连接它代表了在二者之间移 动数据的能力。 USB数据通信可以划分为2个阶段:列举阶段和应用阶段。列举阶段主要发生在设备的 41 浙江理一I:火学硕十学位论文 初始化过程中,在这个阶段主机了解设备特性并根据设备的要求进行系统和设备的配置, 建立主机与设备之间的数据通道。在列举阶段对USB主机和设备的操作进程有明确、清晰 的理解是开发USB接口固件和主机驱动的前提。应用阶段是指主机和设备为实际应用的需 要而进行数据交换的通信过程。 3…6 2 2基于USBN9604的电路设计 USB设备接口在具体实现USB协议和规范的基础上,为USB功能设备提供与主机实现 各种方式数据通信的桥梁,在主机看来它就是外设。USB设备接口的功能由接口硬件和控 制固件共同完成,而硬件的功能通常被集成在一个芯片内。 ‘ 3.6.2.2.1 USBN9604 USBN9604153】【541是National Semiconductor公司设计生产的一款较新型的专用USB通信 控制芯片,是USBN9602的改进产品,同时在时钟产生电路的复位机制上又较USBN9603 有所改进。USBN9604支持全速传输,可满足USBl.0和1.1协议。它具有8位并行接口,支 持DNIA、MICRDWIREI PLUS。图3.18是USBN9604的内部结构框图。其主要特点如下: ·工作频率为48MHz,但外部只需接24MHz晶振,因为芯片内部有倍频电路。 ·可由编程时钟发生器编程产生不同的频率时钟,以作为外部器件的时钟信号。 ·带有串行引擎接口(SIE),实现USB物理层和信号层协议的转换,主要有CRC校验/ 产生、PID校验/产生、位填充/解除填充、地址识别、握手评估/产生、并串转换等。 ·带有7个端点的USB功能控制器,每个端点对应一个FIFO。其中端点0是双向控制 端点,另有3个发送端点和3个接收端点。 图3.18 USBN9604的内部结构 42 浙江理工人学硕+学位论文 USBN9604内部有64个映射到内存的寄存器,主要有主控制寄存器(MCIVFRL)、时钟 配置寄存器(CCONF)、主事件寄存器(NIAEV)、转换事件寄存器(ALTEV、接收发送事件寄 存器(RXEV,TXEV)以及各端点的控制寄存器和收发数据及状态寄存器等。固件的大部分 功能就是完成对此寄存器组的读写,实现对接口的配置、接口状态的转换以及数据在外设 和计算机之间的传输等。 3.6…2 2 2 USBN9604硬件电路 USBN9604设备驱动接口电路如图3.19所示,主要是以USBN9604为中心设计, USBN9604分别与USB物理接口及微处理器的连接,采用了24MHz的卧式晶振。数据线D+ 和3.3V电压源之间的1.5161电阻R64,用于向主机表明这是一个全速的设备。USBN9604有 一个内部的3.3 V的电压调节器,它能自我调节以适应内部和上拉电阻的供电需求。在设计 中,不用的管脚通过一个电阻接地,以便在USBN9604的输出缓冲区允许时,可以确保较 低的能耗,并且防止USB接口设备遭到破坏。 7 图3.19 USB驱动接口电路 其中与LPC2210弓I脚相连的CS.USB为USBN9604的片选信号,SPI.CLK-USB/RF为传输 时钟信号,USB.INT为USB传输中断信号,SPI.DATA.IN.USB/RF和SPI.DATA—OUT-USB/RF 为USB与处理器的进行数据传输的I/O信号,USB.RSTn为USBN9604的复位信号。如果USB 缆线被拔出,USBN9604会自动停止工作,当USB缆线重新插入后,USBN9604重新恢复操 作。另外注意到电路中的Q7、R67、R68,USB接口处于工作状态时,Q7的集电极就会发 43 浙江理1:大学硕士学位论文 出高电平的USB.ACTIVEn信号通知处理器。该USB芯片的接地端与处理器的接地端是连在 一起的,防止USB接地端的噪音影响处理器和逻辑电路的工作。 3.6.3 RF射频传输电路 3.6.3.1 nRF2401 nRF2401[321是单片射频收发芯片,工作于2.4~2.5GHz ISM频段,芯片内置频率合成器、 功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。 芯片能耗非常低,以.5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有 1 8mA,多种低功率工作模式,节能设计更方便。其DuoCeiverTM技术使nRF2401可以使用 同一天线,同时接收两个不同频道的数据。nRF2401适用于多种无线通信的场合,如无线 数据传输系统、无线鼠标、遥控开锁、遥控玩具等。 3.6.3.1.1芯片结构、引脚说明 nRF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、 低噪声放大器、频率合成器,功率放大器等功能模块,需要很少的外围元件,因此使用起 来非常方便。QFN24;JI脚封装,外形尺寸只有5x5mm。nRF2401的功能模块如图3.20所示。 引脚说明如表3.1所示: 引脚 l 2 3 4 名称 CE DR2 CLK2 DOUT2 图3.20 nRF2401功能模块图 表3.1 nRF2401iJI脚说明 功能 数字输入 数字输出 数字I/O 数字输出 描述 是nRF2401一11作丁接收或发送状态 频道2接收数据准备好 频道2接收数据时钟输入,输出 频道2接收数据 浙江理丁人学硕十学位论文 5 CS 数字输入 配置模式的片选端 6 DRl 数字输出 频道1接收数据准备好 7 CLKl 数字!/O 频道l接收数据时钟输入/输出 8 DAn 数字I/(3 频道l接收/发送数据端 9 DVDD 电源 电源的正数字输出 10 VSS 电源 电源地 11 XCl 模拟输出 品振I 12 XC2 模拟输入 品振2 13 VDD PA 【乜源输出 给功率放人器提供1.8V的电压 14 ANTl 天线 15 ANT2 天线 天线接口1 天线接V12 16 VSS F.A 电源 电源地 17 VDD 电源 电源止端 18 VSS 电源 电源地 19 IREF 模拟输入 模数转换的外部参考电压 20 VSS IU源 电源地 21 VDD 电源 电源止端 22 VSS 电源 电源地 23 PWR IIP 数字输入 芯片激活端 24 VDD 电源 电压止端 nRF2401的一些管脚具体功能如下:PWR-UP为上电端,CE为工作状态使能端,CS为 片选端,控制器通过对nRF2401的PWR UP、CE和CS管脚状态组合设置,控制m心240l的 主工作方式。当状态组合为l、l、0,1、0、1或1、0、0时,芯片分别处于激活、配置或 保持方式。当PWR UP置0时,芯片处于掉电状态。CLKl、CLK2为通道1、2时钟信号端。 由控制器提供,在突发模式下,在时钟信号的下降沿从nRF2401的DATA管脚读出数据。 DATA、DOUT为通道1、2数据端,控制器与nRF2401由CLK、DR和DATA组成的三线接 口交换传输的数据。通道1可接收和发送数据,通道2只能接收数据。 3…6 3 1.2工作模式及配置 nRF2401有工作模式有四种:收发模式、配置模式、空闲模式和关机模式。nRF2401的 工作模式由PWR UP、CE和CS=个引脚决定,详见表3.2: 表3.2 nRF2401一I:作模式 :J:作模式 PWR UP CE CS 收发模式 l 1 0 配置模式 l O l 空闲模式 1 0 O 关机模式 O X X nRF2401的收发模式有ShockBurstTM收发模式和直接收发模式2种,而nRF2401的所有配 置工作都是通过CS,CLKl和DATA 3个引脚完成,把其配置:为ShockBurSt刑收发模式需要 15字节的配置字,而如把其配置为直接收发模式只需要2字节的配置字。本文采用 45 浙江理工人学硕士学位论文 ShockBurstTM收发模式,该模式系统具有编程简单,稳定性高等特点。ShockBursp的配置 字使nRF2401能够处理射频协议,在配置完成后,在IlI疆2401工作过程中,只需改变其最低 一个字节中的内容,以实现接收模式和发送模式之间切换。下面是这种模式的工作方法: ShockBurstTM收发模式:ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据 低速从微控制器送入,但高速(1 Mbps)发射,这样可以尽量节能,因此,使用低速的微控 制器也能得到很高的射频数据发射速率。与射频协议相关的所有高速信号处理都在片内进 行。在ShockBurs∥收发模式下,nRF2401自动处理字头和CRC校验码。在接收数据时,自 动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,当发送过程完 成后,数据准备好引脚通知微处理器数据发射完毕。 简单介绍一下nRF2401的收发流程: · ShockBur一发射流程,接口引脚为CE,CLKl,DATA。 1)当微控制册有数据要发送时,其把CE置高,使nRF2401工作; 2)为把接收机的地址和要发送的数据按时序送入I心2401; 3)微控制器把CE置低,激发nRF2401进行ShockBurS—4发射; 4)nRF2401I拘ShockB一发射:(1)给射频前端供电;(2)射频数据打包(加字头、 CRC校验码);(3)高速发射数据包;(4)发射完成,nRF2401进入空闲状态。 · ShockB一接收流程,接口引脚为CE,DRl,CLKl和DATA(-接收通道1)。 1)配置本机地址和需要接收的数据包大小; 劲进入接收状态,把CE置高; 3)200 US后,nRF2401进入监视状态,等待数据包的到来; 4)当接收到正确的数据包(正确的地址和CRC校验码),nRF2401自动把字头、地址 和CRC校验位移去; 51 nRF2401通过把DRI置高来通知微控制器; 61微控制器把数据从nRF240 1移出; 7)所有数据移完,nRF2401把DRl置低,此时,如果CE为高,则等待下1个数据包, 如果CE为低,开始其他工作流程。 3.6.3.2 RF射频电路设计 nRF2401射频电路设计中采用Nordic公司给出的参考电路‘55】【561,如图3.21所示,C82、 C83为去耦合电容。天线部分参考电路采用的是鞭型天线,所占空间较大。现在无线通信 浙江理工大学硕士学位论文 领域常采用的天线是倒F型天线。倒F天线结构紧密,带宽适中,不容易损坏,而且和鞭型 天线比起来功率吸收更小。因此本设计采用倒F天线。匹配网络由L4、L5、C78、C79、C80 和C81构成。 其中nRF2401的芯片激活端由处理器的PWR UP信号控制,CE RF为发射接收状态切换 信号,CS RF为片选信号,RF DATA提供传送的数据,SPI CLK USB/RF为时钟复用信号, 除了为USB接口传输提供时钟频率,也为RF射频传输提供时钟频率, SPI DAlrA IN USB/RF和SPI DATA OUT USB/RF为nRF2401芯片与处理器的进行数据传 输的I/O信号,I/O信号是通过三态输出高有效四总线缓冲器74LCXl25进行通信的。 VCC RF 对嗣弩 笾幽墩3] —■节‘ 一74Lcxl2h'MTC I…… 忙啪 高 到= ll“拷nRF'IA01 ;!;,当{ ;cE! ;l :卜: ;DR2 ; i踹 2 6。C弧S1. !舍: 。VDD_VA11‘。 ;; 】f )一 C; {疑 ~。.L .:I—— 竺I 凸 一 一一 I R60 一t·降} 一 j产}工品事 一L.........._J 孑m tIJNK I怫盯d;一意丁&," 蔗u。啪塞i。;墓一纛 占Y3 山口卜互 IU9 lM : =c75 笠pF = --C76 22uF 怒 = P一‘ 图3.21 nRF2401射频电路图 3.7数据存储模块 数据存储模块是智能乙醇电子鼻系统的大脑,用于存储记忆数据。除了对程序数据存 储外,还需要存储测试及相关数据。因此硬件电路需要两种存储器件:一是NOR FLASH 存储器,用于存储系统引导程序:另一种是NAND FLASH存储器,用于存储操作系统、应 用程序及测试相关数据。由于LPC2210仅含有片内16KB的静态RAM,因此需要扩展外部 存储电路。LPC2210具备外部存储器接口,通过外部存储器控制器(EMC)可以扩展4个 Bank的存储器组(Bank0--,Bank3),每个存储器的空问大小为16MB。LPC2210的EMC符合 ARM公司的PL090标准,总线宽度可设置为8位、16位和32位,通常使用16位总线宽度的存 储器具有较高的性价比。 47 浙江理下大学硕七学位论文 3.7.1系统存储器电路 Flash存储器具有体积小、容量大、成本低、掉电数据不丢失等一系列优点。目前己经 逐步取代其它半导体存储元件,成为嵌入式系统中重要数据和程序的载体。由于电子皮带 秤功能复杂,涉及的外设、软件众多,本文需要使用p.Clinux操作系统管理系统的资源,而 操作系统的移植又需要BootLoader的支持,因此,本文系统需要使用存储空间较大的FLASH 存储器。本文使用Intel公司的16位4M字节的NOR Flash存储器28F320C3B。28F320C3B适 用于系统对功耗有严格要求的场合。正常情况下该芯片驱动电压为3V,但其支持低电压驱 动。在2.7V-3.6V电压驱动下,仍然可实现高速度、低功耗的读写及擦除。28F320C3B可灵 活实现块加锁,可对单个的块加锁和解锁,同时还附带了硬件写保护引脚。因此其具有较 竺兰兰1蚕凶 高的安全性及稳定性,将为电子皮带秤程序的存储提供良好的保障。 Ⅷ笋一…… JP5 一 ·广士—R7_8{4=7)K———_L c1 D3t. 3'—, 亡lO二K 卜墨 ——Z—‰ ——P—'—2—2—6 ——一 BOOTOVD 图3.22系统存储器电路圈 如图3.22所示,28F320C3BiJI脚可以分为四类: ◆A0~A20是地址输入,用于输入Flashl内数据存储地址,为输入端口。 ◆D0-D15为数据端口,用于传输读出与写入的数据,为双向端口。 ◆CE、WE、OE、RP与WP为控制信号,均为低电平有效。其中CE为片选,在电路 48 浙江理T大学硕士学位论文 中接nCE F引脚,WE为写允许信号,低电平时可对存储器写命令和数据。OE为输出允许 端,低电平时可从存储器读出数据。RP为复位端,通过该引脚可使Flash复位,电路中接复 位信号。WP为写保护端,其以硬件方式实现对存储数据的保护。 ◆VCC、VCCQ与Ⅵ执分别为芯片电源接入端、端口电源接入端和芯片编程/擦除供 电端,在电路中三者接3.3V电源。 28F320C3B电路图如图3.22所示。图中,A0~A20接LPC2210的地址引脚Al叫啦!。注意 此处没有用A0,--A20与A0~A20连接。这是因为LPC2210存储器电路可以使用8位、16位和32 位三种数据宽度读写数据,因此其对应不同数据宽度的存储器的地址线与系统地址线的连 接方式也不同。对于位数据宽度的存储器,其存储器地址线与系统地址总线直接连接,A0 与A0相对应i对于16位数据宽度的存储器,存储器地址线与系统地址线要错一位相连,Al 与A0相对应。对于32位存储器,地址线与系统总线要错二位相连,A2与A0相对应。本文 中,28F320C3B数据宽度为16位,A1与A0相对应。28F320C3B的D0-D15与LPC2210数据 线D御阪O~DA=I’A1 5相连。 除了扩展了4 MB的NOR FLASH(芯片型号是28F320C3B),为了方便程序调试应用, 也扩展了8 MB的PSRAM(芯片型号是MT45W4MWl6),使用了LPC2210*F部存储接口的 Bank0和Bankl地址空间,并且通过设置跳线将片选信号nCS0和nCSl分别分配给SRAM和 NOR FLASH。在使用JTAG调试程序时,分配S咄为Bank0地址,因为Bank0可以进行异 常向量表的重新映射操作。当最终代码固化至IJNOR FLASH时,分配FLASH为Bank0地址, SRAM为Bankl地址。因为Bank0可以用来引导程序运行。为了能够对MT45W4Mwl6的字 单元进行单独的字节操作,要将LPC2210的nBLS0和nBLSl引脚连接到MT45W4Mwl6的 LB和UB引脚。 3.7.2 NAND FLASH存储器电路 为了存放I.tClinux操作系统资源、应用程序和测试及相关数据,扩展了16 MB的NAND FLASH(芯片型号是K9F2808UOC),映射到了LPC2210夕I-部存储接口的Bank3地址空间, 如图3.23所示。由于对K9F2808UOC芯片的操作有特定的时序要求,所以使用了一个可编程 逻辑器件ATFl6LV8C,通过处理器的nCS3信号和A23-A21地址进行地址译码,产生合适的 片选信号(F nCS)、读使能信号(F nOE)和写使能信号(F nWE)。 在图3.23中,K9F2808UOC的I/Oo ̄I/07引脚直接与LPC2210的D0-D7相连,通过数据总 线发送地址、命令和数据。K9F2808UOC的CLE和ALE引脚分别连接蛰JLPC2210的A20和A19 引脚,这样就可以通过不同的地址来区别对K9F2808UOC的命令、地址和数据操作。为了 49 浙江理工人学硕士学位论文 兼容使用16位的数据总线接口的NAND FLASH芯片,电路将LPC2210的D8~D15也连接到 了K9F2808UOC的相应引脚。 VDD3.3 图3.23 NAND FLASH存储器电路图 3.8人机交互模块 人机交互模块为设计者提供调试平台,为用户提供操作平台。包括JTAG调试接口电路 和键盘电路。 对于ARM的调试一般有两种方法:一种方法是采用第三方生产的专用仿真器,仿真器 提供了深入的调试功能,可全速仿真时速很高的ARM处理器,通常采用较复杂的设计和工 艺,但价格昂贵;另一种方法是采用JTAG电缆,其可实现程序的单步和全速调试,调试效 果有限,但价格低廉。本文采用JTAG电缆实现ARM调试。JTAG(Joint TestAction Group, 联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、 调试。JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP(Test Access Part,测试访问口),通过专用的RAG测试工具对内部节点进行测试。目前大多数比 较复杂的器件都支持JTAG协议,如ARM,DSP,FPGA等。JTAG接口电路如图3.24所示。 相关JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚 输入JTAG接口;TDO为测试数据输出,数据通过TDO弓I脚从JTAG接口输出;TMS为测试 模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,输入引 脚,低电平有效。 用户人机交互的操作是通过键盘电路实现,为了体现简洁性,系统提供了3个按键的方 式,分别是测试/确定键、上翻/增加键、下翻/减少键。系统采用查询方式对连接三个按键 50 浙江理-T大学硕十学位论文 的引脚进行扫描,如图3.25所示的UP、DOWN和TEST,另外在软件中实现按键的防抖动 功能。 1 . 2 DOWN 脚m阐—L_'mST必— ————‘c镕帕:二:….望 T嘟 黟鞫匝图西园畛 =]3夏v:l馥I-4‰… =±圮--+Ii-,跏一 l一. 。.一2 p圄匝亘霪塑驴 图3.24 JTAG接口电路图 图3.25键盘接口电路图 3.9本章小结 本章首先根据系统需求进行了功能模块的划分,提出了设计方案。根据系统六大模块 的设计方案,确定了系统硬件体系模型:中央处理单元、信号采集及预处理模块、数据显 示及报警模块、数据通信模块、数据存储模块和人机交互模块。然后,阐述了ARM7系列 微控制器LPC2210的特点,围绕中央处理单元,分析了各个模块的功能原理及设计方法, 搭建起较为完整的智能乙醇电子鼻系统的硬件平台。 51 浙江理工大学硕+学位论文 第四章智能乙醇电子鼻系统的软件设计 【本章摘要】本章主要论述了智能乙醇电子鼻系统的软件设计,包括BootLoader的构建、嵌入式pCLinux 操作系统的移植、JFFS2文件系统的移植及MiniGUl的移植。 4.1引言 本章主要介绍系统软件设计方案及设计步骤,根据第三章介绍的内容可知,智能乙醇 电子鼻系统电路涉及到很多硬件,如信息采集、USB、RF射频传输、存储器等。硬件增多 对软件的合理运行提出了更高的要求。因此有必要引入一套合理的管理机制来对系统资源 进行合理的规划和利用,以减轻开发人员的工作量。嵌入式操作系统pCLinux无疑是最佳 的选择。 要构建完整的I.tCLinux嵌入式软件系统有三个部分内容:系统引导程序、lxCLinux操作 系统内核和文件系统。系统引导程序常被称为BootLoader,首先要根据智能乙醇电子鼻系 统的硬件构建BootLoader,然后配置和移植llCLinux嵌入式操作系统内核,接着就是JFFS2 文件系统的移植,主要存储用户应用程序,同时存储包括系统配置文件、系统程序和必需 的驱动程序。综合这些操作才能对系统资源进行合理调度。 BootLoader、llCLinux内核和文件系统固化在Flash中,分为三个区存放。其中BootLoader 的首地址为系统复位的入口地址,系统内核和文件系统可以根据用户的需要指定首地址, 各部分存储的空间只要保证不冲突,可以固定一段存储区域,也可以后一部分紧接前一部 分,采用前一种存储方式的优点是方便内核的加载和文件系统的挂载,利于系统内核的和 用户程序的调试,缺点是会浪费一部分空间,如图4.1所示: 地址从低到高方向 图4.1 Flash典理空间分配结构 另外系统为了提供给用户友好的人机交互界面,采用了功能强大且轻量级的图形用户 界面支持系统MiniGUI。 52 浙江理工人学硕士学位论文 4.2 BootLoader的构建 BootLoadert5J7】也称系统引导程序,类似于电脑的BIOS,就是在嵌入式操作系统运行之 前运行的一段程序。BootLoader是系统复位后执行的第一段代码。这段程序将初始化乙醇 电子鼻系统的硬件设备、建立系统内存空间的映射图,将系统的软硬件环境带到一个合适 的状态,为操作系统的运行准备好正确的环境,BootLoader独立于操作系统,必须由用户 自己设计。 4.2.1 BootLoader的结构 嵌入式系统中,BootLoader的实现对系统硬件有很大的依赖性,包括处理器的体系结 构和具体型号,CPU、网口、FLASH等芯片的变化都意味着BootLoader的改变。因此, 在嵌入式系统中几乎不可能建立一个通用的支持所有系统的BootLoader。 但是,嵌入式系统的BootLoader也存在很大的共性。由于这一共性的存在,使我们可 以归纳出一些通用的方法,便于不同系统的BootLoader的设计与实现。由于对系统硬件有 很大的依赖性,大多数BootLoader可分为两个运行阶段‘5蜘。 第一阶段,BootLoader主要实现硬件的初始化(包括中断的屏蔽、处理器时钟频率的设 置以及RAM空间初始化等)、加载第二阶段代码到已经准备好的RAM空间、设置堆栈指 针等,并最终跳转到第二阶段的程序入口。由于第一阶段是针对硬件进行操作,为提高运 行速度,该阶段代码通常都用汇编语言来实现。 第二阶段,通常用C语言来实现,这样可以实现更复杂的功能,代码具有更好的可读 性和可移植性。第二阶段的主要任务是初始化该阶段使用的硬件(如对串口初始化,通过 串口打印相关信息)、检测系统内存映射、加载操作系统内核与文件系统和调用内核,最 终使操作系统运行起来。 4.2.2 U.boot介绍 u-boot[59】全称Universal BootLoader。u-一boot是德国DENX小组开发的用于多种嵌入式 CPU的BootLoader引导程序,支持PowPC、 ARM、MIPS、m68K等多种处理器平台, 易于裁剪和调试。u-boot遵循GPL(通用公共许可)公约,完全开放源代码。其源码目录、 编译形式与Linux内核很相似。不少u-boot源码是相应的Linux内核源程序的简化。 u-boot支持Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS与LynxOS等嵌入式 操作系统。支持更多嵌入式操作系统和处理器是u.boot项目的开发目标,这也是u.boot中 Universal的含义所在。 浙江理1二人学硕十学位论文 4.2.3 U—boot移植 u-boot的移植【删【611包括两个方面:CPU和目标板。其中CPU相关代码应放入CPU目 录中相应CPU类组的子目录中,目标板相关代码应放入board中相应目标板的子目录中, 此外还包括include目录中目标板的配置头文件。具体如下: ①在CPU目录下建立lpc2210子目录,里面应包括start.S、CPU.C、interrupts.C、serial.c、 corffig.mk、Makefile文件: ②在board目录下建立zpjboard子目录,里面应包括zpjboard.c、flash.e、Target-init.S、 eonfig.mk、Makefile、u-boot.1ds文件; ③在include/contig目录下建立zpjboard.h文件; ④在include/asm.al'ln目录下建立arch一!pc2210子目录,里面应包括hardware.h文件。 为了减少工作量,可以选择一个u-boot支持的目标系统移植代码作为模板,将其目录 下的文件拷贝到自己对应的目录中,这样只要修改文件罩的那分代码以适应新的CPU和目 标板。 4.2.3.1 lpe2210子目录 (1)start.S文件是u-boot的入口,用汇编语言编写。这里要说明的是,其文件后级为 大写的S,表明这是个汇编文件,但支持C语言的预处理机制。start.S文件的任务是设置 处理器状态,初始化中断和CPU的外围部件,并确定是否需要对整个U.boot代码重定位, 最终从FLASH中跳转到定位好的内存位置执行。 u-boot引导laCLinux的时候,中断向量由内核启动后设置,所以中断向表必须位于RAM 中。而LPC2210中的中断向量并不能直接映射到外部RAM中,所以需要以下的代码将中 断向量跳转至RAM中: 中断向量表修改如下: .globl—start —start:b reset LDR PC,ResetAddr LDR LDR LDR LDR PC,UndefinedAddr PC,SWI—Addr PC,PrefetchAddr PC,DataAbortAddr DCD 0xb9205f80 LDR PC,【PC,撑-0)【册】 LDR PC。FIQ彳ddr ResetAddr DCD Resetlnit 54 浙江理j[大学硕+学位论文 UndefinedAddr SWI——Addr PrefetchAddr DataAbortAddr DCD DCD DCD DCD Undefined SoRwareInterrupt PrefetchAbort DataAbort Nouse IRQ-Addr FIQ-Addr DCD DCD DCD 0 0 FIQ_Handler 系统启动时跳转至reset处运行,将CPU设置为管理模式,首先根据目标板初始化外 部总线控制器,然后调用InitStack函数初始化堆栈,并调用TargetResetlnit函数,作用是 初始化引脚连接模块、设置系统各部分时钟、PLL(锁相环)和VPB分频器等。TargetResetlnit 位于zpjboard/Target-init.S中,作用是初始化外部存储器控制器等。 (2)CPU.c这个文件主要包含一些与处理器相关的函数,如cpu-init,reset等。其中 cpu.init这个函致本来是用来建立中断栈的,reset函敬用来引起处理器复位。本系统时钟 频率为60MHz,因此在cpu-init中有:#define CONFIG LPC2210 CLOCK SPEED 60 (3)interrupts.c这个文件其中包含了处理中断的函数,如enable—interrupts, disable.intruupts等。这个文件里要修改的是延时函数,及与CPU定时器相关的函数,这些 函数使用查询定时器计数器的方式来实现邺级的延时。interrupt.init函数将定时器的计数 器设置成每l雌递增l。udelay和udelay-mask函数实现岬级的延时。interrupts-ink函数的 代码: int interrupt-init(void) { TOPR=1l://11059200/1000000 TOTCR=0x02 3 ToMRO=TIMER-LOAD—VAL: TOTCR=3: TOTCR=l: lastdec=03 timestamp 2 03 l'etU!Tl 0 3 ) (4)serial.c这个文件初始化串日,主要是配置波特率,实现串口输出、输入的功能。 串口波特率为115200,有:#define CONFIG BAUDRATE 115200 设置波特率需要对UBRDWn(n表示串口0或串口1)寄存器赋值。其赋值公式为: UBRDIVn=(round_of)(MCLK/(bpsx l 6”一l 本文波特率为115200,根据公式计算得出UBRDIV0应赋值32。 case 115200: 群if CONFIG ̄LPC22 1 0一CLOCK—SPEED=60 55 浙江理:r:大学硕士学位论文 divisor=32; 撑elif CONFIG LPC22 1 0 CLOCK SPEED=75 divisor=40; #else 撑error CONFIG LPC22 l 0 CLOCK SPEED undefined 群endif break: 4.2.3.2 zpjboard子目录及配置头文件 这个目录的代码对开发板进行初始化,并帮助u-boot识别目标板的配置。 (1)zpjboard.c文件有两个函数:board-init和dram-init,主要工作是对目标板参数结 构gd—t进行初始化。board.init修改如下: int board-init(void) { gd->bd一>bi—arch-number=MACH—TYPE—LPC22 1 0; gd一>bd->bi—boot—params=0x8 1 000 1 00; > 其中MACH—TYPE-LPC22 1 0要在include/asm.ann目录下的math—type.h中定义。 dram.init函数无修改。 (2)flash.e文件主要完成对flash.info-t{}数据结构的初始化,本系统用到的NOR FLASH的型号是28F320C3B,有4M字节,分为71个扇区,扇区分为两类,前8个扇区 为一类,大小为8k字节,后63个扇区为一类,大小为64k字节;由于Flash的驱动操作 是针对扇区进行的,因此flash.C修改如下: #define MIN SECT SIZE 8<<10//定义小扇区空问为8k #define MAX SECT SITE 54<<10//定义大扇区空间为64k #define FLASH BANK SIZE Ox400000//定义Flash空间为4M ulong flash init(void) //Flash初始化函数 { inti,j; ulong size=0; for(i—O;i<CFGMAX_FLASH_BANKS;i州< ulong fiashbase 2 0; flash—info【i】.flash id=(INTEL_MANUFACT&FLASH_VENDMASK)l (INTEL ID 28F320C3B&FLASH-』YPEMASK);//28F320C3B flash_info[i].size=FLASH_BANK_SIZE; flash info[i].sectorcount=CFQMAX_FLASH_SECT;//扇区数目7l memset(flash_info[i].protect,0,CFQMAX_FLASH_SECT); if(i=0) flashbase=PHYS—FLASH_l; //zpjboard.h中定义Flash起始地址 浙江理_T大学硕士学位论文 else panic("configured too many flash banks!\Il”); for 0=0;j<flash_info[i].sector__count;j++){ if(j<8) flash_info[i].start[1】_flashbase+j毒(MIN_SECT_SIZE); else flash info[i].start[j]--flashbase+(j一7)幸(MAX_SECT_SIZE); > size+=flash_info[i].size; }…… > (3)zpjboard.h文件位于include/config目录下,该文件中包含了各种各样的宏定义。 包括与目标板的配置有关,如:目标板名称定义、系统工作频率、网络芯片的基地址、串 口波特率,目标板m地址、硬件MAC、主机口地址、Flash和RAM起始地址及容量, 与存储位置相关的,如:环境变量保存位置(Flash或EEPROM),内核装载地址;与启动参 数设置有关的,如:缺省的操作命令等。各个参数及命令的具体功能参见u-boot根目录下 的readme文件。这里重点提到几个主要参数的设置: 本系统时钟频率为60MHz,因此有: #define CONFIG-_LPC22 1 0一CLOCK—SPEED 60 串口波特率为115200,有: #define CONFIG——BAUDRATE 1 1 5200 系统NOR Flash空间为4M,地址为0x0—0x00400000,扇区数为71;SDRAM空间为 8m,地址为0x0C000000.0x0C8000000,有 #define CONFIG—NR—DRAM—BANKS 1 #define PHYS——SDRAM——1 #define PHYS——SDRAM——1——SIZE 0xoc000000 0x00800000//8 MB #define PHYS—FLASH-l #define PHYS——FLASH——SIZE BANKS #define CFG MAX FLASH Ox00000000 0x00400000 l //4 MB //定义Flash数码为1 #define CFG MAX FLASH SECT 71 //扇区数目 #define CFG FLASH BASE PHYS FLASH l//Flash的起始地址 4.2.3.3编译U.boot 目前,整个程序的修改工作基本完成了,接下来要做的就是编译形成可执行的代码。 首先要修改u-boot根目录下的Makefile文件,加入如下代码: zpjboard_config:unconfig @./mkconfig¥(@:config---)arin Ipc22 1 0 zpjboard 57 浙江理工人学硕十学位论文 在Linux命令窗口下,进人U—BOOT根目录,输入命令:“make zpjboard_config",系 统会提示出对目标板zpjboard进行配置;结束后输入命令:“make”,系统就开始编译。U.boot 编译通过后,会生成三个名为u-boot的文件:ELF文件、bin文件和¥1"eC文件。其中u-boot.bin 文件为纯粹的二进制执行代码,将其直接烧写到NOR FLASH中即可运行启动程序。 4.3嵌入式操作系统ltClinux移植 智能乙醇电子鼻系统电路涉及到许多硬件,如存储器、串口、以太网接口等。硬件的 增多对软件合理运行提出了更高的要求。因此本文引入嵌入式操作系统对系统资源进行合 理的调度。嵌入式操作系统在嵌入式系统中有着重要的作用,其通过自身丰富、强大的驱 动能力,将终端硬件与应用程序隔离开来,使得系统应用程序的开发变得简单、迅速。 PHILIPS公司的LPC2210处理器不存在内存管理单元(MMU),本文选用gClinux作为智 能乙醇电子鼻系统的嵌入式操作系统。 4.3.1 l咀Clinux简介 lxClinux!硎是Linux的变种,它的出现是针对微控制领域实际应用的需要。l上Clinux这 个英文单词中p表示Micro,就是微小的意思;C表示Control,即控制的意思。I_tClinux 就是Micro.Contr01.Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”。在 实际应用中,Linux与llClinux应用的场合主要取决于CPU的MMU(内存管理单元),对于 有MMU的处理器可以使用嵌入式Linux,反之则只能使用.Clmux。lxClinux对Linux上 的C语言库glibc做了简化,与Linux的主要区别在于两者的内存管理机制和进程调度管理 机制。lxClinux具有支持多任务、内核精简、高效、稳定和源代码开放等优点,专门应用 于无MMU(Ix]存管理单元)的微处理器的嵌入式系统。I_tClinux由于其开源、免费、稳定、 良好的移植性、完善的网络功能、完备的文件系统支持及标准丰富的API等优点,越来越 受到开发人员的青睐,将ItClinux应用于嵌入式系统已经成为许多嵌入式开发人员的选择。 4.3.2基于LPC2210的ltClinux移植 4.3.2.1内核结构 gClinux的内核结构【63】【删如图4.2所示,gClinux操作系统内核完成的功能和Linux内 核相同,包括进程调度、内存管理、文件系统管理、网络接口和进程问通信。使用未压缩 的系统内核,一般要占用400KB.900KB;若系统内核经压缩后,则占用空间一般在 300KB.500KB。 浙江理工人学硕十学位论文 ItClinux与标准Linux最本质的区别在于ttClinux缺乏内存保护机制和虚拟内存模块。 由于J-tClinux没有MMU,就不能使用处理器的虚拟内存管理技术。虽然I.tClinux仍然采用 存储器的分页管理,实际上“Clinux采用实存储器管理策略。ltClinux系统对内存的访问是 直接的,所有程序中访问的地址都是实际的物理地址。操作系统对内存空间没有保护,各 个进程没有独立的地址转换表,实际上是共享一个运行空间。显而易见,p.Clinux的内存 管理与标准Linux系统相比功能相差很多的。在编程接121方面,最大的变化是没有了forkO 和brkO系统调用。p.Clinux通过vfork0来代替标准Linux中的forkO系统调用;由于pCiinux 既没有自动增长的堆栈,也没有brk0系统调用,所以用户空间的程序必须用mmapO命令 来分配内存。 图4.2 ItClinux的内核结构图 p,Clinux小型化的一个重要做法是重写了应用程序库,I.tClibc是专门针对开发嵌入式 Linux系统的C函数库,相对于越来越庞大和全面的Glibe(GUN C Lib)库,l上Clibc对Glibc 做精简。它远远小于Glibc,但是几乎所有Glibe支持的应用都能被I_tClibc很好的支持。 4…3 2 2建立交叉编译环境 基于pClinux操作系统的应用调试环境一般是由目标开发板和宿主机组成‘651。目标硬 件开发板用于运行操作系统和系统应用程序,而目标开发板所用到的操作系统的内核编 译、应用程序的开发和调试是在宿主机上完成的。目标开发板和宿主机的连接一般采用串 IZl的形式,也可采用并口或网El连接。宿主机上需运行Linux系统,而Linux版本众多, 出于兼容性的考虑,本系统安装的是RedHat Linux 9.0,并且利用虚拟机VMware技术在 S9 浙江理1=人学硕十学位论文 WindowsXP下安装,可以不重启电脑即可切换到Linux环境下。 在编译laClinux之前,需建立交叉编译环境,编译用于目标开发板的程序。建立交叉 编译环境的主要内容是在宿主机上安装交叉编译工具链,它在宿主机上创建一个交叉编译 环境。由于目标开发板平台处理器是ARM,则需要安装GCC针对ARM的编译器,适用 于llClinux的编译器为arm-elf-gcc。 下载交叉编译工具arm.elf-tools.20040427.sh,将它拷贝到目录如/usr/sre下,在root权 限下运行命令:./arm.elf-tools一20040427.sh。该命令将交叉编译环境安装至lJ/usr/local目录下, 其中/usr/local/bin下是可执行文件,以后编译内核或其他应用程序均可用arm—elf-来指定交 叉编译器。生成的交叉编译环境包括: _arm-elf-gcc: 编译器,将源文件编译成目标文件; 一aim—elf-ld:链接器,把目标文件链接成可运行的二进制文件; _arm.elf-gdb: 调试器,把链接生成的可执行文件通过集成开发环境下载调试。 4.3.2.3内核移植 llClinux的源代码包可以从它的官方网站上(www.uclinux.org)免费下载获取,下载 uClinux—dist.20040408.tar.gz和补丁文件uClinux—dist-20040408一lpc—chy—cmj.patch。将I-tClinux 源代码包拷lfl.至1]/usr/src,然后运行解压命令:tar xzvf uClinux—dist-20040408.tar.gz,这时 在当前文件夹中就会产生一个uClinux.dist的文件夹,就是I.tClinux的源代码目录。接下来 打lpc的补丁包,运行命令:cat uClinux-dist一20040408一lpc—clay-cmj.patch I patch.pl习 uClinux—dist,为LPC2210打完补丁后,在内核配置时就会有LPC2200的选项了。 此次设计用的1.tClinux内核版本为1.tClinux2.4,在llClinux的源代码目录.uClinux-dist 中,如图4.3所示: 1)/arch子目录包含了所有硬件结构特定的内核代码,其中每个目录代表一种硬件平 台,如a/nl平台和PC使用的i386。对于任何平台,都必须包括一下几个目录。 2)/drivers子目录包含了所有的设备驱动程序。如usb、sound和arm。 3)/fs子目录包含了所有的文件系统代码。如v-fat,ext3和j舵。 4)/include子目录包含了建立内核时所需要的大部分库文件。该目录也包括了不同平 台所需要的库文件。如asm.arm是aim平台需要的库文件。 5)/init子目录包含了内核的初始化代码,内核从此处工作。 6)/kemel子目录包含了主内核代码。 浙江理工大学硕士学位论文 7)/mnmommu子目录包含了所有内存管理代码。 甲 。。£占百西百11百]慕百聂百I i苫i吾百百j卫己 圈4.3 JIcliJuI的内棱文件目录结构蜊 在对心lhlux内核编译之前,要对内核进行配置,根据系统的需要进行裁剪。可以通 过3种方式配置pclinuxt分别是make config,make m衄uc0Ilfig和make xconfig。各命令 的使用范围不一样。本设计采用make menuconfig方式,因为该方式即可在终端控制台使 用,也可在图形终端下使用,而且有直观性。另外,心linux内核在开发时采用模块化的 设计,即在内核实现中按功能分别设计可独立增加或删除的功能模块,并将这些功能模块 设置成内核配置的选项,在编译系统内核时调用命令wake menuconfig根据应用需求进行 取舍。因此,使用心linux系统本身所提供的内核编译工具,对¨cliIl暇内核进行重新配 置和编译,可以裁剪出不同的嵋16.Eux内核。通过在编译时选择嵌入式系统所需要的功能 支持模块,同时舶除不需要的功能,可以使编译出柬的内核体积显著减小,从而缩减资源 使用量。这种内核裁剪方法的优点是实现非常方便。 在终端输入命令“make menuconfig”,然后进入内核基本信息配置界面,如图4A所示: 图^4内拨基本信息配置界面 6l 浙江理下大学硕士学位论文 主要通过这个窗口实现对处理器、内核函数库、是否配置内核与配置用户程序。处理 器选择PHILIPS的LPC2200,函数库选择uClibc,选择对内核与用户程序进行配置,保存 退出。 然后系统将启动内核配置界面,如图4.5所示,这里主要进行代码成熟度、系统类型、 网络设各驱动、字符设备驱动、块设备的驱动和文件系统娄璋!等进行配胃! h"· ’{、 ’L ,‘ “ 目45内核配置界面 1)系统类型配簧:在SysteraType中,选定(LPC)ARM systemtype,然后设置SDRAM 及FLASH地址。 2)通用内核选项Gen啪l setup的配置:选择SystemVIPC选项,以便以后使用。 3)块设备的选择和配景:选定RAM disk support并设置RAM disk的大小,并设簧为 Initial RAM disk(initrd)support,这样它可以作为根文件系统的块设备。 4)文件系统的选择和配置:选定,proc file system support,这是/proc文件系统,记录系 统运行时的信息a还要选定ROM file system support,这里我们选择JFFS2作为 RAM.DISK块设备上面的根文件系统。 5)选择设备驱动:选择串口驱动,进入serial drivers选项,然后选定LPC setialport support。选定support for Console on scrim port,将defaults serial baud Iate设为 115200,这样就在内核中加入了对目标开发板的串口支持,我们可以通过串口将内 核的信息传到主机。 接下来系统将进入用户程序配置界面,如图4.6所示,主要是对uclinux自带的应用程 序进行选择,可以选择添加自己编写的应用程序,与内核一同编译,保存退出,配置完成。 浙江理工夫学硕士学位论文 …黑鼍警熙黑烹罴只忠曼曼嘲舅蔓舅舅置‘。。 图‘6用户掰配置界面 最后,按下面步骤进行编译: make dep ,.建立依赖关系.并依次生成依赖文件·, make cle啪,.清除构造内核时生成的所有目标文件、模块文件和临时文件·, makelibonly川编译库文件‘, make useTonly ,+骞;译用户应用程序文件+, make romfs ,.生成rotors文件系统(romfs目录W makc image 产生成内核映象文件,/ Ⅱ址e /+通过各个文件夹中的Makefile文件进行编译‘, 编译结束后,会在心linux安装目录下建立tom.f¥和images两个目录。其中rotors为 iomfs文件系统临时存放目录,里面有很所实用程序;images为生成的目标代码目录,其 中rotorsimg为rotors文件系统的映像文件,llnRge陆I为文件系统和内核代码的目标文件。 通过专业的Flash烧写工具把u-boot、romfs.img和imagebin分别烧录到Flash指定地 址。p.Clinux默认输出终端是串口,设置好宿主机上的串口调试软件的波特率等参数,连 接好串口线,就可以在串口终端看到心llnux启动信息。如下图4.7所示: 浙江理工丈学硕士学位论文 I…n£d【……rn …t voGa啪唇一s……重.啪hd目n盈odp■…nEod■l世/u■dlev口4■/l种I■Ⅳz1—,l#l—I…“k|id■J∞#I奠extp皇oh#『 c皇i蛐L¨曼“■e曼I…|n量曼tl*L曼笪J c曼en量—j…■Pbr量oo…p量I7舅‘c‘ 曼ar曼Yc邕d .“ 口目jx 1㈣1㈨di…I, Exccu¨…F n…h lfX d目,I】ng h …edc…ⅡItl,…len…jih/cd●hd¨l“g *l c…lo 图钉嵋‰uI启动信息 4.4文件系统的移植 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即磁盘上组织 文件的方法。Linux文件系统构成Linux系统上所有数据基础,Linux应用程序、系统文件、 库文件等都存放在文件系统中。嵌入式文件系统是嵌入式操作系统的一部分,它的任务是 对逻辑文件进行管理。 Linux的文件系统采用虚拟文件系统VFS(Vi,tual File Systeras)机制,为上层程序提供了 一个统一的抽象文件系统接口层,系统采用的Linux文件系统框图如图4.g所示。 嵌入式系统一般采用Flash作为存储介质。文件系统不能直接对Flash进行操作,必须 通过Flash的驱动来实现对Flash进行操作。嵌入式Linux提供一个MTD驱动程序,将Flash 驱动与系统程序分开。 MTD(MemoryTechnolog)rDevice)是Linux上为访问Flash设备(如内存芯片、Flash卡、 记忆棒等之类的设备)而开发的一个抽象接口。目标是在硬件驱动程序和上层程序之问提供 通用接口,提供一组对底层闪存系统进行类似于标准文件read、Ⅵ№和et-ase等操作的统 一接口。上层程序并不需要知道具体底层硬件的差异。 浙江理:亡人学硕:十:学位论文 4.4.1 JFFS2文件系统特点 图4.8 Linux文件系统框图 JFFS2是Redhat公司基于JFFS开发的闪存文件系统,它主要是针对RehHat公司的嵌 入式产品ecos开发的嵌入式文件系统,当然JFFS2也可以使用在Linux、I_tClinux中,也 是Flash上应用最广的一个R志结构文件系统。其特点有【39】: (1)擦写块与内存操作 JFFS2文件系统通过链表来管理擦写块,并通过结构体jif2 sb info来管理这些链表。 擦写块在不同的链表上代表的擦写块中存储内容和性质的不同,并且同一个擦写块也可能 出现在几个不同的链表中。JFFS2文件系统在向擦写块中写入节点时,是按照顺序将不同 的节点依次写入擦写块,索引节点的信息没有全部保存在内存中,它只保存了需要立即获 得的信息,从而节省了内存。 (2)挂载过程 挂载过程需要经过三次扫描: 首先,JFFS2文件系统会扫描整个存储介质,每个节点都将被读取和记录,检查其CRC 校验信息的合法性,并建立内存影射,分配结构体jffs2_inode_cache和jffs2_raw node—ref 将找到的一些不再使用的节点删除。 然后,再扫描索引节点的实体节点链表,在结构体jffs2 inode cache中标识出过时的实 体节点和与索引节点的连接数,删除连接数为零的相应节点。 最后扫描并删除那些在以上扫描过程中产生的临时信息。 65 浙江理T人学硕士学位论文 (3)垃圾回收 垃圾回收主要是将过时的节点进行回收,但是考虑擦写平衡的问题,JFFS2文件系统设 置了多个回收队列,也就是从多个链表中进行垃圾回收。同时,JFFS2进行垃圾收集时也 对闪存文件系统中的不连续数据块进行整理。 (4)擦写平衡 JFFS2文件系统的擦写平衡是通过垃圾回收过程中使用概率的方法来实现的。垃圾收集 的时候会读取系统时间,通过系统时间产生一个伪随机数。使用这个伪随机数结合不同的 待回收链表选择要进行回收的链表。使用了这个平衡策略以后能提供较好的擦写平衡效 果。 4.4.2 JFFS2文件系统在pClinux上的移植 在gClinux中,JFFS2文件系统【删167】有两种实现方法:一种是将JFFS2文件系统作为 根文件系统使用;另一种是将JFFS2文件系统在系统启动后挂载,作为普通的文件系统。 由于根文件系统的读/写操作分别分布在几个不同的目录中,读/写十分频繁,而且根文件 系统并不需要保存动态信息,因此一般情况下,pClinux默认根文件系统采用ROMFS文件 系统这种只读文件系统来保存根目录,而采用RAMFS文件系统这种断电后数据会丢失的 文件系统来保存/var和/tmp等存储临时信息的目录。JFFS2文件系统一般采用第二种方法 在gClinux中实现,作为普通文件系统,在系统启动后挂载。 要在I-tClinux中的Flash存储设备上实现JFFS2文件系统,需要经过以下步骤: 1)添加NAND FLASH的驱动信息 2)创建针对K9F2808UOC的MAP文件 ItClinux-dist\linux-2.4.x\dfiverskmtd\rnaps目录下面的每一个map文件为一个具体的 MTD原始设备的相关信息,包括设备的起始物理地址、大小、分区情况、读写函数、 初始化以及清除程序。系统启动时正确识别Flash芯片之后就要根据该map文件中的 这些信息来对Flash进行初始化工作。以下就是创建K9F2808UOC芯片的map: (1)定义Flash相关信息:物理地址,容量,以及总线带宽; (2)增加分区信息static struct mtd_partition lpc221 0-partitions【】; (3)设置擦除的大小为1 28K; (4)修改module_initO调用的初始化函数; 3)对MTD块设备进行配置 默认情况下,ROM设备和MTDBIock设备的主设备号(MAJOR)都是31,为了解除 66 浙江理下大学硕士学位论文 冲突,我们修改MTDBIock的主设备号为30而保持ROM设备的主设备号不变。具体 做法为,在I_tClinux.dist\linux.2.4.x_\include\liIlu)(、Intd\mtd.h中,将 #define MTD BLOCK MAJOR 3 1改为 #define MTD BLOCK MAJOR 30 然后应添加MTD设备节点到p.Clinux—dist\vendersLzpjboardLMakefile文件中。如: Mtd0,c,90,0 mtdl,c,90,2 mtd2,c,90,4 Mtdblock0,b,30,0 mtdblockl,b,30,1 mtdblock2,b,30,2 并将JFFS2选项加入gClinux-distklinux-2.4.x\driversXantdkmaps\gt录下的配置文件 Config.in,这样在配置内核时配置此项。 4)配置内核及应用程序选项并重新编译1.tClinux内核 (1)把修改的Map文件集成到I.tClinux的配置中: 通过修改I_tClinux—dist!\linux一2.4.X\嘶v蹦-、mtdhaps、Mal(efile,把修改的Map文 件集成到laClinux的配置中。 (2)配置I_tClinux内核选项 增加MTD,JFFS2相关选项。 (3)配置应用程序选项 添加ERASE,ERASEALL,MKFSJFFS2工具用来实现擦除和制作jffs2文件系 统镜像。 5)制作JFFS2的映像文件 首先取得jffs2的制作工具:mkfs.jffs2。执行如下命令即可生成所要的映象: chmod 777 mkfs.jffs2 取得mlffsjffs2的执行权限,即rnkfsdffs2成为可执行文件。 ./mkfsjffs2-d zpjjffs2/∞jffs2.img 生成jffs2文件映象,其中目录z而Jffs2可以是任意的目录。 6)移植JFFS2文件系统 经过上述操作,最终生成的JFFS2映像文件是jffs2.img。该映像中的内容即为目录jffs2 中的内容,可以将所开发的系统中的应用程序及需要频繁读写的数据文件拷贝到该目录 中。根据对Flash分区的设定,将得到的映像文件jffs2.img烧写到Flash中以0x10100000 为起始地址的位鼍,这样就完成了JFFS2文件系统的移植工作。 67 浙江理工大学硕十学位论文 4.5 MiniGUI移植 MiniGUI是一个适用于嵌入式系统的、功能强大的、轻量级的图形用户界面支持系统 [431,由于其小巧、可配置、高性能及易于移植等特性,本设计选用MiniGUl来设计图形用 户界面。 由于I.tCLinux不支持共享库,所以MiniGUI应用程序要是用静态方式链接库,这就需要 使用宿主机对MiniGUI的源代码进行交叉编译,生成MiniGUI静态链接库文件。然后, MiniGUI应用程序也在宿主机上进行交叉编译,并与MiniGUI静态链接库连接生成目标板可 以运行的FLAT格式文件,这个交叉编译的示意图如图4.9所示。最后,在目标板的pCLinux 操作系统上搭建MiniGUI的运行环境,即安装MiniGUI的资源文件和配置文件,再将 MiniGUI应用程序下载运行。 图4.9交叉编译MiniGUl应用程序示意图 (1)在RedHat Linux 9.0系统下安装MiniGUI,MiniGUI图形界面系统主要包括函数库、 资源文件及演示程序三部分。将MiniGUI.STR压缩包中的libminigui.str-1.6.2.tar.gz、 minigui—res-str-1.6.tar.gz和mg.samples.str-1.6.2.tar.gz文件复制到肺m洲嘶文件夹中,再 解压,并且确保系统安装有AutocoI柳Automake工具,便于交叉编译MiniGUI。 (2)进行MiniGUI的GAL(图形抽象层)和砒(输入抽象层)的移植。GAL和nL 定义了一组不依赖于任何特殊硬件的抽象接口,所有顶层的图形操作和输入处理都建立在 抽象接口之上,类似于操作系统中的驱动程序。 在GAL移植中,先要编写GAL接口函数cornmlcd.C,使用的是native图形引擎的数据结 构和Framebuffer驱动程序。再要建立液晶驱动程序文件lcddrive.C和lcddrive.h,液晶驱动程 序文件是根据液晶模块和硬件电路设计的,其中GUI LCM XMAX和GUI LCM YMAX分 别表示液晶x轴和Y轴,贝JJGUI LCM XMAX为240,GUI LCM YMAX为320。接着,设置 Makefile编译移植的GAL源文件,将commlcd.C、lcddrive.C和Icddrive.h添加到libnative —la—SOURCES变量中。最后,注册移植的GAL图形引擎,在gal.c的GFX结构变量gfxes的定 6R 浙江理工大学硕:}=学位论文 义中加入注册代码,引擎名为“commlcd”。 在L地移植中,先要建立源文件comminput.c和头文件comminput.h,在comminput.c中编 写IAL接口函数,如鼠标、键盘等。要说明的是,MiniGUl通过ial.h中定义的INPUT数据结 构来表示输入引擎,且定义了很多函数指针来指向设定的认L的对应函数,从而实现硬件 输入。在INPUT数据结构中,MiniGUI使用init_input和term input两个函数指针作为对认L 可见的接口,所以用户队L程序通用接口只需要提供这两个函数即可。然后,建立键盘驱 动程序文件commdrive.c,对目标板上的3个按键进行功能定义。接着,设置Makefile文件, 将comminput.c、comminput.h和commdrive.C添JJtl多]libial la SOURCES变量中,最后,注册 移植的IAL输入引擎,在ial.C的INPUT结构变量inputs定义中加入注册代码,引擎名为 “comm"a (3)交叉编译MiniGUI的源代码,在/home/minigui lib/目录下生成MiniGUI静态链接库 文件,在编译MiniGUI应用程序时只要指定链接这个库文件,就会生成能在目标板运行 FLAT格式的MiniGUI程序文件。另外,MiniGUI运行使用的配置文件MiniGUI.cfg,要修改 配置图形引擎、输入引擎和窗口字体等,本次系统设计使用commlcd图形引擎和comm输入 引擎,即 [system】 群GALengine gal_engine=commlcd 拌IALengine ial engine=comm (4)在目标板建立MiniGUI运行环境,将目标开发板与PC机连接,通过NFS复制 /home/minigui_lib/etc/目录下的MⅫGUI.cfg文件和凰们oca坍ib/m诚gu讯s/目录下的资源文 件分别到目标板“CLinux下的/usr/pro和/usr/local/lib/minigui/res目录下。 至此,MiniGUI在PC机上的编译环境和目标板上的运行环境已经搭建和移植完成。 4.6本章小结 本章主要完成对智能乙醇电子鼻系统软件设计的详细阐述。首先总体介绍了系统软件 的实旌框架,然后分步骤地说明了系统软件的设计实现,包括系统引导程序u-boot的移植、 I.tClinux系统的移植、JFFS2文件系统的移植、图形用户界面MiniGUI系统的移植。通过这 些代码的编写和移植操作,搭建出智能乙醇电子鼻系统完整的软件平台。 浙江理:[人学硕士学位论文 第五章智能乙醇电子鼻系统的驱动及应用程序开发 【本章摘要】本章主要论述了智能乙醇电子鼻系统的驱动及应用程序的开发,包括ltCLinux设备驱动程 序开发过程及原理、系统相关设备驱动程序的移植和系统应Hj程序的开发。 5.1引言 根据第四章所构建的软件平台,针对智能乙醇电子鼻系统的特性,分析I-tCLinux设备驱 动程序原理和步骤,对系统相关的设备驱动开发过程做了详细介绍;另外应用程序是系统 的灵魂,决定这系统所要实现的功能,因此总述了系统应用程序总体结构,并描述了程序 模块的流程及界面设计。由于移植的pCLiIlu)(操作系统,因此应用程序是在Linux环境下开 发。 5.2 laCLinux设备驱动程序开发 设备驱动程序是介于硬件和I_tCLinux核之间的软件接口,是一种低级的、专用于某一 硬件的软件组件。1.tCLinux有两种方式使用设备驱动程序:一种是直接编译到内核中;另 一种是在运行时加载。直接将硬件驱动程序写入内核的优点在于,可随时对其进行调用而 无需安装,但这大大增加了内核占用的空间;将硬件驱动程序编写成一种内核模块,虽然 会因为寻找内核模块而增加系统资源的占用和运行时间,但更为便利的是,可以动念地对 某一硬件驱动程序进行开发或纠错,这样灵活性就增强了,系统的设备驱动程序开发采用 第二种方式。 5.2.1 pCLinux设备驱动程序模型 在lxCLinux操作系统中,设备驱动程序对各种不同设备提供了一致的访问接El,把设备 映射为一个特殊的设备文件,用户程序可以相对其他文件一样对此设备文件进行操作‘681。 l上CLinux般支持三类硬件设备:字符设备、块设备及网络设备。 字符设备接口支持面向字符的I/O操作,它不经过系统的快速缓存,所以负责管理自己 的缓冲区结构。字符设备接口只支持顺序存取的功能,一般不能进行任意长度的I/O请求, 而是限制I/o请求的长度必须是设备要求的基本块长的倍数。典型的字符设备包括鼠标、键 盘、串行口等。 块设备接口主要是针对磁盘等慢速设备设计的,以免耗费过多的CPU等待时间。它仅 支持面向块的I/O操作,所有FO操作都是通过在内核地址空间中的I/O缓冲区进行,它可以 70 浙江理工人学硕士学位论文 支持几乎任意长度和任意位置的I/O请求,即提供随机存取的功能。块设备主要包括硬盘软 盘设备、CD.ROM等。 llCLinux操作系统中的网络设备是一类特殊的的设备。Linux的网络子系统主要是基于 BSD unix的socket机制。在网络子系统和驱动程序之间定义有专门的数据结构(sk buff) 进行数据传递。pCLinux操作系统支持对发送数据和接收数据的缓存,提供流量控制机制, 提供对多协议的支持。网络接口不存在与lxCLinux的文件系统中,而是在核心中用一个 Device数据结构表示。对每一个字符设备或块设备的访问是通过文件系统中相应的设备文 件来进行的。网络设备在做数据包发送和接收时,直接通过接口访问,不需要进行文件的 操作,而对字符设备和块设备的访问都需通过文件操作界面。 I-tCLinux系统为每个设备分配了一个主设备号与次设备号,主设备好唯一标识了设备类 型,次设备号标识具体设备的实例。由同一个设备驱动控制的所有设备具有相同的主设备 号,从设备号来区分具有相同主设备号且有相同设备驱动控制的不同设备。系统中每个设 备都用一种特殊的设备相关 文件来表示,例如串口设备 /dev/tty0与dev/ttyl,它们的 主设备号为4,次设备号分别 为0和1。块设备和字符设备 相关文件可以通过mknod命 令来创建,并使用主从设备 号来描述此设备,网络设备 也用设备相关文件来表示, 但当IxCLinux寻找和初始化 网络设备时才建立这种文件。 图5.1设备驱动在内核中的挂接、卸载和系统调用过程 如图5.1所示为设备驱动程序在内核中的挂接、卸载和系统调用的过程。当内核模块(设 备驱动程序)编译成功后,可使用命令“insmod模块文件名称"加载驱动程序;当内核模 块不再需要时,可使用命令“rmmod模块名称’’卸载驱动程序。这罩的“模块文件名称" 是可以修改的,而“模块名称"是编译时由源代码决定的。另外,还可以通过命令“lsmod" 查看当前加载了哪些驱动程序。 5.2.2设备驱动程序操作原理 gCLinux以模块的形式加载设备驱动,设备驱动在加载时首先需要调用入口函数 7l 浙江理工人学硕十学位论文 init module0,该函数完成设备驱动的初始化工作,比如寄存器置位、结构体赋值等【691。 其中最重要的一个工作就是向内核注册该设备,对于字符设备调用register 册,注册成功后,该设备获得了系统分配的主设备号、自定义的次设备号,并建立起与文 件系统的关联,设备驱动在卸载时需要回收相应的资源,令设备的响应寄存器值复位并从 系统中注销该设备,字符设备调用register 。系统调用部分则是对设备的操作过程, 比如 、 read、 write和 ioctl 等操作。 ..chrdevoopen 设备驱动程序的任务包括自动配置和初始化子程序,负责检测所要驱动的硬件设备是 否存在和是否能正常工作。如果该设备正常,则对这个设备及其相关的设备驱动程序需要 的软件状态进行初始化。这部分驱动程序仅在初始化的时候被调用一次。 服务与I/o请求的子程序,又称为驱动程序的上半部分。调用这部分是系统调用的结果。 在执行这部分程序的时候,系统仍认为和进行调用的进程属于同一个进程,只是有用户态 转换为核心态,并具有进行此系统调用的用户程序的运行环境,所以可以在其中调用sleep0 等进行进程运行环境有关的函数。 在系统内部,I/O设备的存取通过一组固定的入口点来进行,这组入口点是有每个设备 的设备驱动程序提供的。图5.2描述了驱动程序与应用程序接口层之问的关系。 I I 今 I 系统调用 fd=Open(d删x, 毒 I 今 I 设备驱动层 xx-opcn。 害 l 应用程序 今 令 Read(fd) Write(fd) 今 今 虚拟文件系统交换 令 害 XX_read() XX write() 今 毒 硬件设备 害 Close(fd) 今 今 XX clotz(' 今 图5.2驱动程序操作原理 一般来说,字符设备驱动程序能够提供如下几个入口点: ◆open入口点。打开设备准备I/O操作,对字符特别设备文件进行打开操作,都会调 用设备I拘open/k.UI点。open子程序必须对将要进行的I/O操作做好必要的准备工作,如清除 浙江理丁大学硕士学位论文 缓冲区等,如果设备是独占的,即同一时刻只能有一个程序访问此设备,贝Uopen子程序设 置一些标志以表示设备处于忙状态。 ◆close入口点,关闭一个设备,当最后一次使用设备终结后,调用close0子程序,独 占设备必须标记设备可再次使用。 ◆read入口点。从设备上读数据,对于有缓冲区的UO操作,一般是从缓冲区里读数 据。对字符特别设备文件进行读操作将调用read子程序。 ◆、耐te入口点。向设备写数据,对于有缓冲区的VO操作,一般是把数据写入缓冲区 里,对字符特别设备文件进行写操作将调用子程序。 ◆ioctl入口点,执行读、写之外的操作。 53系统相关的设备驱动程序开发 系统硬件设计涉及到中央处理单元模块的驱动有RTC的12C驱动;涉及到信号采集及预 处理模块的驱动有A/D转换驱动和控制温度和气泵的GPIO驱动;涉及到数据显示及报警模 块的驱动有LCD显示驱动和报警的PWM驱动;涉及到数据通信模块的驱动有RS232串口驱 动、USB驱动及RF射频传输驱动;涉及到数据存储模块的驱动有块设备驱动:涉及到人机 交互模块的驱动有GPIO驱动。这其中块设备驱动在U.boot移植过程中也有所介绍,LCD显 示驱动也在MiniGUI移植过程中有所描述,在这里主要简单说明下GPIO驱动、A/D转换驱 动、12C驱动、PWM驱动、RS232串口驱动、USB驱动及RF射频传输驱动的开发过程。 53.1 GPIO驱动开发 LPC2210具有4个GPIO端口P0、P1、P2和P3,均为双向口,每一位都可以独立设置输 入或输出,大部分GPIO都是推挽输出,部分GPIO为开漏输出。开发GPIO驱动程序,首先 分析所用到的GPIO口,如:人机交互模块用到了PO口(DOWN->P0.23、UP->P0.24、 TEST->P0.25),信号采集及预处理模块用到了P2和P3口(TEⅧ.>P3.29、PSENSE一>P2.25 等),数据通信模块和数据存储模块用到了P1口做片选等功能。 然后建立设备文件,驱动程序默认的主设备号为126,从设备号用来标识操作的GPIO 端口。其中,从设备号0表示P0,从设备号1表示Pl,从设备号2表示P2,从设备号3表示P3, 因此代码为: mknod/dev/P0 C 126 0 mknod/dev/Pl C 126 1 mknod/de驯『P2 C 126 2 mknod/dev/P3 C 126 3 浙江理:r=大学硕士学位论文 编写内核接El函数gpio_init0、open0、closeO和ioctl0,及应用程序头文件gpio.h,在头 文件中定义了12个宏,对应着12条命令,包括设置GPIOEl数据传输方向、设置GPIO口输 出指定电平、设置读取GPl0121输出电平、设置读取GPIOH引脚上的电平,在使用GPIO时, 可以通过GPIO命令设置GPIO特殊的状态。 最后要建立Makefile文件,通过make命令编译驱动程序,就得到了GPIO驱动模块文件 “gpio’’,在操作系统中用命令“insmod gpio”加载后,即可应用。 在对GPIO设备操作之前,需要先通过open()将其打开,使用完毕后再通过close0将其 关闭。GPIO驱动通过ioctlO控制I/O口,对于不同的操作使用不同的命令实现,这些命令映 射在gpio.h的宏定义中。如,本系统要将POI]的DOWN、UP和TEST信号设为输入状态,代 码如下: hatfd; fd=open(“/dev/P0",O_RDONLY); Ioctl(fd,GPIO—SET_MULTI_PIN_IN,(1她3)I(1≈4)l(1q5)); close(fd); 还要将P2和P3口的信息采集设置为输入状态,控制端口设置为输出状态,以及POE]的 片选信号端口设置为输出状态,另外在特殊情况下,单独设置输出指定电平和读取指定引 脚电平等,如,操作中要读取当前温度信号、要控制当前加热板加热等。程序代码不再一 一赘述。 5.3.2 A/D转换驱动开发 LPC2210具有1个10位逐次比较的A/D转换器,有8个A/D输入引脚,系统设计用到了 AIN0~AIN3四个引脚为FuelCell信号输入,AIN4和AIN5为温度信号输入。首先建立设备文 件,驱动程序默认的主设备号为124,从设备号来标识A/D的输入通道号,0代表通道0,1 代表通道1,以此类推,代码为: mknod/dev/ADC0.0 C 1 24 0 mknod/dev/ADC0.1 C 124 l mknod/dev/ADC0.2 C 1 24 2 mknod/dev,ADCO.3 c 1 24 3 然后编写adc.h头文件,在头文件中定义了两个宏,对应ioctl0函数体中的特殊命令,即 设置A/D工作频率的ADC_SET_CLKDIV和设置A/D转换精度的ADC_SET BITS。编写内核 接口函数adcinit0、open0、close0、ioctlOSglread0,要注意的是readoffl数不能使用标准C 74 浙江理T大学硕士学位论文 的库函数来访问,因为对于A/D来说,每次读的数据个数是相对确定的,每次read0调用是 不可分割的。 最后建立Makefile文件,通过make命令编译驱动程序,得到ADC驱动模块文件ade,在 操作系统中执行“insmod adc’’,就可以使用ADC转换功能了。 在使用ADC之前,先调用adc init0进行初始化,包括注册字符设备 registerehrdev(MAJOR NR,DEVICE NAME,&adc__fops)等;然后用openO打开设备,在打 开过程中,要获取设备节点的从设备号,并判断A/D通道的被使用情况;接着用ioetlOffj数 设置A/D转换的时钟和转换精度,代码如下: ioctl(fd,肖agc_SET_CLKDIV,(Fpclk+fade一1)/fade一1); ioetl(fd,ADC_SET_BITS,1 0); 其中VPB总线的频率为11.0592MHz,fade设置为4.5MHz,精度设为10。 最后,等待Fuel Cell信号触发,读取A/D转换结果,即.-read(fd,&ad_dat钆sizeof(ad_data))。 在read()读取的过程中,首先判断需要读取的字节数是否合法,并检查存放读取结果的缓冲 区是否可写;然后构造临界区,切换A/D转换通道,启动A/D转换;接着保留ADCR低16位 的转换结果,返回读取的字节数。 5.3.3 12C驱动开发 LPC2210有1个标准的12C总线接口,可配置为主机、从机或主从机,可编程时钟可以 实现通用速率控制。系统设计12C总线接口驱动配置为主机,驱动程序中,设置总线频率 来控制12C从器件。首先,建立设备文件,驱动程序默认主设备号为122,从设备号用来标 识12C从器件的地址。其中,复位电路芯片catl025的地址为0xA0,其设备号为160;RTC电 路芯片M41T1 1的地址为0x90,其设备号为144。代码为: mknod/dev/eatl025 C 122 160 mknod/dev/m4ltll c 122 144 然后编写i2c.h头文件,在头文件中定义两个宏,对应函数ioctl0的第二个参数crnd的特 殊命令,及设置高电平时间的12C SET CLH和设置低电平时间的12C SET CLL。在使用12C 总线接12前必须设置总线频率,ioctl0方法的两个命令都是为了设置总线服务的,高低电平 都是以VPB总线周期为单位的。编写内核接口函数i2c_init0、open0、close0、ioctl0、read0 和write0,最后建立Makefile文件,通过make命令编译驱动程序,即可得蛰JL2C设备驱动模 块文件i2c,在操作系统中运行命令“insmod i2e”,就可以使用12C设备进行信息传输了。 在打开12C设备之前,要先调用讫c iIlit()函数进行初始化,并注册12C设备 registerchrdev(MAJOR NR,DEVICE_NAME,&i2c_fops);然后用open0方法以读写方式打 75 浙江理T大学硕士学位论文 开12C设备,接着用ioctl0设置12C总线频率,最后进行读写操作。以m41tl 1的读写代码为例, 简单说明12C工作过程: int fd; uint8 suba,tm[2]; fd=open(”/dev/m41 tl l”,O_RDWR); if(fd==一1) { printf(”\IlCan't open M41T1 l!、Il”); exit(一1); } ioctl(fd,12C_SET-SLH,((11059200/100000)+1)/2); ioctl(fd,12C_SET--CLL,(1 1059200/100000)/2); suba=Ox00;|l suba=Ox00,time register write(fd,&suba,1); //write suba read(fd,tm,2); //read time register close(fd); 5.3.4 PWM驱动开发 LPC2210具有PWM(脉宽调制器)功能,它带有可编程32位预分频器的32位定时器/ 计时器:7个匹配寄存器,可实现6个单边沿控制或3个双边沿控制PWM输出;如不使能PWM 模式,还可作为一个标准的定时器。首先建立设备文件,PWM驱动程序默认的主设备号为 125,由于没有从设备号,从设备号可以设为0,文件名定为PWM,建立设备文件命令为: mknod/dev/PWM c 125 0 然后编写pwm.h头文件,在头文件中定义Y20个宏,对应着ioctlO@的特殊命令。这20 条命令包括有设置PWM频率的“PWM SET CYC"、获得PWM运行时间的 “PWM GET RUN TIME”、允许6路PWM输出的“PWM x ENABLE"、禁止6路PWM输 出的“PWM x DISABLE"、设置6路PWM占空比的“PWM x SET DUTY"。得到内核接 口函数pwm_initO、open0、closeO和ioctlO,建立Makefile文件编译驱动程序,即可生成PWM 驱动模块文件pwm,只要在操作系统运行命令“insmod pwm”,就能加载PWM驱t动程序。 在进行PWM操作之前,通过openO打开PWM设备,在打开过程中向内核注册一个中断 服务程序pwm_irq_handle0,“ClinuX内核具有终端管理功能,接着进入临界区,需要先关 中断,后开中断;然后通过ioctlO的特殊命令设置PWMI作的相关参数,比如频率、占空 比等;最后,使胄匕upwM通道。具体程序代码如下: 76 浙江理+1:火学硕士学位论文 int fd; uint32 sum; fd=open(’'/dev/PWM”,O_RDONLY); if(fd一一1) { printf(”\nCan’t open PWM!kn”); return一1; > ioctl(fd,PWM_SET_CYC,Fpelk/1 000); ioctl(fd,PWM一2~SET_DUTY,Fpclk/2000); ioctl(fd,PWM 2 ENABLE); close(fd); 5.3.5串口驱动开发 LPC2210内置了两个串rlUARTO和UARTl,提供了波特率发生器、1位起始位、1或2 位停止位、5~8位数据位、带有16字节的接受和发送的FIFO、寄存器结构符合550工业标准 等,其中,接收FIFO可在1、4、8、14字节时分别触发。而lxClinuxl为核中已提供了支持标 准串口的驱动程序,本设计是在内核自带驱动程序基础上,添加了一个宏来定义LPC2210 串口的I/O基地址,并开发实现了UART操作的基本功能,包括端口寄存器的读/写、数据的 收/发、使用中断号等与硬件相关的一些信息。 1.tClinux规定串口的主设备号是4,串E10的标准设备节点文件名称是ttySO,从设备号是 64,串口1的标准设备节点文件名称是ttySl,从设备号是65。由于使用1.tClinux核中支持 的驱动程序,在加载过程中省去了“insmod”命令,而仅仅是创建设备节点。 在使用UART之前,需要对其初始化并注册,在初始化函数uart jnitO中调用函数 registerchrdev0完成注册,另外调用request_irq0安装中断处理程序,再编写接收和发送中 断服务函数uart_receiveisr0和uaa sendjsr0。接下来就要设置工作模式及内部寄存器,包 括波特率、数据帧格式和中断工作方式等。串ISl0与RS232串口相接,串口1用于扩展GPS 功能模块。在串口设置中有一个重要的数据结构structtermios,对串口的设置包括波特率、 数据位、校验位和停止位等,都是设置该数据结构各成员的值。 struct termios { unsigned short unsigned short unsigned short unsigned short c jflag; c oflag; C cflag; c』nag; //输入模式标志 //输出模式标志 ∥控制模式标志 //本地模式标志 浙江理I=人学硕士学位论文 unsigned short cline; unsigned short ccc[NCC】; ) ∥线控制 //控制字符 根据这个数据结构编写波特率设置函数set_speed0,代码如下: void set_speed(int fd,int speed) {hat i; int status; struct termios Opt; tcgetattr(fd,&Opt);//get attribute of serial port tcflush(fd,TCIOFLUSH); cfsetispeed(&Opt,speed); cfsetospeed(&Opt,speed); status=tcsetattr(fd,TCSANOW,&Opt);//set attribute if(status!=0) { perror(”tcsetattr fdl”); return; ) tcflush(fd,TCIOFLUSH); } 其中,参数fd为设备文件,speed为要设定的波特率,一般被定义为宏。数据格式设置 函数int set_data_format(int fd,int databits,int stopbits,int parity),其中参数databits为数据位, stopbits)白停止位,parity为校验位。 在使用RS232串口传输时,要先打开设备UARTO,成功打开后进行设备串口设置:波 特率为115200,8位数据位,l位停止位,无校验。代码如下: intfd; int8 temp[32】; fd=open(”/dev/ttyS0”,QRDWR);//read and write if(fd一一1) { printf(”Can't open ttyS 1 1ha”); exit(0); > set_speed(fd,B 1 1 5200); //set baud l 1 5200 if(set_data_format(fd,8,1,tN’)一FALSE) { printf(”Data format Error!kn”); exit(1); ) write(fd,”XXXXXX”,X); 7R 浙江理工大学硕士学位论文 read(fd,temp,8); close(fd); 5.3.6 USB驱动开发 系统设计采用专用USB通信控制芯片USBN9604,USB驱动开发设计到三部分功能:初 始化模块、输入模块和输出模块。其中初始化模块主要函数有:usb initO、usb—isr init0 和USb』fo_init0,usbjnitO的主要作用是设置描述符指针和相关变量,并调用usb isr initO 和uS哂fo_init0,usb—isr init0用于初始化相关中断,清除中断标志,注册中断处理程序, 配置中断寄存器,usb_fifo_initO要完成初始化FIFO缓冲区;输入模块主要实现函数 usb rx data0,完成初始化终端点缓冲区,并将FIFO缓冲区的内容拷贝到终端点的目标缓 冲区;输出模块主要实现usb tx dataO,完成操作与usb rx data0相反。 在设计USB驱动之前,先熟悉一下lxClinux下的USB软件子系统模块和USB的标识方式: (1)pClinux下的USB软件子系统模块构成 在¨Cimux下,USB是被作为一个可扩展的子系统来实现的,所以USB软件子系统从核 心模块构成的角度的层次关系可以用图5.3表示: INPUT DRIVER童 量 HID lNPUT.o 量 其他类的 驱动程序 其他设备的 驱动程序 _ II HID.o 量 I l _ 惦M吣.o - b} - us艮unc一.。 us邺Hc一.o 5.3 USB软件子系统核心模块结构图 该图表示了I.tClinux的USB核心模块的之问的依赖关系,其中上层模块依赖于下层模块。 根据前面对USB软件系统的划分可以做一个粗略的对应,我们主要针对模块来分析各部分 功能。 USB驱动程序由usbcore(这一部分通常被称为USB核心)来实现,usbcore提供了许多 函数、核心数据结构及宏,用于对USB设备驱动程序和主控器驱动程序提供支持口主控器 79 浙江理:T=大学硕+学位论文 驱动程序分为两种模块USB_UHCI.O和USB OHCI.O,其中前者用于对实现Intel制定的通 用主控器接n(UHCI)的设备的支持,后者用于对实现Compaq和Microsoft等公司制定的开放 主控器接I](OHCI)的支持。USB设备驱动程序是针对特定的设备开发的,种类繁多,故这 里对设备又做了相应的分类,我们在图中做了标识,特别值得一提的是人机接口设备(HID) 的支持,它已经形成了规范,Limptq口用了HID.O,HIDINPUT.O,及相应的设备驱动模块 对它进行了支持。 (2)USB设备在lxClinux-V l拘标识方式 USB在心l试11)【中作为一个可扩展的子系统来实现的。首先对设备的标识方式作一定的 解释。事实上USB子系统,在系统初始化或者相应的核心模块被加载时,它作为一个主设 备号为180雕J字符设备被注册到lxClinux核心中,而后USB设备驱动则是通过这个子系统提 供的函数、宏和数据结构来从该系统中注册(usb_register),注销(usb_unregister)和实现相应 的操作。而为了对不同的USB设备类型和具体的设备进行标识,在这个子系统中又把相应 的次设备号划分成相等两部分:前一部分用于标识设备类型,即相应的驱动程序后一部分 用于标识具体物理设备。 本设计用到的}tClinux的USB设备的主设备号是180,可支持8个终端设备,在USB驱动 模块中有,#defme USB SKEL MINOR BASE 208,说明次设备号从208开始,而#-define MAX DEVICES 8,说明最多支持8个USB设备。首先创建设备文件节点: mknod/dev/usb0 C 1 80 208 mknod/dev/usbl C 1 80 209 然后,编写相关头文件usb.h,定义函数ioctl0的特殊命令的宏及USBN9604的寄存器 USBN9604reg USBReg【】,建立Makefile文件进行编译,得到USB驱动模块文件,在系统中 加载即可使用。要说明的是加载USB驱动初始化时进行注册,并且要提供支持的设备及设 备插拔的动作反应,这些信息在USB驱动程序中是这样表示的: static struct usb—driver skel—driver={ name:“USBN9604”; probe:skel probe; disconnect:skel_disconnect; fops:&skel_fops; minor:USB—SKEL—MINOR—BASE; id—table:skel—table; } 变量name是一个字符串,对驱动程序进行描述。probe和disconnect是函数指针,当设备 与在id table中变量信息匹配时,此函数被调用。fops和minor的变量是可选的。在装载模块 R0 函数就可以_writeO 浙江理丁大学硕士学位论文 时,系统会调用usbregisters0注册这个驱动程序,相应的设备连接到USB上时,probei函数 会被调用,在file operations结构中定义的接口会在需要时被USB子系统调用。 在usB驱动设计中,选用open0、close0、ioctl0、read0、write0作为入口点,在open0 函数中MODULE INC USE COUNT宏是一个关键,它起到一个计数作用,当有用户态程 序打开设备时,计数器就加一,在程序最后要把当前对象保存在文件的私有变量private data 中,以便在以后的应用中使用该对象,当打开设备后,skel reaa0、skel 读取和发送数据了;同样,close0函数在设备释放时被调用,宏定义 MODULE DEC USE COUNT会将计数器减一,而USB设备是即插即用的,可以在任何时 问点从系统中取走,它需要能够切断任何当前的读写,同时通知用户空间程序,USB设备 已取走,如果程序有一个打开的设备句柄,在当前结构里只要把它赋值为空,就像它已经 消失了,对于每一次设备读写等其它函数操作,我们都要检查usb device结构是否存在, 如果不存在,就表明设备已经消失,并返回一个ENODEV错误给用户程序,最终调用close0 函数时,在没有文件打开这个设备时,无论usb device结构是否存在,它都会清空 skel disconnect函数所做工作。 在USB读写操作时,需要在内核空间和用户空间交换数据,需要调用pClinux系统特定 的函数完成这些操作,I.tClinux提供了四个系统调用用于在内核空间和用户空问交换数据, 这里用至lJ-j"copy_to_user0和copy_from_user0。copy_to_user0是将数据从内核空间复制到用 户空间,copy_t臣om_user0是将数据从用户空间复制到内核空间。在read0和write()i垂i数中, 对数据在设备与驱动程序之间的读写提供了两种方案,当对USB设备进行一次读/写时,采 用usb bulk ms90函数,当需要连续读/写时,则需要建立一个自己的usb,调用usb函数来 发送数据给设备,或从设备接收数据。 5.3.7 RF射频传输驱动开发 系统设计RF无线射频模块的FI的是实现无线打印功能,需要发送的信息数据是测试结 果和测试日期,采用nRF2401作为核心芯片,其驱动程序开发涉及至UnRF2401的初始化、 nRF2401工作模式的配置、nRF2401数据收发操作等。 在初始化中有nrf2401_init()初始化函数、nfl泛401_ON()上电函数、nrf2401_oFF()掉电 函数。初始化I/O将会把nRF2401用到的所有接口初始化为对应的输入输出属性;还要将 nRF2401上电,就是把PWR UP管脚设置为高电平,只有上电以后才能对nRF2401进行控制 和读写操作;nRF2401共有18Byte的命令字,程序中设置了一个命令字数组InitData[15], 数组中的值分别对应配置信息,如0x08(bit)对应通道一、二的接收数据宽度,0x4f对应 8l 浙江理工人学硕十学位论文 接收通道选择(b15)为通道一,收发模式(b14)为Shock Burst模式,波特率选择(b13) 为250Kbps,晶振频率(b12-b10)为16MHz,发射功率(b9 ̄b8)为0dBm。 在工作模式的配置中有nrf2401 WriteCommandO写命令字函数、nrf2401 ModeO设置工 作方式函数。nrf2401 WriteCommand0写命令字函数负责对nRF2401进行初始化配置,将初 始化中的InitData[15]--次写入控制字缓冲区,如图5.4所示为nRF2401写命令字时序图,图 中当PWR UP为高、CE为低时,置位CS,芯片处于命令字写入状态,调用函数 nrf2401一WriteByte(InitData[i]),通过通道1向芯片的控制字缓冲区写入命令字,按照由高位 到低位的顺序,命令字全部写入后,将CS置低,nRF2401芯片将会根据命令字配置相应的 内部模块。在第一次配置操作结束后,只有最后两个字节的命令字可以被更改,前16个字 节的修改无效,如果需要修改前16个字节的命令字(如通道接收地址,接收数据长度等), 则需要掉电(PWR UP置低)后重新上电(PWR UP置高),才能对芯片进行彻底初始化操 作。nrf2401 通过改变 InitData[14]最I低 幂位J(bit0) 来设置发送或接收模式(O为发.Mode() 送,1为接收)。 PW&ⅣP CS厂. ——. ——. ———一 ——I —. ——. ———一 ] CE CLK n『1『]f1『]f1 f1 f1 f1 n n n n几『]『1『1 f1 DATA仁)C0000033×X)(XX汇)CQ MSB MLB 图5.4 nRF2401写命令字时序图 在数据收发操作包括数据发送和数据接收,在数据发送操作中,nRF2401采用Shock Burst方式发送数据,由处理器向nRF2401发送数据的函数有以下4个: void nrf2401一SendByte(unsigned int TxData)//发送一个字节数据到Il】Ⅻ240l void nrf2401一SendWord(unsigned int TxData)//发送一个字数据到11I心2401 void nrf2401_SendBuffer_Byte(unsigned int TxData[],unsigned int DataByte) ∥向nRF2401发送一个字节数组 void nrf2401一SendBufferWord(unsigned int TxData[],unsigned int DataWord) //向nRF2401发送一个字数组 浙江理‘T大学硕士学位论文 发送数据的时序图如5.5所示。 PWR UP CS CE CLK DATA 厂—————————————————] r]几n门门n n n n n门门门门门门门n [)C)CoooooOoooOOOooQ MSB LS8 图5.5处理器向nRF2401发送数据时序图 其中,MSB->LSB的数据格式为,地址在前且高位在前,An ̄A0为接收机地址,不超 过40位,数据在后且高位在前,Dm-D0为待发送数据,数据为测试结果或测试时间。当处 理器将数据发送至nRF2401之后,nRF2401就会进行打包发射,打包的数据格式为: 图5.6对外发送数据的打包格式 其中Pre为8位的校验头,CRC为8位或16位的校验尾,在Shock Burst模式下由nRF2401 自动添加。在发送过程中要注意: ◆Address、Data、CRC的位数之和不超过256; ◆Address长度必须和目标接接收通道的地址一致(数据和长度); ◆Data长度必须和目标接接收通道的接收数据宽度一致; ◆发射端和接收端的RF频率须一致,如两端均采用通道1,则二者控制字的bit7-bitl 要一致,如接收端采用通道2,则发射端bit7-bitl值比接收端bit7-bitl值大8。 nRF2401对外打包发射数据的函数为: void nrf240 1一SetAddress(unsigned int Address【】,unsigned int AddrByte) ∥设置目标地址函数,发送端在发送数据前调用,只需要一次即可。其中Address[】数 组为目标nRF2401地址,AddrByte为有效地址的字节数。 void nrf240 1—.SendByte(unsigned int TxData) ∥用于向nRF2401发送一帧数据(目标地址+一个字节数据TxData); void nrf240 1——SendWord(unsigned int TxData) //用于向nRF2401发送一帧数据(目标地址+一个字数据TxData); void nrf240 1一SendBufferByte(unsigned int TxData【],unsigned血DataByte) 83 浙江理T大学硕十学位论文 //用于向nRF2401发送一帧数据(目标地址+一个字节数组TxData【】); void nrf240 1_SendBufferWord(unsigned im TxData【】,unsigned int DataWord) /佣于向nRF2401发送一帧数据(目标地址+一个字数组TxData【】)。 在数据接收操作中,当接收端成功接收到数据后,会置位对应的数据请求管脚 DRl/DR2,处理器通过查询这两个状态接收数据。对于数据接收需以下函数: unsigned hat nrf240l_RxStatus0 //判断nRF2401是否有数据接收,如果已经接收到 数据,返回值为“1”,如果没有接收到数据,返回值为“O”; void nrf2401jkceiveByte(unsigned int RxData【】) //以字节方式从nRF2401读出数据,接收数据存储在数组RxData[】中; void nrf240 l_ReceiveWord(unsigned int RxData【】) ∥以字方式从nRF2401读出数据,接收数据存储在数组RxData[]中。 接收数据的时序图如5.7所示。 PWR UP CS CE DRl忽 CLK DATA 图5.7处理器]扎aRF2401读取数据时序图 本设计用到的pClinu)【的RF射频传输设备的主设备号是160,首先创建设备文件节点: ‘'mknod/dev/nrf2401 C 160 0”;然后,创建头文件nrf2401.h和驱动文件nrf2401.c,初始化、 配置、数据发送与接收等函数均编辑在驱动文件nrf2401.C中;最后,建立Makefile文件进行 编译,得到RF设备驱动程序模块nrf2401,在系统中加载“insmod nrf2401”即可使用。 5.4应用程序及界面设计 将系统引导程序、p.CLinux操作系统内核、文件系统、GUI开发库及驱动程序移植完成 后,就可以编写系统的应用程序及界面设计了。以下为系统主程序的工作流程: 浙江理工大学硕+学位论文 系统上电后,启动系统引导程 序,从NOR FLASH中加载系统软 件。首先对底层的硬件设备进行自 检,自检正常后,开始加载操作系 统内核及个设各的驱动程序,进一 步运行系统中的各进程。接着加载 MiniGUl的GAL引擎,点亮LCD屏 幕,进入桌面菜单模式,如图5 8所 示,它提供给用户操作平台,并等 待用户指令。 圈5J桌面菜单界面 如图5 9所示,在菜单模式下,系统提供了6项操作功能,分别是主动测试、被动测试、 系统设置、打印设置、校核设置和开志记录,下面就这6项操作的应用软件实现进行简单 描述。 田5J系统主程序工作流挫图 浙江理工大学硕士学位论文 1.1主动测试 所谓主动测试就是被测试者配合整个测试过程,由于这种方式测试可以得到准确的; 结果,因此也叫定量测试,是乙醇电子鼻系统的主要测试方式。主动测试的操作界面1 5.10所示,主动测试的软件流程如图5 11所示。 圈s10主动测试界面 主动测试开始要设置相关参数, GPl0121的输入倚出类型、测试结果临时存放数l 刚L蜘lp[】等。当呼气进入Fucl Cell,被压力传感器感知的时刻起,处理器及时读取t 拘压力值t当判定气体压力大]:240Pa时,才可以采样;如果气体压力不达标,就报, 录重新测试,存储测试失败信息及测试时间,并返回。当气体压力满足要求,操作系l 周用openO打开加转换设备文件,用iocflO对AD通道、采样频率等进行设置,嘲dot m输出数据,最后关闭加转换设备。接着,要控制电磁吸铁用气泵将管道及Fuel Ce 冉残余气体抽净,为下次测试提供良好环境:刚在A,D转换环节读取的数据保存在临日 窿数组中,由于采用4个通道山_D转换,首先对数组中的数据结果归一处理,然后通过q #的换算关系定量得出乙醇气体浓度测试结果,并划分浓度等级,最终将乙醇气体浓月 式结果及测试时间存储到N/小ID FLAsH中,再显示在LcD液晶屏幕上。 浙江理:亡人学硕+学位论文 图5.1l主动测试流程图 图5.12被动测试流程 5加被动涓试 浙江理工大学硕+学位论文 所谓被动测试就是被测试者不配合整个测试过程,测试靠的是电子鼻本身抽气功能, 由于压力、气流时间等不满足标准,只能得到大概的结果,因此也叫定性测试。如图5.12 所示为被动测试的软件流程。 被动测试开始也要设置相关参数,如GPION的输~输出类型、测试结果临时存放数组 Result_temp【】等,最主要的是设置抽气次数,这里为3次,间隔为ls。接着将电子鼻进气口 靠近被测者或气体产生源,处理器控制电磁吸铁用气泵抽气,抽气过程中打开A/D转换设 备文件,进行采样。被动测试打开2个通道,在3次抽气过程中,分别将采集的数据存入临 时存放数组,然后关闭A/D转换设备。第二次启动电磁吸铁,用气泵将管道及Fuel Cell中的 残余气体抽净,对读取的数据归一换算,并判断是否存在乙醇气体。如果换算得出乙醇气 体浓度为0,先将测试结果及测试时间存储在NAND FLASH中,然后显示在LCD屏幕上; 如果换算得出乙醇气体浓度不为0,则打开PWM设备,控制蜂鸣器报警提示进行主动测试, 然后存储测试结果及测试时问,将测试结果显示在LCD屏幕上。如图5.13所示为被动测试 的操作界面。 5.4.3系统设置 圈s13被动蔫试界面 在系统设置中,主要进行地区码设置、身份码设置、日期设置及usB设置的操作,如 11t5 14所示为系统设置的操作界面。系统中的地区码、身份码设为变量,在系统启动后进 行初始化,可根据地区不同或者操作着对地区码、身份码的变量进行设冕。系统同期是靠 88 浙江理工大学硕士学位论文 外部RTc芯片M41T11供给的,启动了12c总线,因此在系统启动时需要加载乜c驱动,以便 打开rc设备文件,进行设置操作。 圈5.14系统设置界面 主要说明的是usB设置,USB设置主要是开启电子鼻I拘USB接口与上位机通信功能。 如图5.15所示为电子鼻与上位机的USB通信数据流。 要进行USB接口通信,首先初始化USB端口,并设置相关参数,在 USB驱动开发一节有说明;接着启动USB服务程序,主要目的在于为加 载驱动提供条件,并且准备传输数据;然后加载usB驱动,创建设备节 点;在p.Clinux系统T)对USB设备进行opcn、close、read、write等操作时, 操作系统最终会调用USB驱动中注册的相应文件操作函数来实现对设 备的真正操作,如USB驱动模块中注册的文件操作函数skel re,ad0、 skel_writeO等。如图5.16所示为USB通信工作流程。 上位机 电子鼻 usB应用软件悻 薛数揖 一一 划usB服务软件 { { I USe驱动障 辞数拍 剖usB驱动l } } l ussK,@b器l季 啄数据 率IusB总线接口l 图5.15usB通信数据流图豳 89 5.16Usmt信工作瘴程 浙江理工大学硕士学位论文 5.4.4打印设置 在打印设置中,主要包括打印晟后一个、打印全部、自动打印及RF认证码设置的操作, 如图5.17所示为打印设置的操作界面。打印环节中,打印最后一个是将最近测试的一条记 录通过RF无线射频打印机打印出来,包括测试日期及测试结果;打印全部,顾名思义就是 将FLASH存储器中的历史测试记录全部打印出来;自动打印,是方便操作者打印的一种方 式,当测试的乙醇浓度不为0时,处理器就自动加载RF射频驱动,发送本次测试记录无线 打印,程序中设置RF—AUTO—F标志位来判断是否为自动打印模式;RF认证码设置,主要 完成电子鼻的RF射频与RF无线射频打印机的匹配,每台打印机都有唯一的RF认证码,只 有发射端与接收端认证码匹配,才能进行正确的传输。如图5.18所示为RF无线射频传输的 工作流程。 图5.17打印设置界面 当需要传输打印时,设置cs低、cE低、FWR UP高,延时3ms后,nRF2401完成上电 初始化,进入待机模式。设置cs高、cE低,进入配置模式,延时5its以上,处理器将配置 信息InitData等,通过ad240l_WrileCommaad0写/、knRF2401,设置cs为低,完成配置。接 着启动服务程序,为无线传输准备数据等信息,配置nRF2401为Shock Burst模式的RX模式, 判断打印标志位PRINT F是否为1,如果为0就不发送并返回,如果为1就设置CE为高,设 置nRF2401为Tx模式,延时5胪以上,处理器将待发送的数据通过RF驱动程序中的发送指 令写入nRF2401的FIFO缓冲区中,设置CE为低.开始Shock Burst]骥式发送。接着要配置 nRF2401为Shock Burst RX模式,设置cE为高,nRF2401在200ps后进入Rx模式,处理器通 过nrf2a01 RxStatus0来查询接收状卷,当DRI引脚变为高电平时,表明nRF2401的FIFO缓 冲区已经收到反馈数据,这时要接收反馈数据,DRI变为低电平,返回。 浙江理工人学硕+学位论文 图5.18 RF无线射频传输.1=作流程 91 图5.19 FuelCell校核操作流程 浙江理T大学硕士学位论文 5.4.s校核设置 在校核设置中,主要包括校核剩余天数、FuelCell校核、温度控制及密码设置的操作, 如图5.20所示为校核设置的操作界面。由于设计中的乙醇电子鼻系统采用电化学燃料电池 做为传感器,作为化学物质,它的特性会随着环境和时间而改变,为了精确测量,需要对 乙醇电子鼻的FuelCell定期校核,校核周期一般为6个月。校核剩余天数,就是实现对使 用者的提醒,在系统中设置了一个计数器EFF CNT,初始值为180,一旦乙醇电子鼻到了 校核期,即计数器EFF CNT不太于0,系统就会强制待机。温度控制操作可以读取当前 FuelCell内部的温度,因为温度传感器与FuelCell封装到了一起,并且可以控制加热电阻 进行加热。考虑到测试数据及校核的专业性。增加了密码设簧操作,可以设置系统密码来 限制对FuelCell的校核及日志记录的查看。 图5.20校棱设置厦El击记录界面 FuelCell校核就是为校核期设置的操作,意在对Fuel Cell进行定期校核,保证测试的 准确性。如图5.19所示为FuelCell校核操作流程图,首先要设置相关参数,如GPIO、临 时数组等,由于校核对FuelCell的温度要求比较高,因此要在校核之前读取FuelCell的温 度值,如果在25。Ca:2范围内,即可进入校核,否则进入温度控制操作知道满足要求为止。 达到要求后,将配置好的标准乙醇气体,一般为100mg/100mL,通过外部气泵吹入乙醇电 子鼻的进气13,满足压力条件后,系统打开A/D转换设备,与主动测试操作一样读取转换 数据,然后控制电磁吸铁用气泵清理管道。接着将临时数组中的数据归一处理,晟后通过 换算的逆操作得出FuelCell的当前增益系数Z,更新系统并返回。 浙江理工人学硕+学位论文 5.4.6日志记录 日志记录,主要实现对测试记录按时间顺序的罗列,便于用户查询和比对。对于这些 记录,}xClinux系统专门建立文件LOG用于存放这些数据,这样便于管理和上传。此外, 用户还可以操作记录,查询每一条的详细信息。如图5.20所示为日志记录的操作界面。 5.5本章小结 本章主要完成对智能乙醇电子鼻系统的设备驱动及应用程序设计的开发。首先,对 lxCLinux操作系统的设备驱动原理进行分析,然后结合系统需求,定制开发了系统相关的 设备驱动程序,并以模块的形式加载lxCLinux操作系统中;接着,详细阐述了系统应用程 序的结构,分功能说明了各部分的流程和图形界面的设计情况。 浙江理【大学硕士学位论文 第六章智能乙醇电子鼻系统测试分析 【奉章摘要】本章主要阐述智能乙醇电子鼻系统的测试分析,首先描述了系统测试平台的措建及测试标 准的确定,然后按照测试流程得山测试结果并分析系统的准确性和稳定性。 6.1引言 随着智能乙醇电子鼻系统的硬件及软件设计的完成,接着要对系统的指标进行评价, 这就需要搭建系统测试平台,明确测试标准。在测试平台上,配制出复合标准的定量乙醇 气体是系统测试的关键,因此配气仪器的选择尤为重要,这样才能得到准确的测试结果; 测试标准是对测试结果分析的唯一依据,标准的明确是系统分析的关键。 6.2系统测试平台及标准 6.1.1系统涌试平台 系统钡i试平台如图61所示 圈6.1系统测试平台实体豳 系统测试平台主要包括研制开发的智能乙醇电子鼻系统、乙醇气体模拟器、≥99.7%的 94 浙江理T大学硕士学位论文 无水乙醇、数字外用表、微量取样器、U型液体压力计、数显温湿 度计、电子秒表及量筒、烧杯、滴管等化学容器。其中乙醇气体模 拟器采用美国生产的Guth 34c模拟器,如图6.2所示,它的用途 就是检测乙醇铡试仪器,因为它能够配置产生定量的标准乙醇与空 气的混合气体,并且具有恒温控制,将温度控制在33 80C,-34.20C, 近似人体呼出气体的温度,模拟器容量为500mL,摄大允许误差 在0.090--0.1059/220L。另外,数显温湿度计的测量湿度在10%RH~ 90%RH,最大允许误差1.9%RH,温度在0--50"C,最大允许误差 0.4"C。 圈63系统测试流程 图6.2Gutla34c模拟器 根据措建完毕的系统测试平台,制定出测试流程,如图6.3所示。首先做准备工作, 为系统测试准备环境条件,如室内温度要控制在(25士2)℃,相对湿度控制N_<80%RH, 要清理Guth 34C模拟器的容器,准备好无水乙醇及取样器具等;接着配置定量的标准乙醇 混合气体,用量筒取纯净水500inL,倒入模拟器的配液容器中,用微量取样器取定量的乙 醇液体,放入模拟器配液容器,装配好模拟器,预热30分钟左右,调节好气体流量范围; 然后吹气检测,模拟器的进气端接外部气泵,排气端接智能乙醇电子鼻的进气口,通过外 部气泵的气流压力,将空气和模拟器中的乙醇气体混合并压出,进入智能乙醇电子鼻进行 检测;摄后读取测试数据,并分析结果。 6.2.2系统测试标准 针对系统测试标准首先要说明的是智能乙醇电子鼻系统对检测乙醇浓度的计算方法。 由于本课题研究开发的智能乙醇电子鼻系统是针对检测人醉酒程度的。因此要判断显示人 体内血液中的乙醇含量。大量的统计研究结果表明,如果被测者深吸气后以中等力度呼气 达三秒钟以上,这时呼出的气就是从肺部深处出来的气体。而呼气中的乙醇含量与血液中 的乙醇含量有如下关系:BACOnrag/L);BrAC(inrag/L)X2200 公式6-(1) 式中,BAC是血液乙醇浓度的英文缩写,BrAC则是呼气乙醇浓度的缩写,括号中的 inmg,'L表示以每升中多少毫克为单位,也就是说,以rng,L为单位的血液乙醇浓度在数值 上相当于以mg/L为单位的呼气乙醇浓度乘上系数2200。另外,系统处理后的数据为血液 浙江理工大学硕士学位论文 乙醇浓度,采用mg/lOOmL为单位,换算关系为:BAC(in mg/100mL)=BrAC(in mg/L)×220, 这样,50mg/100mL的BAC,相当于0.227mg/L的BrAC。除了BAC与BrAC之间存在系 数换算关系,BrAC与FuelCell所产生的电压值也有系数关系,处理器将FuelCell通过电 化学反应产生的电压VOL取到,通过换算得到BrAC的值,即BrAC(in mg/L)-Z×VOL(in mV),其中系数z就是FuelCell的增益系数,每个FuelCell的增益系数z都有所不同,并 且FuelCell本身特性会因时间及化学反应等因素影响而衰减,因此在校核时要校准这个增 益系数Z。至此,智能乙醇电子鼻系统所显示的血液乙醇浓度BAC(in me,/lOOmL)所需 要计算公式为: BAC(in me,/lOOmL)=220×BrAC(in mg/L)=220XZ×VOL(in mV) 公式6-(2) 在“车辆驾驶人员血液、呼气酒精含量阀值与检验”的国家标准‘701中,对饮酒驾车和 醉酒驾车有明确的定义:饮酒驾车指的是车辆驾驶人员血液中的酒精含量大于或者等于 20mg/lOOml,小于80mg/100ml的驾驶行为。醉酒驾车指的是车辆驾驶人员血液中的酒精 含量大于或者等于80mg/100ml的驾驶行为。这就决定了饮酒驾车血液乙醇浓度的临界值 为20mg/100mL,而醉酒驾车血液乙醇浓度的临界值为80mg/lOOmL。根据呼气乙醇浓度与 血液乙醇浓度的换算关系及国家标准规定,可得出表6.1的呼气中乙醇浓度与血液中乙醇 质量浓度对照表。 表6.1呼气中乙醇浓度与血液中乙醇质餐浓度对照表 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 呼气中乙醇质龉浓度(mg,L) 0.0227 0.0454 0.068l O.0909 O.1136 0.1363 0.1591 O.1818 0.2045 0.2272 0.2500 0.2727 0.2954 0.3181 0.3409 0.3636 0.3863 0.4091 0.4318 0.4515 0.6618 0.909l 血液中乙醇质最浓度(mg/lOOmL) 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 150 200 浙江理工人学硕十学位论文 设定智能乙醇电子鼻系统的测量范围:血液中乙醇浓度(0"--500)mg/lOOmL;呼气乙 醇浓度(0"--2.273)mg/L,根据测试标准要求及测试条件,主要检测智能乙醇电子鼻系统 的示值误差和重复性,国标规定如表6.2所示【461。 表6.2示值误差与重复性标准 乙醇气体浓度范围C(mg/L) C<O。400mg/L 0.400_<C<1.000mg/L C:Z_1.000mg/L 示值误差(mg/L) 土0.020 4-5% 4-20% 重复性(mg/L) 士0.007 士1.75% 4-6% 6.3系统测试结果与分析 对于示值误差及重复性检测采取的方案及数学模型为:分别配置浓度在0.070 mg/L~ 0.400mg/L(取0.100m#L)、0.400mg/L'--"1.000mg/L(取0.500mg/L)、1.000mg/L"--1.500mg/L (取1.200mg/L)的乙醇气体,用智能乙醇电子鼻连续测量10次。 对于示值误差,先取算数平均值C为测量值,然后按公式6.(3)、公式6.(4)计算 绝对误差6C或相对误差AC。 3C:一C—Co n ,、 △C==—二竺×100% C0 公式6.(3) 公式6一(4) 式中: Co为标准乙醇气体浓度,mg/L; C为乙醇电子鼻示值的平均值,mg/L; 对于重复性,在n次测量中(刀=10),先取算数平均值C为测量值,然后按公式6一 (5)、公式6。(6)计算重复性S和相对重复性S’。 S= S’:一S×100% C 式中: cj为第i次测量结果,mg/L, C为乙醇电子鼻n次测量值平均值,mg/L, 公式6一(5) 公式6.(6) 浙江理T大学硕士学位论文 如表6.3所示为2008年06月09 R的测试数据统计表: 表6.3 2008年06月09日的测试数据统计表 序号 (06.09) l 2 3 4 5 6 7 8 9 10 均值 22(mg,100mL)/0.100(mg/L) 示值浓度 气体浓度 (mg,100mL) 23 23 23 23 28 24 24 27 25 25 24.5 (mg/L) 0.105 O.105 0.105 0.105 O.127 0.109 0.109 0.123 O.114 0.114 0.112 110(mg,100mL),o.500(mg/L) 示值浓度 气体浓度 (mg,100mL) 114 112 112 l 16 11 1 112 118 11 1 116 113 113.5 (rag/L) 0.518 0.509 0.509 0.527 O.505 0.509 0.536 O.505 0.527 0.514 0.516 264(mg,100mL)/1.200(mg/L) 示值浓度 气体浓度 (mg,100mL) 266 268 270 268 270 275 275 266 264 264 268.6 (mg/L) 1.209 1.218 1.227 1.218 1.227 1.250 1.250 1.209 1.200 1.200 1.221 根据表6.3可知,对于示值误差:当C0=0.100mg/L时,Cl=43.112mg/L, 8Cl:一CI-CO=0.012mg/L,ACl:—CI--Co×100%=12%;当co:0.500mg/L时,一C2=0.516mg/L, 、一0 艿C2:一c2-Co=0.016mg/L, Ac2:C2,-CO×100%:3.2%; 当Co=1.200mg/L 时, 、70 石3:1.221mg/L,6c3:一C3一Co=0.021mg/L,Ac3:C3r1-CO×100%:1.75%:对于重复性:当 oO Co=o.100mg/L时,S= 砘0079mg/L,sj=鲁×10。%.7.05%;当 co=o.500mg/L时,s2= :2 0.0107mmgfL,,S’,’::一2云s2××100%32.:22·.0077%%;;当当 C0=1.200mg/L时,岛= =0.0181mg/L,s.3=鲁枷。%吐48%a 则l蚂I<0.020 mg/L, 18C2 I<o.050 mg/L, I万C3 I<0.200 mg/L; S>0.007 mgfb, 是<0.0175 mg/L,S<O.060 mg/L。其中重复性在测量O.100(mg/L)浓度的气体时超出了 范围,其余的示值误差和重复性都在标准规定范围内。 浙江理T大学硕士学位论文 如表6.4所示为2008年07月12日的测试数据统计表: 表6.4 2008年07月12日的测试数据统计表 序号 (07.12) 1 2 3 4 5 6 7 8 9 10 均值 22(rag/100mL)/0.100(rag/L) 示值浓度 气体浓度 (mg,lOOm[,) 25 23 22 25 21 19 18 22 20 20 21.5 (mg,L) 0.114 O.105 0.100 0.114 0.095 0.086 0.082 0.100 O.091 0.091 0.098 11 0(mg/lOOmL)/O.500(mg/L) 示值浓度 气体浓度 (mg,100mL) 107 l 10 115 109 109 115 115 110 108 108 llO.6 (mg厂L) 0.486 0.500 0.523 0.495 0.495 0.523 0.523 0.500 0.49l 0.491 0.503 264(mg/lOOmL)/1.200(mg/L) 示值浓度 气体浓度 (mg/100mL) 266 264 264 260 260 258 258 266 258 260 261.4 (mg,L) 1.209 1.200 1.200 1.182 1.182 1.173 1.173 1.209 1.173 1.182 1.188 根据表6.4可知,对于示值误差:当c0=0.100mg/L时,Cl=o.098mg/L, 8c,:一c!-Co一0.002mg/L,△Cl:—Cm厂-CO x100%一2%;当Co:o.500mg/L时,石2=0.503mg/L, 。0 2警×10似砘6%; 吗=一C:一C0_0.003mg/L, △C2 当co_1.200mg/L 时, 石3:1.188mg/L,蜗:一C3-C0:.o.012mg/L,AC3:—C3万-一CO×100%一1.oo%;对于重复性: L0 当C0=o.100mg/L时,S= :0.0109mg/L,S’l:晏×100%:I I.12%;当 Cl Co=0.500mg/L时,是= =0.0146mg/L,s’:=鲁×10。%=2.90%;当 Co=1.200mg/L时,墨= _o.Ⅲ7mg/L,文=鲁枷。%钆24%。 则I崛I<0.020 meCL,I崛|<o.050 mg/L,I蚂|<o.200 mefL;p o.007 mg/L, 曼<0.0175 mg/L,S<0.060 mg/L。其中重复性在测量0.100(mg/L)浓度的气体时超出了 范围,其余的示值误差和重复性都在标准规定范围内。 浙江理:【=人学硕十学位论文 如表6.5所示为2008年09月02日的测试数据统计表: 表6.5 2008年09月02日的测试数据统计表 序号 (09.02) 1 2 3 4 5 6 7 8 9 10 均值 22(mg/100mL)/0.100(mg/L) 示值浓度 气体浓度 (mg/100mL) 22 20 20 18 17 15 17 16 15 16 17.6 (mg,L) O.100 0.091 O.091 0.082 0.077 0.068 0.077 0.073 0.068 0.073 0.080 llO(mg/lOOmL)/O.500(mg/L) 示值浓度 气体浓度 (mg,100mL) 108 110 108 106 105 105 100 95 98 95 103.O (mg几) 0.49l 0.500 0.491 0.482 0.477 0.477 0.455 0.432 0.445 0.432 0.468 264(mg/100mL)/1.200(mg/L) 示值浓度 气体浓度 (me./100mL) 228 232 232 226 232 218 220 220 218 218 224.4 (mg,L) 1.036 1.055 1.055 1.027 1.055 0.991 1.000 1.000 0.99l 0.99l 1.020 根据表6.5可知,对于示值误差:当G=o.100mg/L时,Cl=0.080mg/L, 万C1:一Cl-Co:。0.020mg,L, AC,:Cir-C0×100%:.20%; 当Co:O.500mg/L 时, 。0 石2:o.468mg/L,万c::一C2一Co;o.032mg/L,△cj:—C72-『-C—O×100%:.6.4%;当Co:1.200mg/L oO 时,C3=1.020mg/L,蜗=C3一Co=-0.180mg/L, △C’3:_C3C-0_Co×100%:一15%’ ;对一于重复…性: 当Co=0.100mg/L时,S= :0.0108mg/L,S’l:璺×100%:13.50%;当 Cl C0=o.500mg/L时,是= =0.0252mg/L,醍=鲁×10。%《38%;当 C021.200mg/L时,岛= =0.0285mg/L,&=鲁枷。%之舶%。 则I万Cl I_0.020 mg/L,I蚂I<0.050 mg/L,I蜗l<0.200 mg/L;p0.007 mg/L, 最>0.0175 mg/L,岛<o.060 m∥L。其中示值误差在测量0.100(mg/L)浓度的气体时超出 了范围,重复性分别在测量0.100(mg/L)J农度和0.500(mg/L)g<度的气体时超出了范围,其 余的示值误差和重复性都在标准规定范围内。以下对三次测试结果进行比较: lOO 浙江理T入学硕十学位论文 O.1帅 (mg,L) O.5∞ (mg,L) 1.2∞ (mg,L) 项目 示值浓度均值 (m∥I OOmL) 气体浓度均值 (mg/L) 示值误差 (mg,L) 重复性 (m扎) 示值浓度均值 (mg,I OOmL) 气体浓度均值 (m扎J 示值误差 (mg,L) 重复性 (m扎) 示值浓度均值 (mg,lOOmL) 气体浓度均值 (mg/L) 示值误差 (mg,L) 重复性 (mg,L) 表6.6三次测试参数比较表 06月09日 07月12日 09月02日 24.5 21.5 17.6 0.112 0.098 0.080 O.012 .0.()02 —0.020 0.【)()79 0.0109 0.0108 113.5 110.6 103.0 O.516 0.503 0.468 O.016 0.()03 —0.032 O.0107 O.0146 0.0252 268.6 261.4 224.4 1.22l 1.188 1.020 0.021 .0.012 一o.180 0.0181 0.0147 0.0285 标准 22 0.100 ±0.020 ±0.007 110 0.500 ±5% ±1.75% 264 1.200 ±20% ±6% O.130 0.120 3 ¨O 面 £ 、-一 趟 mO 鹾 基 过 ∞O 雀 门 吣O 0.070 O.060 测试次序 ●_—●-2008.06.09●_——-2008.07.1 2●_—_-2008.09.02 图6.4浓度O.1帅mg/L乙醇气体测试比较 以下结合表6.6、图6.4、6.5和6.6,分析此次对智能乙醇电子鼻的测试结果。在表6.6 中,阴影数据表示没有达到标准,其中包括1项示值误差和4项重复性,而且多数存在与 lOl 浙江理I:人学硕}学位论文 检测O.100mg/L浓度是存在的,并且随着时间的推移,系统测试的重复性基本呈递增趋势, 说明系统在检测时,特别是检测低浓度气体时,存在着不稳定性。 0.560 0.540 0 记0 O卯O O铝O ^J/暑E一型蛏蕊F釜T7 O 舶 O 0.440 O.420 测试次序 ●___-2008.06.09●●_●-2008.07.12●————-2008.09.02 图6.5浓度o.soOmg,L乙醇气体测试比较 1.320 l 300 1.280 l 260 1 240 1.220 1.200 1.180 1.160 1.140 1.120 —1/锄暑一馁蛏蛙扩警心 1.100 1.080 1.060 1.040 1.020 1.000 1 测试次序 2008.06.09●_●_—-2008.07.1 2●———-2008.09.02 图6.6浓度1.2∞mg,L乙醇气体测试比较 如图6.4所示为浓度0.100mg/L乙醇气体测试比较图,图中红色线条表示2008年06 102 浙江理工人学硕士学位论文 月09日的测试曲线,蓝色线条表示2008年07月12同的测试曲线,绿色线条表示2008 年09月02日的测试曲线,灰色部分表示标准规定有效区域。从图中直观看出,红色曲线 基本平稳并略有上升,而蓝、绿曲线基本呈下降趋势;从点划线的平均值看出,测试结果 随时间呈下降趋势,其中07月测试的结果最靠近原始值,当然这也受原始配气的不确定 性影响;在09月测试时,测试结果一部分超出标准规定的区域,而且平均值也超出了误 差范围,系统测试低浓度乙醇气体时,存在不确定性。准确度为1-6/30=80%。 如图6.5所示为浓度0.500mg/L乙醇气体测试比较图,从图中直观看出,红色、蓝色曲 线的步调基本一致,而且基本稳定,绿色曲线下降趋势明显;从点划线的平均值看出,测 试结果随时间呈下降趋势,其中07月测试的结果最靠近原始值,其次是06月的测试结果, 09月的测试结果偏差最大,但没超出误差范围:09月检测结果,部分值超出标准规定的 区域,说明系统在前期检测中度乙醇气体时,稳定性较好,后期存在偏差。准确度为 1.3/30=90%。 如图6.6所示为浓度为1.200mg/L乙醇气体测试比较图,从图中只管看出,红色、蓝 色曲线的步调基本一致,而且基本稳定,绿色曲线虽然基本稳定,但与红色和蓝色曲线偏 差较大;从点划线的平均值看出,测试结果随时间呈下降趋势,其中06月和07月的测试 结果比较接近原始值,09月的测试结果偏差最大,且已经临界标准规定的区域;09月测 试的结果一半超出误差范围,说明系统后期检测高浓度乙醇气体,存在不稳定性。准确度 为1-5/30=83.3%。 综上所述,对系统分析如下,智能乙醇电子鼻系统的总体的准确度和稳定性良好,其 中在对中度乙醇气体测量时的准确度和稳定性最好,对低浓度乙醇气体测量是的准确度和 稳定性最差。在后期测量时,准确度较差,而且测试结果都存在明显下降趋势,证实了 FuelCell传感器的性能品质随着时间而衰减,从而导致明显的测量误差,这时应该对 FuelCell进行校核来避免误差产生。 6.4本章小结 本章主要阐述智能乙醇电子鼻系统的测试分析过程。首先详细描述了测试平台的搭建 过程,确定了测试流程;然后结合国家标准制定了适合系统的测试标准,在测试标准中, 除了表述了系统采用的单位标准,还解释了乙醇气体浓度换算的具体方法,同时提出了示 值误差与重复性两个重要指标;接着进入测试阶段,统计并整理测试数据,计算示值误差 与重复性等指标,对三次测试结果进行比较分析,得出智能乙醇电子鼻系统评价结论。 103 浙江理丁大学硕十学位论文 第七章总结和展望 本论文结合国内外乙醇电子鼻的发展趋势,根据便携式电子鼻现场工作以及嵌入式技 术的发展特点,以高端的ARMTTDMI处理器为核心,并在移植嵌入式操作系统gCLinux、 文件系统JFFS2和图形开发库MiniGUI基础上,编写了系统引导代码BootLoader,开发了 系统相关设备的驱动程序,设计编写了系统应用程序及系统界面。针对整个系统的硬、软 件方面进行了较为深入的研究,主要工作: (1)基于高端的16乃2位删7TDⅦ处理器LPC2210,以针对乙醇气体的燃料电池 传感器FuelCell作为信息采集主要部件,进行了系统研制,包括外围电路带有数据显示、 数据存储、数据通信功能电路等,该系统稳定运行在60MHz的频率,提供友好界面及便 捷的按键与用户交互,初步完成了乙醇气体数据的采集、分析、存储、传输功能。 (2)实现了pCLinux嵌入式操作系统及JFFS2文件系统的移植,安全可靠地管理系统 引导代码、pCLinux嵌入式操作系统内核文件、处理程序及数据等。 (3)开发了LCD驱动程序,完成了MiniGUI图形开发库的移植,另外,开发编写了 UART、USB、RF射频等部分驱动程序,并实现了移植。 (4)编写了系统应用程序,初步实现了系统采集控制、采集数据处理、存储、传输(包 括RF无线传输)等功能,同时设计编写了系统操作界面。 随着电子鼻技术和嵌入式技术的不断发展,两者的结合势必越来越紧密。本文将嵌入 式系统应用到乙醇电子鼻系统设计中,以检测人体呼气乙醇含量为目的,将应用范围从一 个面缩小到了一个点上,因此,可利用本系统作为一个参照,调整信息处理的算法及参数, 应用到更多检测乙醇气体的场合。 针对智能乙醇电子鼻系统,仍存在不足之处需要进一步研究和完善,主要在精度方面, 建议如下: 精度是测量设备的重要指标,系统虽然做了示值误差及重复性指标的测试,但效果只 能定位在准确度上,因此只能作为“筛选性测试(Screening Test)”,而不能作为“确认性 测试(Confirmatory Test)”,如果应用在执法场合,就不能作为证据去实施。另外在测试过 程中,忽略了输入量的不确定度,也就是配气装置自身及配气过程中产生的误差,还有标 准不确定度和扩展不确定度等,这些因素都会影响到系统的精度。因此,未来精度仍是智 能乙醇电子鼻系统的技术水平提高的重要方面,包括从硬件电路、A/D转换、数据处理、 传感器的精度等方面来提高。 浙江理工火学硕士学位论文 参考文献 【ol】吴浩扬.基于遗传算法的电子鼻数据融合研究[D】,西安交通大学博士学位论文,1999.10. [021于梦松.RBF神经元网络的研究及其在复杂化学信息处理中的应用【D】,浙江人学硕士学位论文, 2002.03. 【03】温丽菁.智能电子鼻的研究【D】.复旦大学硕士学位论文,2002.05. 【04】李建平等.微结构气敏传感器的热分析与结构没计【J】.传感技术学报,2000,3:193.198. 【05]田敬民等.金属氧化物、卜导体气敏机理探析【J】.西安理工大学学报,2002,18(2):144.147. 【06】史忐存.电子鼻及其应用研究[D】.中科院博士学位论文,2001.03. 【07】W.EWilkens,A.D.Hatman,An electronic analog for the olfactory process[Jl,Ann.NY Acad.Sci.,1 964, 1 16:608. 【08】T.M.Buck,EG.ALLen,M.Dalton,Detection of chemical species by surface effects on metals and semiconductors,in T.Bregman and A.Dravnieks(eds.),Surface Effects in Detection,Spartan Books Inc. USA,1965. 【09】A.Dravnieks,PJ.Trotter,Polarvapour detection based 011 thermal modulation of contact potentials[J], J.Sci.1nstrum.1965,42:624. 【1 0】K.Persand,QDodd,Analysis of discrimination mechanisms in the mammalian olfactory system using a model nose[J],Nature,1982,299:352·355. 【1 1】J.W.Gardner,Pattern recognition in the Warwick Electronic Nose,8th Int.Congress of European Chemoreception Research Organization,University of Warwick,UK,July 1 987. 【1 2】J.W.Gardner,P.N.Barlert,A brief history of electronic nose[J1.Sensors and Actuators B,1 994, 18-19:21 1-220.‘ 【13】殷勇,吴守一,邱明.用基于神经网络的电子鼻评定卷烟香气质量【J】.仪器仪表学报,2003, 24(1):86—88. [14】苏新梅,叶青,王道.气体传感器和电子鼻【J】.人学化学,1998.13(5):31—33. 【15】王磊,曲建岭,杨建华.发展中的电子鼻技术[J】,测控技术,1999.18(5):8.10. [161高国伟.传感器系列讲座(9)—气敏传感器【J】.传感器世界,1996(3):40-48. 【17】徐毓龙.国外气敏传感器发展动I句[J1.传感器世界.1996.2(1):21—28. 【1 8】N.yamazoeand,N.Miura.Development of Gas sensors for Environment Protection IEEE Tran[J].On comp.pack.and Manuf.Tech part A,1 995,1 8(2);252-256. 105 浙江理工人学硕士学位论文 【1 9】G.Sherveglieri.Gas Sensors.Kluwer Academic Publishers,Boston/London,1 992. 【20】Jones TP,Jones Aw,Williams PM.Some recent developments in breath alcohol analysis[J].The Police Surgeon 6;80-86,1 974. 【21】戴艳丽.嵌入式系统的发展及应用【J】.科技资讯,2006,(33):205.207. 【22]陈丹桂.嵌入式系统综述[J】.科技经济市场,2007,(04):23-24. 【23】王芳,郭宝增.嵌入式操作系统及其特点【J】.中国仪器仪表,2004,(11):4-5. 【24】宋延昭.嵌入式操作系统介绍及选型原则【J】.工业控制计算机,2005,日D7):4142. 【25】宁勇.嵌入式操作系统综述【J】.邵阳学院学报(自然科学版),2004,(02):45-47. 【26】周立功.ARM嵌入式系统基础教程【M】.北京:北京航空航天大学出版社,2005. 【27】Philips Semiconductor Corporation,LPC2210 datasheet.2003:16—19. 【28】潘立阳,朱钧.Flash存储器技术与发展【J】.微电子学,2002,(01):1-6. [29】陈传虎.一种RS232串口与RJ45以太网接E1转换器的设计与实现【J】.中国科技信息,2007,(23): 95-96. 【30】Weiss R.USB Gives PCs Serial Access【J】.Computer Design,1 998,(2):78. 【31】朱洪海,林良明,颜国正.通用串行总线的原理及其实现【J】计算机工程,2000,(10):185—187. 【32】张崇,于晓琳,等.单片2.4GHz无线收发一体芯片nRF2401及其应用【J】.国外电子元器件,2004, (06):34-36. 【33】于明,范书瑞,曾祥烨.ARM9嵌入式系统设计与开发教程【lⅥ】,北京:电子工业出版社,2006.4. 【34】JEAN J.LABROSSE,邵贝贝译.pC/OS—II源码公开的实时嵌入式操作系统[M】.北京:北京航空航 天大学出版社,2003. 【35】林晓匕,刘彬,等.基于ARM嵌入式Linux虑用开发与实例教程IM].北京:清华大学出版社,2007.7 【36】孙琼.嵌入式Linux应用程序开发详解[M】一匕京:人民邮电出版社,2006.7. 【37】李强,杜威,慕春棣.基于人容量闪存的嵌入式文件系统【J】.计算机T程,2005,(10):78-80. [38】李志辉,等.适合嵌入式Linux应用的文件系统JFFS[J].单片机与嵌入式系统应用,2002,(11):81-84. 【39】查峰.JFFS2文件系统存储策略的研究与实现【D】.大连理工人学,2006. [40】冼进.嵌入式Linux应用开发详解【M】J匕京:电子工业出版社,2007.1 l 【4l】徐广毅等.嵌入式Linux系统中GUI系统的研究与移植【J】.单片机与嵌入式系统应用,2004.10:1 1—14. 【42】丁丁,习勇等.三种主流嵌入式图形用户界面的移植及性能比较[J】.电子产品世界,2004.05:73.74. 【43]周立功.ARM嵌入式MiniGUl初步与应用开发范例【M】.j匕京:北京航空航天大学出版社,2006,2-6 [44】Gardner,J.W.&Bartlert P N.Electronic Noses[J]:Principles and Applications(Oxford Univ.Press,UK, 106 浙江理T大学硕士学位论文 1999). 【45】岳睿.警用呼气式酒精传感器的研究进展【J】.化学传感器,2006,(03):6.1 1. 【46】公安部交通管理科学研究所,上海市计量测试技术研究院.GA 307.2001呼出气体酒精含量探测器 【s】.行业标准一公安(CSIC—GA),2001. [47】刘建国,孙公权.燃料电池概述【J】.物理,2004,(02):79—84. 【48】白彦华,石井弘毅等.图说燃料电池原理与应用【l川.北京:科学出版社,2003.2. [49】詹姆斯.拉米尼,安德鲁.迪克斯等.燃料电池系统一原理.设计.应用【M】.北京:科学出版社,2006.2. 【50】顾伟军,史晓尔,彭亦功.基于电化学原理的燃料电池型酒精传感器技术与设计【A】.第八届工业仪 表与自动化学术会议论文集it],2007. 【51】张念怀,江浩.USB总线接口开发指南【M】.北京:国防工业出版社,2001. [52】陈逸.USB人全【M】.北京:中国电力出版社,2002. [53】滕岩峰等.基于USBN9604的通用USB设备接口的研究与开发【J】.微型机与应用,2003,(06):18.21. [54】郭继燕,陈字,等.USBN9604及其在USB接口设计中的应用【J】.国外电子元器件,2003,(05):29.31. 【55]陈丽娟,常丹华.基于nRF2401芯片的无线数据通信[J】.电子器件,2006,(01):248.250. 【56]王博,李迅,马宏绪.基于nRF2401的无线数据传输系统【J】.电子工程师,2004,(08):17-20. 【57】周红霞.嵌入式Linux系统的引导过程及启动代码分析【J】电脑开发与应用,2005,(02):50.52. 【58】聂俊航,邱辉.Bootloader的分析和设计【J】.微处理机,2006,(04):82.84. 【59】宋国军.嵌入式系统U—Boot基本特点及其移植方法【J】.单片机与嵌入式系统应片j,2004,(10):78.81. 【60】张进,姜威.u-boot的启动流程分析及移植步骤【J】.电力自动化设备,2005,(07):68.71. 【6l】畅卫功,刘尧猛,黄建岗.U.Boot的分析与移植【J】.信息技术,2008,(07):25-27. 【62】苗启广,魏乐等.基于uClinux的嵌入式软件开发架构明.计算机:I:程与设计,2004,(06):881.883. 【63】uClinux in the GDB/ARMulator.http://www.uelinux.org. 【64】Hyok S.Choi.Getting Familiar with uClinux/ARM2.6.http://opensrc.see.samsung.com. 【65】赵瑞娟,李敬兆.基于ARM—LPC2210的uClinux移植与应用【J】.科技信息(科学教研),2008,(21):82 【66】贾东耀.uCiinux下Nor Flash的JFFS2文件系统构建y]l勤b电子元器件,2004,(09):24-27. 【67】胡晨峰.JFFS2文件系统在/aClinux中的应脂【J】电子产品世界,2003,(07):47-50. 【68】孙天泽,袁文菊,张海峰.嵌入式设计及Linux驱动开发指南【M】.北京:电子工业出版社,2005. 【69】冯国进.嵌入式Linux驱动程序设计从AfJ至J精通【M】.北京:清华大学出版社.2007. 【70】重庆市公安局交通管理局.GB 19522.2004车辆驾驶人员血液、呼气酒精含量闽值与检验【s】.国家 质检总局(SBTs),2004. 107 浙江理下大学硕士学位论文 致谢 值此论文完成之际,首先向尊敬的导师陈昆昌教授和李仁旺教授表示衷心的感谢和诚 挚的敬意。 时光如水,日月如梭,转眼两年半的学习生活即将结束。两年半来,导师敏锐的思维、 严谨的治学态度、渊博的学识、果断干练的作风、诚挚谦虚的品格和宽厚善良的处世方式, 永远值得我学习和效仿。在导师陈昆昌教授和李仁旺教授的悉心指导下,我完成了硕士学 位论文、相关科研活动、公开发表文章等充满艰辛的任务,导师在我的学业上尤其是在论 文的撰写过程中,倾注了大量的心血,给予了我许多教诲和指导,将使我终生受益。此外, 导师还在生活方面给予了我诸多关怀和爱护,使我感到如一股暖意细水长流,源自内心而 又淌遍全身,我将更加努力,不辜负恩师的期望。 感谢工业工程系的鲁玉军老师、孙永剑老师、万昌江老师、暴志刚老师,以及工业工 程系的所有老师对本人在科研和学术上的指导和支持!感谢学院研究生辅导老师沈晓斐老 师和邵韵老师在学习和生活上的帮助和鼓励!感谢学院的老师们,正是他们的工作给我创 造了良好和舒适的学习和科研环境。在此,致以诚挚的谢意。 感谢先进制造实验室的同学们,尤其感谢刘海霞师姐、张志乐、李耀辉、杨贵、李东 龙、陈翔、张绪,他们不仅仅使我感受到科研团队的力量,也使我感受到生活的充实和愉 悦!此外,还要感谢熊业攀、任志峰等学弟们所提供的莫大帮助!,感谢班长林晓勇,室 友杨文豪,感谢本人所在的2006级3班全体同学!你们那种意气风发的精神,不由得使 我倍感鼓舞,谢谢你们! 我深深地感谢我的父亲和母亲对我一贯的支持、理解、鞭策、鼓励和帮助,他们崇尚 知识的理念和热爱生活的态度对我影响至深。感谢我的小妹和女朋友对我生活上的关心, 每当我在学业上受到挫折时,总能从他们那儿得到精神上的安慰和鼓励。他们一直是我勇 往直前的精神动力。 两年半的时光犹如人生旅途划过的一颗璀璨靓丽的流星。有太多的人和事值得回忆, 也有太多的经验和教训值得我总结和汲取! 最后,向所有直接或间接帮助过我的老师、同学、亲人、朋友、工作人员,以及本文 的评阅老师表示感谢,谢谢您们1 108 浙江理.1:大学硕士学位论文 攻读硕士研究生期间发表的学术论文和参加的科研项目 ◆参加的科研项目 > 国家自然科学基金(50675208):动静脉相结合制造系统及自组织设计仓库研究 > 浙江省杰出青年团队项目(R6080403):李仁旺研究团队 ◆参加实践活动 > 浙江省“挑战杯"科技竞赛项目:交互式虚拟物流仓储系统 > 浙江省新苗人才计划项目(2007R4062060002):工业工程虚拟物流系统研究开发 ◆发表论文 > 中文核心期刊2篇,第一作者。 > 转子白适应动平衡测试系统的设计与实现,计算机工程,2008.34(16),249—251 > VR仿真平台在自动化仓储系统中的设计与实现,计算机工程,2008.34(22),250—252 > ISTP检索1篇,第三作者。 > Research on an ant colony ISODATA algorithm for clustering analysis in real time computer simulation,SECOND WORKSHOP ON DIGITAL~IEDIA AND ITS APPLICATION IN MUSEUM&HERITAGE, PROCEEDINGS 223—227,2007 > 中国核心期刊lO篇,非第一作者。 ◆科研成果 > 申请专利 > 发明专利6项 > 基于无线网络的酒精测试方法及系统受理号:200810063678.9 > 基于以太网的红外酒精测试方法及系统受理号:200810063049.6 > 交互式三维虚拟物流仿真集成系统受理号:200810120686.2 > 人批量定制二维时空模型优化方法受理号:200810120687.7 > 基于RFID和GSM网络、银行支付的售货方法及系统受理号:200810120685.8 > 带有曲线绘制功能的红外酒精测试方法及系统受理号:200910095212.I > 实用新型专利1项 > 带有曲线绘制功能的红外酒精测试系统受理号:2009201 12009.6 > 外观专利l项 > 红外酒精测试仪受理号:200830168947.9 > 软件著作权 > 测试实验室信息管理系统软件(TL~IMS)V1.0登记号:2008SRl9540 > 动静脉相结合制造系统模块化管理平台软件(删SA)V1.0登记号:2008SRl7609 > 交互式虚拟物流仓储系统软件(IVLSS)VI.0登记号:2007SR08313 > 企业协同工作平台系统软件(CWPE)V1.0登记号:2007SR03018 109 基于ARM+μCLinuz的智能乙醇电子鼻系统的研究与实现 作者: 学位授予单位: 张鹏举 浙江理工大学 本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1606124.aspx 下载时间:2010年5月25日

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。