[硕士论文精品]基于linux操作系统arm体系的嵌入式工控一体机设计与实现_第1页
[硕士论文精品]基于linux操作系统arm体系的嵌入式工控一体机设计与实现_第2页
[硕士论文精品]基于linux操作系统arm体系的嵌入式工控一体机设计与实现_第3页
[硕士论文精品]基于linux操作系统arm体系的嵌入式工控一体机设计与实现_第4页
[硕士论文精品]基于linux操作系统arm体系的嵌入式工控一体机设计与实现_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

上海交通大学硕士研究生学位论文5基于LINUX操作系统ARM体系的嵌入式工控一体机设计与实现摘要随着嵌入式控制在工业领域的不断渗入,进入21世纪之后,基于ARM体系LINUX操作系统的嵌入式一体化工业控制系统成为了工业控制的主要发展方向,ARM芯片不仅体积小,功耗低,而且功能强;LINUX由于其开源,稳定以及成本低的优点,在嵌入式系统中得到了广泛的应用。本文研究的主要内容是基于LINUX操作系统ARM体系的嵌入式工控一体机设计与实现。该嵌入式工控一体机是基于MOTOROLA公司研发的ARM9嵌入式系统和LINUX操作系统的设备,整个系统体积小,结构精简,并有很高的执行效率。它根据特定的工业控制对象定制特定的模型与控制算法。另外,该设备自身还具备各种数字PID控制算法,实现PID闭环控制。可以应用于工业控制领域中的各类被控设备,以及为高校自动化控制实验和工业应用研究提供解决方案。它的软件编程由QT集成开发环境实现,QT是基于C的针对构造图形用户界面(程序)所使用的GUI工具包,它速度块,易于使用,并具有很好的可移植性。本文首先对嵌入式系统进行选型,然后提出了系统的软硬件整体上海交通大学硕士研究生学位论文6架构和系统的启动流程。接着介绍了系统开发环境的搭建,包括启动加载器的设计和实现,LINUX内核的移植,设备驱动程序的编写以及图形用户界面的实现。最后,详细介绍了一个具有创新性的案例作为该嵌入式LINUX工控一体机作为通讯和控制终端的典型应用。该嵌入式LINUX工控一体机具有极好的实用性和应用前景,并且其设计和实现过程对于其它嵌入式平台也具有很好的参考价值。关键词ARM体系LINUX操作系统QT集成开发环境PID算法上海交通大学硕士研究生学位论文7THEDESIGNANDREALIZATIONOFTHEEMBEDDEDINDUSTRIALSYSTEMBASEDONARMANDLINUXABSTRACTWITHTHEDEVELOPMENTOFINTELLIGENTCONTROL,ARMSTRUCTURETOGETHERWITHLINUXOSHAVEALREADYBECOMETHETRENDOFTHEINDUSTRIALCONTROLSYSTEMINTHE21CENTRYITHASBEENWIDEAPPLIEDDUETOTHESTRONGFUNCTIONOFARMSTRUCTUREANDOPENSOURCEOFLINUXTHISTHEISMAINLYFOCUSONTHEDESIGNANDREALIZIONOFTHEENBEDDEDINDUSTRIALSYSTEMWITHARMSTRUCTUREANDLINUXOSTHESTRUCTUREOFWHOLESYSTEMISSMALLANDEFFICIENTWHICHUSESPECIFICMODELANDARITHMETICBESIDES,THISSYSTEMHASBEENDESIGNEDWITHFEEDBACKPIDARITHMETICWHICHCANBEAPPLIEDINTOMOSTINDUSTRIALSYSTEMS,ALSOINTHELABOFUNIVERSITYTHEPROGRAMMINGBASESONQTINTEGRATEDDEVELOPMENTENVIRONMENTTHETHESISMAKESASIMPLEREQUIREMENTANALYSISANDSELECTTHECHIPSTHENPROPOSETHEFLOWCHARTFORBOTHHARDWAREANDSOFTWAREINCLUDINGESTABLISHINGTHEDEVELOPENVIRONMENT,DESIGNINGTHEOVERLOAD,KERNALTRANSFERANDGUIAPPLICATIONATLASTTHETHESISGIVESADETAILSAMPLEOFAENBEDDED上海交通大学硕士研究生学位论文8INDUSTRIALSYSTEMWITHCOMMUNICATIONVIAETHERNETTHISOBJECTHASAGREATPERSPECTIVE,ALSOAEXCELLENTREFERENCEOFOTHERPLANFORMKEYWORDSARMSTRUCTURE,LINUXOS,QTIDE,PIDARITHMETIC上海交通大学硕士研究生学位论文121概述11嵌入式系统概述进入21世纪,嵌入式系统已渗入到社会和生活的各个领域,从手机、PDA、机顶盒、电冰箱、到空调、汽车、航天飞机等等,都是嵌入式系统应用的典型代表,可以说,嵌入式系统的发展与普及是计算机时代的一次新的革命。嵌入式系统是一种面向领域和应用,以计算机技术、半导体技术和电子技术为基础,软硬件可裁剪和定制的专用计算机系统,适用于对功能、可靠性、成本、体积和功耗等有严格要求的应用系统。嵌入式技术的发展,大致经历了四个阶段第一阶段是以单芯片为核心的可编程控制器形式的系统,同时具有与监测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。这一阶段的操作系统具有一定的兼容性和扩展性,但用户界面不够友好。第三阶段是以嵌入式操作系统为标志的嵌入式系统。这一阶段系统的主要特点是嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口,开发应用程序简单;嵌入式应用软件丰富。第四阶段是以基于INTERNET为标志的嵌入式系统,这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于INTERNET之外,但随着INTERNET的发展以及INTERNET技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与INTERNET的结合将代表着嵌入式技术的真正未来。贯穿于嵌入式系统的整个发展过程,嵌入式系统以“嵌入性”、“专用性”和“计算机系统”为三大基本要素,作为一个新兴的高科技产业,嵌入式产业涵盖了面向应用的IC设计、高速电路板设计、嵌入式操作系统、中间件技术、上海交通大学硕士研究生学位论文13嵌入式软件集成开发环境和调试技术等关键技术。新一轮汽车、通信、信息家电、医疗仪器、军事等行业的巨大的装备需求在很大程度上拉动了嵌入式系统的发展,面向领域、应用特制、无所不在,嵌入式系统已成为产品的数字化改造、智能化增值的关键性、带动性技术。嵌入式系统主要由硬件系统和软件系统两部分组成,这两部分面向应用、协同工作,实现特定的功能。嵌入式系统的组成如图11所示图11嵌入式系统的组成一个好的嵌入式系统都需要一个完整的硬件规划作为其实现系统功能的条件,不同的应用有不同的硬件环境,硬件平台的多样性是嵌入式系统的一个主要特点。而嵌入式系统的软件部分就像是嵌入式系统的灵魂,决定了所有硬件的操作模式,通过优异的操作系统以及应用程序,可以将已有的硬件装置的功能发挥到极致。嵌入式系统的硬件核心是嵌入式处理器,而其软件核心是嵌入式操作系统。嵌入式处理器在目前的嵌入式硬件设计上具有极大的影响力,嵌入式系统开发人员必须从琳琅满目的嵌入式处理器中根据应用需求来选择一款最适当的处理器作为嵌入式系统的控制核心,才能兼具低成本和高效率的优势。现代信息社会的高效性、协同性客观上要求软件的编写便于多人分工合作,编写的软件具有可重用性。此时,软件则相应的变的日趋复杂。所有这些迫切需要有一个屏蔽底层硬件的、功能强大的操作系统来支持,这就是嵌入式系统软件的核心嵌入式操作系统。嵌入式操作系统完成相应的任务调度和控制、资源分配等核心功能,具有内核简洁、可配置、和高层应用紧密关联等优点。目前,比较流行的嵌入式操作系统主要有嵌入式LINUX、WINCE、VXWORKS、UCOS/II、ECOS、PALMOS、SYMBIANOS等。其中UCOS/II和ECOS主要面向低端设备,比如各种工业控制系统和各种民用消费品;而嵌入式LINUX和WINCE则主要面向高端设备,比如信息家电、掌上电脑、机顶盒等;而PALMOS和SYMBIANOS上海交通大学硕士研究生学位论文14则更多地用于手机和PDA。各种嵌入式操作系统各有其特点,因此在构建嵌入式系统的时候要选择合适的操作系统(甚至可以不使用操作系统)以满足特定的硬件平台和应用需求。嵌入式微处理器和嵌入式操作系统是整个嵌入式系统的关键,对整个系统的性能、稳定性和可靠性起着至关重要的作用,因此在开发过程中,要根据实际需求做出合适的选择。而嵌入式微处理器和嵌入式操作系统的开发设计人员则需要从应用出发,对它们的功能进行不断完善和改进。另外随着嵌入式微处理器主频的不断提高,从整个系统的性能和稳定性出发,必须考虑电路板的EMC电磁兼容性和SI信号完整性,采用高速电路板设计技术。在软件方面,为了便于嵌入式软件的开发,需要有方便的集成开发环境和软件调试工具,还可以针对行业应用,开发相应的中间件技术。12ARM体系概述ARM(ADVANCEDRISCMACHINES),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,从而使产品更容易进入市场被消费者所接受,更具有竞争力。采用RISC架构的ARM微处理器一般具有如下特点。体积小、低功耗、低成本、高性能;支持THUMB(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。下面所列的是ARM微处理器的几个系列,以及其他厂商基于ARM体系结构的处理器,这些处理器除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。ARM7系列微处理器的主要应用领域为上海交通大学硕士研究生学位论文15工业控制、INTERNET设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。SECURCORE系列微处理器主要用于一些对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。INTERSTRONGARMSA1100处理器是采用ARM体系结构高度集成的32位RISC微处理器。它融合了INTER公司的设计和处理技术,以及ARM体系结构的电源效率,采用在软件上兼容ARMV4体系结构、同时采用具有INTEL技术优点的体系结构。INTELSTRONGARM处理器是便携式通信产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品。XSCALE处理器是基于ARMV5TE体系结构的解决方案,是一款性能全、性价比高、功耗低的处理器。它支持16位的THUMB指令和DSP指令集,已使用在数字移动电话、个人数字助理和网络产品等场合。13LINUX操作系统概述LINUX内核最初只是由芬兰人李纳斯托瓦兹(LINUSTORVALDS)在赫尔辛基大学上学时出于个人爱好而编写的,最初的设想中,LINUX是一种类似MINIX这样的一种操作系统。以下是LINUX操作系统的主要几个分类。RTLINUX是由美国墨西哥理工学院开发的嵌入式LINUX操作系统。到目前为止,RTLINUX已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等广泛领域。UCLINUX是LINEO公司的主打产品,同时也是开放源码的嵌入式LINUX的典范之作。UCLINUX主要是针对目标处理器没有存储管理单元MMU(MEMORYMANAGEMENTUNIT)的嵌入式系统而设计的。它已经被成功地移植到了很多平台上。由于没有MMU,其多任务的实现需要一定技巧。EMBEDIX是由嵌入式LINUX行业主要厂商之一LUNEO推出的,是根据嵌入式应用系统的特点重新设计的LINUX发行版本。像其它的LINUX版本一样,EMBEDIX可以免费获得。LUNEO还发布了另一个重要的软件产品,它可以让在WINDOWSCE上运行的程序能够在EMBEDIX上运行。LUNEO还将计划推出EMBEDIX的开发调试工具包、基于图形界面的浏览器等。可以说,EMBEDIX是一种完整的嵌入式LINUX上海交通大学硕士研究生学位论文16解决方案。XLINUX是由美国网虎公司推出,主要开发者是陈盈豪。他在加盟网虎几个月后便开发出了基于XLINUX的、号称是世界上最小的嵌入式LINUX系统,内核只有143KB,而且还在不断减小。XLINUX核心采用了“超字元集”专利技术,让LINUX核心不仅可能与标准字符集相容,还含盖了12个国家和地区的字符集。因此,XLINUX在推广LINUX的国际应用方面有独特的优势。POKETLINUX由AGENDA公司采用、作为其新产品“VR3PDA”的嵌入式LINUX操作系统。它可以提供跨操作系统构造统一的、标准化的和开放的信息通信基础结构,在此结构上实现端到端方案的完整平台。POKETLINUX资源框架开放,使普通的软件结构可以为所有用户提供一致的服务。红旗嵌入式LINUX是由北京中科院红旗软件公司推出的嵌入式LINUX,是国内做得较好的一款嵌入式操作系统。14QT开发环境概述QT是一个跨平台的C图形用户界面库,由挪威TROLLTECH公司出品,目前包括QT、基于FRAMEBUFFER的QTOPIACORE、快速开发工具QTDESIGNER和国际化工具QTLINGUIST等部分。QT支持所有的UNIX系统,当然也包括LINUX系统,还支持WINNT/WIN2K、WINDOWS95/98平台。QT/EMBEDDED同样具有跨平台的特点,省掉了不少移植软件的功夫,这样的概念和JAVA十分接近。同时它还采用模块化设计,其最大的好处是有弹性,QT/EMBEDDED号称最小,可以缩到800KB左右,最多可以长到3MB(FORINTELX86),这样的弹性也让QT/EMBEDDED更适合在嵌入式环境下生存。QT/EMBEDDED类库完全采用C封装。丰富的控件资源和较好的可移植性是QT/EMBEDDED最为优秀的一方面。QT/EMBEDDED当前已经升级为QTOPIACORE和QTOPIACORE,继承了QT4的新技术,包括高性能渲染引擎、模板容器类及基于行为的主窗口架构,改进的功能特点包括文本渲染与多线程技术。当编译QTOPIACORE时,可以去除不用的功能,以最小化软件的占用空间。15嵌入式工控一体机的意义嵌入式工控一体机,或者说工业平板电脑,它以嵌入式微处理器和嵌入式操上海交通大学硕士研究生学位论文17作系统为基础,融合了控制算法、人机界面、输入输出等要素,是面向工业现场应用的便携式、低功耗、可配置的智能化计算机控制系统。作为通讯控制终端,嵌入式工控一体机可以用于电信、电力、各种工业自动化设备、制造业等多个工业控制场合,具有很好的应用前景。目前,LINUX在我国发展迅猛,在嵌入式领域的发展尤其引人注目,越来越多的企业和开发人员投入到了LINUX的开发浪潮中来,技术也变得越来越成熟。由于LINUX的开源优势,LINUX在我国的应用和发展将成为提高我国操作系统核心竞争力的契机。虽然目前市场上基于LINUX的嵌入式工控一体机还很少,但这必将是一种趋势,尤其是在这么一个自主创新和知识经济的时代。另外,基于32位ARM架构的嵌入式微处理器以其高性能、低功耗、低成本的优势占据了嵌入式处理器市场80左右的份额,得到了很好的推广应用。因此,基于ARM9微处理器和嵌入式LINUX操作系统来开发新一代嵌入式工控一体机将是一个很好的选择,对提高我国在这一领域的核心竞争力和自主创新能力具有深远的意义。上海交通大学硕士研究生学位论文182系统整体设计21系统选型鉴于ARM微处理器的众多优点,随着国内外嵌入式应用领域的逐步发展,ARM微处理器必然会获得广泛的重视和应用。但是,由于ARM微处理器有多达十几种的内核结构,几十个芯片生产厂家,以及千变万化的内部功能配置组合,给开发人员在选择方案时带来一定的困难,所以,对ARM芯片做一些对比研究是十分必要的。以下从应用的角度出发,对在选择ARM微处理器时所应考虑的主要问题有ARM微处理器内核的选择,系统的工作频率,芯片内存储器的容量,片内外围电路的选择。22嵌入式微处理器MC8328MXL基于ARM架构的32位嵌入式微处理器以其高速度、低功耗、特有16/32位双指令集以及丰富的接口资源等诸多优异的性能,已成为工业控制、消费类电子产品、通信系统、网络系统和无线系统等嵌入式解决方案的RISC标准。本嵌入式工控一体机则选用的就是MOTOROLA公司的MC8328MXL。23嵌入式操作系统嵌入式LINUX随着微处理器的产生,价格低廉、结构小巧的CPU为外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。比如VXWORKS、PSOS、NECULEUS和WINDOWSCE等,这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。对上层应用开发者而言,嵌入式系统需要的是一套高度简练、界面友善、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。由于LINUX可以支持不同的设备,支持不同的配置,而且具有很好的开放性,LINUX非常适合嵌入式系统。LINUX对厂商以及开发者而言不偏不倚而且上海交通大学硕士研究生学位论文19成本极低,能够很快成为用于各种设备的操作系统。嵌入式LINUX是将LINUX操作系统进行裁剪、修改,使之能在嵌入式系统上运行的一种操作系统。作为LINUX的嵌入式版本,嵌入式LINUX几乎具备了LINUX的所有特性,这也是嵌入式LINUX日益流行的主要原因。LINUX支持广泛的计算机硬件,包括X86,ALPHA,SPARC,MIPS,PPC,ARM等现有的大部分CPU芯片。程序源码全部公开,任何人可以修改并在GNU通用公共许可证GNUGENERALPUBLICLICENSE下发行。LINUX带有UNIX用户熟悉的完善的开发工具,几乎所有的UNIX系统的应用软件都已移植到了LINUX上。LINUX还提供了强大的网络功能,有多种可选择窗口管理器(XWINDOWS等等),其强大的GNU编译器GCC、G等也可以很容易得到,不但成熟完善、而且使用方便。24嵌入式微处理器MC9328MXI及周边硬件整个硬件系统由核心板和底板两部分组成,结构框图如图21和22所示SDRAM16MB/32MBX2FREESCALEMC9328MXLA152A240NORFLASH16MB/8MBA240SDCTLD150D310EIMCTLD310BOOTSWITCH32768KHZCRYSTALPOWER/RESETJTAG3V3POR1V8BTBCONNECTORSD310A240UART1/UART2EIMCTRLSPISSI1/SSI2LCDUSBDEVICESDCSI图21核心模块硬件结构框图上海交通大学硕士研究生学位论文20BUFFERCOREMODULECONNECTORSA30,EIMCTLBUFFERCS8900AD150BA30EEPROMBD150TRANSFORMERTSC2301SSIGPIOSPI4X4KEYPADDI/DOHEADPHONEJACKMICINJACKAD/DALCDSIGNALSTOUCHSCREENRJ45CONNECTORLCDANDTOUCHSCREENCONNECTORI2CCSISIGNALSISP1106USBSLAVETRANCEIVERCSICONNECTORUSBDEVICESL811USBHOSTCONTROLLERUSBSLAVECONNECTORD2316USBHOSTCONNECTORCONTROLMAX3232UART1DB9CONNECTORSDSOCKETSDSIGNALSPWMOUART2REGULATORDCJACK5VINPUT5V3V3图22底板硬件结构框图核心板采用基于ARM920TDMI核的MC9328MXL微处理器,主频可达200MHZ,具有多媒体加速功能,并且具有超低功耗;集成了832MB的NORFLASH和1664MB的SDRAM,并将数据总线、地址总线、UART、USB、SSI、SPI、I2C、LCD控制器、SD卡控制器、CMOS图像传感器接口等信号通过两排高密度的接口,引向扩展底板。2个UART接口中的一个定义为RS232模式,另一个可扩展为RS232、RS485或者IRDA模式。GPIO和AD/DA扩展接口可扩展5个GPIO口,1路DA,若不使用触摸屏,还可以扩8路AD,否则可扩4路ADARM9嵌入式工控一体机的硬件部分的实现,主要包括硬件原理图的设计和PCB设计两部分,这里主要介绍原理图设计部分。整个系统采用核心板和扩展板双层结构,如图23所示,核心板主要包括CPU、SDRAM、FLASH等几个部分,扩展板则实现接口和功能的扩展。由于系统的主频比较高,因此在进行硬件设计的过程中一定要考虑高速电路板设计过程所应注意的各种问题。上海交通大学硕士研究生学位论文21图23硬件电路板原型25软件结构对于嵌入式工控一体机而言,其软件部分的实现最为关键,其软件架构大体上可以用图24来表示图24软件层次结构从上图我们可以看到,整个软件系统主要由内核和设备驱动,文件系统,图形GUI中间件,工业控制相关的专用模块,以及上层应用程序等几部分组成。除了这些,还有一个很重要的部分需要实现,这就是BOOTLOADER(启动加载器),INDUSTRIALCONTROLMODULEQT/EMBEDDEDGUIMIDDLEWARELINUX2418KERNEL/EMBEDDEDFILESYSTEMAPPLICATIONNETWORKCOMMICATIONCURVEDISPLAYEMBEDDEDDATABASEDEVICEDRIVERHARDWARE上海交通大学硕士研究生学位论文22主要用来在系统启动过程中完成硬件的初始化,并把内核从FLASH加载到SDRAM中,然后启动内核,把控制权交给内核。26交叉编译嵌入式软件开发过程中,还有一个很重要的概念需要明确,这就是“交叉编译”。由于我们一般都是在宿主机上进行嵌入式软件的开发,在编译的时候如果使用针对宿主机(一般都是基于X86架构的)的编译环境进行编译和链接的话,生成的可执行代码只能运行于宿主机X86平台,而无法运行于诸如ARM等其它架构的平台。为了使在宿主机上开发的软件能够运行于目标平台,我们需要在宿主机上安装专门针对目标平台指令集的工具链,来对程序进行编译和链接。由于我们的目标机是基于MXLARM9微处理器的,因此我们需要在REDHATLINUX90中安装专门针对MXL微处理器的交叉编译器工具链。针对不同的内核版本或者不同的硬件目标平台,都需要构建相应的交叉编译工具链。然而从头设置和构建交叉编译器工具链可不是一项简单的任务它包括下载源代码、修补补丁、配置、编译、设置头文件、安装等很多操作。另外,这样一个彻底的构建过程对内存和硬盘的需求上巨大的,如果没有足够的内存和硬盘空间,那么在构建阶段由于相关性、配置或头文件设置等问题会突然冒出许多问题。幸运的是,处理器厂商一般都已经为开发者构建了相应的交叉编译器工具链,对于MXL处理器也不例外,我们可以从FREESCALE的网站上下载针对MC9328MXL的交叉编译工具。下载完成后,可以按如下步骤来安装交叉编译工具CPUSRLOCALGCCTARGZ/USR/LOCALCPUSRLOCALARMKERNELHEADERSTARGZ/USR/LOCALCPUSRLOCALARMGCCTARGZ/USR/LOCALCD/USR/LOCALTARZXFUSRLOCALGCCTARGZTARZXFUSRLOCALARMKERNELHEADERSTARGZTARZXFUSRLOCALARMGCCTARGZ然后在/ETC/PROFILE文件的末尾增加“EXPORTPATH/USR/LOCAL/ARM/BINPATH”环境变量支持,此后我们就可以使用针对MXL上海交通大学硕士研究生学位论文23的交叉编译器了。27系统启动流程在介绍整个嵌入式工控一体机的软硬件实现之前,先介绍一下整个系统的启动流程系统上电根据相应的启动模式,从对应的起始地址开始运行,比如说FLASH的起始地址运行BOOTLOADER,完成时钟、SDRAM和片选空间等相关寄存器的初始化把LINUX内核从FLASH加载到SDRAM开始运行内核,完成体系结构相关的初始化工作,以及内核数据结构的初始化创建内核线程,调用INIT函数,在该函数中调用DO_BASIC_SETUP完成外设的初始化释放启动内存段,并给内核解锁,打开/DEV/CONSOLE设备,重定向STDIN,STDOUT和STDERR加载根文件系统搜索文件系统中的INIT程序(比如/SBIN/INIT),通过EXECVE系统调用加载执行,创建INIT进程,进程号为1,是系统中所有其它进程的父进程读取/ETC/INITTAB,并依次执行相关程序运行/ETC/INITD/RCS启动脚本,完成相关驱动模块的加载,并启动SHELL和相应的用户应用程序。上海交通大学硕士研究生学位论文243硬件实现31MC9328MXL介绍MC9328MXL的结构框图如图31所示,该微处理器具有以下特征图31MC9328MXL结构框图CPU内核模块采用ARM920T微处理器内核,主频最高可达200MHZ,使用16KB指令CACHE和16KB数据CACHE,包含内存管理单元,采用AMBAADVANCEDMICROCONTROLLERBUSARCHITECTURE片上系统多主机总线接口;AHBIP总线接口(AIPIS)提供高速AHB总线和用于低速外设的低速IP总线之间的通信接口;外部接口模块(EIM)支持多达六个外部设备的片选,每一个包含16M字节的地址空间,而用于ROM的片选支持最多32M字节的地址空间;SDRAM控制器(SDRAMC)支持四个BANK的64256M位的同步动态随机存储器;含有两个独立的片选端,每个片选支持多达64M字节并能使四个BANK同时处于活跃状态,这两个片选还支持JEDEC标准引脚输出和操作;系统控制模块通过使用JTAG/ICE模块,就可以在系统设计时使用ARM开发工具对系统进行直接调试;BOOTSTRAP模式允许用户通过UART把程序或数据下载到系统内存当中,接受执行命令并执行存储在系统内存中的程序;支持内存/寄存器的读/写操作,而且数据大小可以从字节、半字或者字当中选择;提供上海交通大学硕士研究生学位论文2532字节的指令缓冲区用于ARM920T内核的向量表存储和指令存储与执行;为了提供更宽范围的片上时钟,内核时钟的产生实际上是使用了一个两阶段的锁相环,第一阶段是预乘,通过将32KHZ或者32768KHZ的输入频率乘上因数512得到16384MHZ或者1678MHZ的输出频率;第二阶段是一个数字锁相环阶段DPLL,可以根据系统需要通过寄存器配置来生成相应的输出频率。DPLL可以分为MCUPLL和SYSTEMPLL;通过功耗控制模块,系统可以运行于三种模式运行模式RUN、睡眠模式DOZE和停止模式SLEEP;标准的系统I/O模块由GPIO接口具有中断能力,一共有97个I/O引脚和一些功能复用引脚;脉宽调制器模块拥有4X16FIFO,精度为16位,能产生声音和旋律;定时器和实时时钟32768KHZ或者32KHZ操作,全时钟特征(包括秒,分,时,日);看门狗定时器等组成多媒体处理模块由多媒体加速器MAC模块实现了FIR算法和FFT算法的操作,可使MP3应用程序节约10到15的CPU时间;而DCT/IDCT硬件加速器则使应用程序在做MPEG4解码时节约10的CPU时间;以及视频端口等组成用户接口模块由LCD控制器组成,它支持单色、彩色STN以及彩色TFT显示屏,把系统内存用作显存,使用8位的PWM进行LCD对比控制,支持LCD自我刷新;设备连接模块提供了MMC/SD控制器,MEMORYSTICK控制器,用于支持MMC卡,SD卡和MEMORYSTICK存储卡;另外,还提供了两个SPI接口,两个UART接口,一个SSI总线,一个I2C总线,以及一个USBDEVICE接口。32SDRAM模块我们采用线性地址模式来设计SDRAM模块,并且通过两个排阻的选择来使用16MB4MBITX16X2,32MB8MBITX16X2)或者64MB16MBITX16X2大小的SDRAM,以满足不同的应用需求。MXL和SDRAM之间的信号连接如图32所示上海交通大学硕士研究生学位论文2612345678RP4000X4A12A12A14A13A15A14A13DQM2_SDRDQM3_SDRCS2MA10MA10A3A10A8A4M_8MA6A7A9A2A4A5MA1112R6000A16MSDCKE0_SDRSDCLK_SDRBS0BS1DQM1_SDRDQM0_SDRSDCLK_SDRSDWE_SDRCAS_SDRRAS_SDRSDCKE0_SDRVCC1DQ02GND6DQ14VCC3DQ25GND52DQ37VCC9LDQM15WE16A1135A10/AP22A023A124A225A326VCC14GND46A429A530A631A732A833A934VCC49DQ48GND41DQ510VCC27DQ611GND28DQ713GND12BS121BS020A1236GND54VCC43DQ842DQ944DQ1045DQ1147DQ1248DQ1350DQ1451DQ1553CKE37CLK38CS19RAS18CAS17UDQM39NC40U4MT48LC16M16A27E12R54K7VCC1DQ02GND6DQ14VCC3DQ25GND52DQ37VCC9LDQM15WE16A1135A10/AP22A023A124A225A326VCC14GND46A429A530A631A732A833A934VCC49DQ48GND41DQ510VCC27DQ611GND28DQ713GND12BS121BS020A1236GND54VCC43DQ842DQ944DQ1045DQ1147DQ1248DQ1350DQ1451DQ1553CKE37CLK38CS19RAS18CAS17UDQM39NC40U2MT48LC16M16A27ERAS_SDRSDWE_SDRCAS_SDRVCCVCCGNDGNDVCCA4M_8MA5A7A8BS1A6A2A3MA11A16MA9A10D031A4BS0A024D17D18D16D21D28D22D24D26D23D25D19D31D29D30D20D27D7D1D11D14D3D2D6D15D8D13D10D9D5D12D0D4A16MA4M_8M12345678RP5000X4BS0BS1INSTALLEDFOR8MX16X2BITSDRAMINSTALLEDFOR16MX16X2BITSDRAMA4M_8MINSTALLEDFOR4MX16X2BITSDRAMBS1BS0A1112345678RP3000X4A12BS0A4M_8MA13BS1图32MXL和SDRAM之间的信号连接我们通过图32中的RP3、RP4、RP5这三个排阻可以来选择使用不同容量大小的SDRAM,其中RP3对应16M字节,RP4对应32M字节,而RP5则对应64M字节。D031为MXL的数据总线,而A024为MXL的地址总线。通过两片16位的SDRAM共用一个片选信号CSD0,构成了32位的数据总线,和MXL的数据总线相连。33系统启动模块MXL支持多种启动模式,有BOOTSTRAP模式、16位/32位SYNCFLASH模式以及8位/16位/32位CS0模式。在BOOTSTRAP模式下,可以通过串口来下载BRECORD格式的映像文件,一般用于第一次下载系统映像。34数据存储模块NORFLASH读操作的速度比较快而且支持XIPEXECUTEINPLACE,但是擦除和写入的速度则比较慢,因此比较适合作为系统启动模块,用来存储系统映像。上海交通大学硕士研究生学位论文27MXL可以支持MMC卡,SD卡以及MEMORYSTICK等多种存储设备,而SD卡的性价比更高,可以支持最大4G的容量,使用也比较方便。SD卡是在MMC卡的基础上发展而来的,它比MMC卡多了两根信号线用作数据传输,其传输速率比MMC快很多,能支持1BIT和4BIT两种模式。35LCD模块对于嵌入式工控一体机而言,往往需要向用户提供信息显示和用户操作的图形界面,比如说实时曲线和历史曲线的显示,状态数据的显示等等。MXL内部集成了LCD控制器,能够支持单色、STN或者TFT的显示屏,最多能够支持16BPP64K色的TFTLCD,分辨率最高可以支持640X480。我们选用了64寸的16BPP640X480TFTLCD显示屏。36触摸屏模块仅仅有了LCD是不够的,我们还需要和嵌入式工控一体机进行一些交互,比如说输入某些参数,执行某种操作等等。对设备的操作可以通过触摸屏、键盘、鼠标等设备,我们这里重点使用触摸屏,选择了TI公司的TSC2301触摸屏控制器。该芯片性价比比较高,除了能支持4线触摸屏外,还能支持4X4的键盘接口,音频输入和输出,4路A/D和1路D/A,6路GPIO,以及电量检测等功能。37USBHOST模块目前,USB设备已经得到广泛的引用,USB鼠标、USB键盘、USB摄像头、USB无线网卡等外设变得越来越普通。通过USB接口可以扩展各种各样的功能,但是这些设备的使用都需要USBHOST接口,而MXL仅仅支持USBSLAVE接口,用于和PC或者其它USBHOST设备相连。因此,我们需要在MXL外部添加相应的USBHOST控制器,从而提供USBHOST接口,这里我们选择了SL811USBHOST控制器。上海交通大学硕士研究生学位论文2838以太网模块在工业控制现场,往往需要通过网络来传递数据和其它信息,从而实现多机协同操作与交互,以及远程数据库的访问等功能。我们通过把嵌入式工控一体机接入到相关的网络,可以获取同一网络中其它设备的信息和状态,还可以向这些设备发送相关的命令,以完成相应的设置和操作。我们选择了10MBPS以太网控制器CS8900,另外在以太网控制器和以太网接口之间还要添加相应的变压器,实现电压的隔离和转换。MXL和CS8900之间采用16位数据操作方式,使用CS4作为CS8900的选通信号,然后可以通过相应的数据端口和命令端口对CS8900实现相应的操作。39RS232模块由于串行通讯方式具有使用线路少、成本低的特点,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在进行串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来并进行通讯。RS232接口是目前最常用的一种串行通讯接口,它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端厂家共同制定的用于串行通讯的标准。MXL处理器内部集成了UART模块,可以支持两个UART口,由于其信号电平还只是TTL电平,因此在把这两个接口用作RS232接口时,还需要经过RS232电平转换芯片把信号电平转化为RS232电平。我们选用了MAXIM公司的MAX3232来实现电平的转换。上海交通大学硕士研究生学位论文294软件实现41BOOTLOADER的实现简单的说,BOOTLOADER就是在嵌入式操作系统内核运行之前运行的一段小程序,类似于PC机上的BIOS和LILO。通过这段小程序我们可以初始化硬件设备、建立内存映射,从而将系统的软硬件环境带到一个合适的状态,最后调用内核,同时向内核传递启动参数。大多数BOOTLOADER通常包括两种不同的操作模式启动加载模式和下载模式。从最终用户的角度看,BOOTLOADER的作用主要是用来加载操作系统,并不存在所谓的启动加载模式与下载模式的区别;而对于系统开发人员来说,使用的更多的还是下载模式。这两种模式的特点如下启动加载模式也称为自主模式,也就是BOOTLOADER从目标系统上的某个固态存储设备上将操作系统内核加载到RAM中运行,整个过程并没有用户的介入。这种模式是BOOTLOADER的正常工作模式,因此在嵌入式产品发布的时候,BOOTLOADER显然必须工作在这种模式下。在下载模式下,目标系统上的BOOTLOADER将通过串口连接、网络连接或者USB接口等通信手段从主机上下载文件,比如下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BOOTLOADER保存到目标系统的RAM中,然后再被BOOTLOADER写到目标系统上的FLASH等固态存储设备中。BOOTLOADER的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用这种工作模式。工作于这种模式下的BOOTLOADER通常都会向它的终端用户提供一个简单的命令行接口,我们可以通过超级终端或者TELNET程序来操作这个命令行接口。42LINUX内核的移植LINUX相比于其它嵌入式操作系统而言,最大的优势就是源码公开。LINUX内核源码以树的形式进行组织,其目录结构如下ARM体系结构相关上海交通大学硕士研究生学位论文30INCLUDE/ASMARM该目录下包含了针对ARM架构的通用头文件,其中有个软链接ARCH,它是在对内核进行配置的时候产生的,指向具体的ARM处理器对应的头文件目录,比如ARCHMX1ADS;ARCH/ARM该目录下包含了多个子目录,比如KERNEL、MM、BOOT、LIB和NWFPE等针对ARM架构的通用代码,以及针对不同ARM处理器的目录,比如MACHMX1ADS等;设备驱动DRIVERS这个目录下包含了针对不同设备、协议和接口的驱动程序源码,可以通过内核的配置选项来增加和删除对相关设备的支持,甚至还可以把驱动编译成可动态加载的模块形式,针对我们的目标系统的所有设备驱动都可以在相应的子目录中找到;体系结构无关INCLUDE包含了几乎所有的头文件;INIT在MAINC文件中包含了内核的MAIN函数入口,完成系统的初始化;IPCLINUX内核进程间通信的实现,包括信号量、消息队列和共享内存等机制;KERNEL实现资源分配以及进程调度和管理;MM包含LINUX内存管理的相关代码;FS每个子目录对应着一种特定的文件系统类型,比如对EXT2、JFFS2等文件系统的支持,还包含了对于虚拟文件系统VFS的支持;LIB通用的工具程序;NET包含了各种网络协议的协议栈实现;SCRIPTS用于系统配置的各种命令脚本文件。等等43设备驱动程序从整个系统的层次结构来看,设备驱动程序位于硬件设备和LINUX内核之间,起到了桥梁作用,为应用程序屏蔽了硬件细节。设备驱动是内核的一部分,主要完成以下功能对设备的初始化和释放;把数据从内核传到硬件和从硬件读上海交通大学硕士研究生学位论文31取数据;在用户空间和内核空间之间传递数据,实现内核和应用程序之间的交互;在总线和外设之间传递数据;检测和处理设备出现的错误。对于LINUX内核来说,设备主要分成字符设备、块设备和网络设备。字符设备和块设备以设备节点或者说设备文件的形式出现,通过文件描述符来读写数据,从而对于文件和设备可以使用一致的用户接口;而网络设备则没有相应的设备节点,而是分配一个独立的名字(比如ETH0),通过BSD套接口进行访问,并调用和数据包相关的函数。字符设备和块设备之间的本质区别是它们的访问方式不同,字符设备按字符流的方式顺序访问而块设备则可以随机访问固定大小的数据块。另外,在上述三种基本设备的基础上,LINUX对一些设备进行了更高层次的封装,提供了更高层次的接口,从而方便了相关驱动程序的开发。另外,我们要特别注意中断服务程序的编写。在任何操作系统中,中断服务程序都是一类特殊的函数实现,用来对相应的中断进行处理。在LINUX中,中断服务程序被称为上半部处理程序,用来完成硬件寄存器的设置以及对硬件设备做出应答等时间要求比较高的操作,而对于那些时间要求不是很高的数据处理等操作则可以放到后半部处理程序来完成。后半部处理程序可以用TASKLET机制或者任务队列(对于26X内核已经改进为工作队列)来实现,后半部处理程序的运行时间由内核根据系统运行状况来决定。以下几点我们在编写中断服务程序时需要注意中断服务程序不能用来传递参数,对于24X内核不应有返回值,对于26X内核则应使用IRQRETURN_T类型的返回值;在中断服务程序中,不能执行会引起休眠的函数和操作,不如不能使用信号量机制,但是可以使用自旋锁,因为自旋锁是原子操作,不会休眠;在中断服务程序中不能调用SCHEDULE进行进程调度;中断服务程序处于一个特殊的中断上下文环境,由内核运行,不同于系统调用的实现。驱动模块可以用动态加载的方式进行加载,但是有些驱动需要编译进内核,用来支持系统的启动,主要包括串口控制台、FLASH和LCD的驱动。串口控制台用来传递启动信息和调试信息,方便开发人员发现问题和解决问题,另外我们还可以在系统启动后通过串口控制台发送相应的LINUX命令,用于查看系统信息或者实现相应的功能。而把FLASH驱动编译进内核主要是为了把文件系统存放在FLASH上,而内核在启动过程中需要加载文件系统,为了让内核能够找到FLASH上海交通大学硕士研究生学位论文32上的文件系统映像,这就需要FLASH驱动的支持。LCD帧缓冲驱动,则是为了在启动过程中能在LCD上显示一些图片或者提示信息。这些驱动的具体实现我们在这里不作介绍。44文件系统文件系统在操作系统中扮演着非常重要的角色,用于管理文件和目录。在嵌入式LINUX中通过内核配置选项的选择,可以支持很多种文件系统类型,我们用的比较多的主要有以下几种CRAMFSCOMPRESSEDROMFILESYSTEM;JFFS2JOURNALINGFLASHFILESYSTEMSECONDEDITION);EXT2(扩展文件系统第二版);FAT。虽然有很多种文件系统格式可供选择,但是对于一个系统而言,文件系统的内容是一样的。在文件系统中主要包含了一些系统实用程序,系统库以及一些配置文件等等。对于嵌入式系统而言,由于存储设备的容量一般都比较小,因此在满足功能需求的前提下,我们要把文件系统做得尽量小

温馨提示

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

评论

0/150

提交评论