版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南大学硕士学位论文基于ARM9的手写体数字识别技术研究与实现申请学位级别:硕士专业:电子科学与技术20081110基f基fARM9的手写体数宁识别技术研究与实现摘 要‘近年来智能技术发展十分迅猛。产品功能越来越强大,出现功能捆绑及集成化的趋势。手写体识别作为一种最简单直接的人机交互手段,在智能设备中有重要作用。新兴的精简指令集ARM系列处理器,相比于传统的复杂指令集处理器,功耗更低计算能力更强大,近年来在嵌入式领域得到广泛的应用。本文围绕ARM9核心的硬件平台,研究在Linux上实现手写体数字的自动识别的方法。(1)通过分析手写体识别技术的发展状况,ARM核心系列芯片的应用情况,说明了在ARM平台上实现手写体数字识别功能的可行性。(2)以2410芯片为核心,阐述了系统的硬件组成及其特点,各个硬件模块的原理及功能。对ARM.Linux内核进行配置及编译,挂载了适用于NANDFLASH的YAFFS文件系统,对液晶及触摸屏进行了配置及调试,最后将Linux系统移植到ARM平台上。(3)结合当今图像识别技术的发展,阐述了模式识别问题中图像预处理的主要方法,分析了图像预处理过程中各个模块的数学原理,利用跨平台编程环境Qt编程实现了图像预处理功能。(4)通过分析经典BP网络的学习算法及其优缺点,针对传统BP算法的缺点进行了参数优化,减少了网络训练失败的几率及训练所使用的时间。利用Matlab强大的数据处理与快速编程能力,使用神经网络工具箱,编程实现BP网络,并使用处理好的图片数据对网络进行了训练。训练完成后,使用字符图片样本对神经网络进行了测试,并给出了测试结果,证明了训练结果的正确性。(5)利用Matlab的联合编程能力,配置好模块参数后,将训练好的神经网络模块导出生成C语言代码,并结合Qt及Linux的特点进行适应性修改。根据课题要求,在Qt环境中配置好触摸屏,使用程序抓取触摸屏动作生成图像文件,最后将神经网络模块嵌入到程序主体当中,下载到ARM平台上运行。本文的设计原理适合于更复杂的文字识别场合,具有借鉴意义。根据需求对网络进行优化,并加入更多分类器减少单个网络的规模,就能实现更为复杂的手写体识别功能。关键词:ARM;神经网络;手写体识别;Linux;Matlab;Qt硕}硕}:学位论史AbstractIntelligenttechnologyhadbeendeveloppingrapidlyinrecentyears.Theproductbecamemorepow爸rful,anditshowedatrendofcapabilityintegrati6n.AsthemostsimpleanddirectiVemethodofman-machineconversation,handw“tingrecognitiontechniqueplayedaninlportantroleinintelligentdevice.ComparedwithtraditionalCISCprocessor,thenewRISCprocessorARM,cancomputefasterwith10werpowerconsume,soitwaswidelyusedinembeddedapplicationsinrecentyears.ThispaperwouldgiVearesearchabouthowtoimplementthefunctionalityofhandw“tingnumbersrecognition,basedonARM9hardwareplatform.(1)ByanalyzingthedeVelopmentofhandwritingrecognitiontechniqueandtheapplications ofARM serialprocessor,thispaperprovedthe feasibilityofimplementingthehandwritingnumberrecognitionfunctionalityontheplatform.(2)WiththecoreofSamSungS3C24lOprocessor,thispaperexpatiatedonthestructureandspecialtyofthesystem’hardware,andthetheorVandfunctionsofhardwareblocks.BasedontheresearchoftheLinux’structure,thispaperconfiguredandbuilttheARM—Linuxcore,installedtheYAFFSfilesvstemwhichfittheNANDFLASHmanagement,configuredanddebuggedtheLCDandTouchScreen,andexplantedtheLinuxsystemtotheARMhardwareplatform.(3)Withdiscussionontheimprovementofimagerecognitiontechnique,thispaperexpatiatedthecommonusedmethodsofimagepre-processinginpatternrecognition,Analysedthealgorithmsusedintheblocksofimagepre.processing,andthenusedQt,whichwasaplatformspanningprogrammingtool,toimplementtheimagepretreatmentfhnctionality.(4)ByanalysingtheclassicalBPNeuralNetwork’trainingmethodandtheirstrongandweakpoints,thispaperusedtheimprovedtrainingarithmeticinviewofdisadVantagesoftraditionalBPNeuralNetwork,reducedthechanceoffailureintheNeuralNetwork’trainingandthetimecostatit.WiththepowerfuIdataprocessingandfastprogrammingcapabilityofMatlab,thispaperusedNeuralNetworkt001boxtoimplementtheBPNeuralNetworkblock,andthenusedtheimagedatanlesgeneratedfromthepretreatmentblocktotrainthenetwork.Aftertraining,thispaperusedcharacterimagesamplestotesttheNeuralNetwork,gavethetestresultandproVedthecorrectnessofthenetwork’sf.unction.(5)Withthebene疗tofMatlab’scombinedprogrammingcapability,thispaper基于ARM9基于ARM9的于写体数宁识别技术研究与实现conflguredtheblock’sparams,exportedthewelltrainedBPnetworktoablockofCcode,anddidsomeadaptiVemodincationaccordingtothefeaturesofQtandLinux.Accordingtotherequirementoftheissue,thispaperconfiguredtheTouchScreenintheQtenVironment,madeaprogramblocktoconverthumanactionsonTouchScreenintoimagefiles.‘Inthelast,thepaperimplantthenenralnetworkblockintothemainprogramblock,anddownloadedtheprogramtotheARM·Linuxplatform.Thetheoryandapproachfitmoreconlplexcharacterrecognitionapplications,sothatitcouldbeareference.ByimproVingthenetworkaccordingtotherequirement,addingmorenetworksandreducingthescaleofasinglenetwork,itcouldimplementthemorecomplexhandwritingrecognitionfIunctionality.KeyWords:ARM;NeuralNetwork;handwritingrecognition;Linux;Matlab;QtIV湖南大学学位论文原创性声明湖南大学学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体己经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名覆感 日期:砷年,月珈学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权湖南大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密口,在 年解密后适用本授权书。2、不保密囱。(请在以上相应方框内打“√”)作者签名:爱文 日期:矽7年,月硝日导师签名: 日期:么呷年夕月z∥日硕士学位论文第硕士学位论文第1章 绪论1.1选题的背景及意义1.选题背景传统的嵌入式应用以经典的INTEL51系列为代表,以一块8位或者16位单片机为核心,配以内存、IO口等设备组成一个小型定制系统,装入特定的程序以完成指定的功能。由于主处理器性能有限,只能进行有限的逻辑控制,主要应用于数据采集与传输、工业现场控制等场合。随着电子技术理论的发展以及制造技术的成熟,出现了以精简指令集为基础的高性能32位芯片。这些32位芯片普遍拥有大幅超越前辈的运算性能,能够运行复杂的程序提供真正的图形界面;集成常见的扩展功能,拥有SOC特性,从而减少扩展芯片的使用,简化电路设计。其中以ARM为核心的32位系列芯片最为成功。ARM公司设计的芯核结构合理,功耗低,在拥有不俗的性能的同时还有相对较低的成本,因此获得了包括lNTEL、三星、ATMEL在内的众多国际一流半导体厂商的大力支持,在32位嵌入式领域获得了巨大的成功。便携式电子消费品、智能设备是ARM系列32位处理器一个重要的应用场所。ARM微处理器的出现,加速了嵌入式产品从原来的军事、工控领域向民用、消费领域的渗透。以手机、MP3、MP4等产品为代表,便携式电子消费产品已经正式走入了普通人的生活。许多智能手机都以ARM9或更高端的ARM芯片为核心,装入Palm/OS、WCE等嵌入式操作系统,再配以特定的应用程序,从而实现精美的图形界面与其它各种智能功能。随着电子设备功能的强大,传统的按键操作方式显得越来越不能满足要求,触摸屏加手写输入的方式因为其符合人的自然习惯,简单直接,受到用户的欢迎,成为近年来的技术热点,越来越受到重视。今天的ARM系列芯片功能强大,价格相对低廉,在以ARM9为核心的系统平台上实现手写体识别技术已经成为可能。2.课题意义本课题来自于三一重工股份有限公司的工程机械触摸屏系统预研项目,手写体文字识别技术作为一个重要的功能模块需要以合理的性价比加以实现。在不同的平台,不同的算法下,手写体字符识别的效果有很大区别。虽然国内的字符识别技术近年来发展迅速,但大多是基于PC.Windows平台,Linux下开源的手写体识别软件成熟的不多,开源的更少。本文以ARM9芯片为硬件核心,开源的Linux为软件核心,在此系统基础上研究实现手写体数字识别功能的可能途径。同时本文探索了一条使用Matlab与其他工具联合编程,快速实现神经网络的技术路线,基于ARM9基于ARM9的于.写体数宁识别技术研究与实现在进行复杂算法的应用开发时有重要的借鉴意义。1.2AI蝴与手写体识别技术的应用与发展1.ARM系列芯片的应用ARM系列处理器是指购买了ARM公司的授权,遵守其标准设计生产的RISC处理器。ARM公司是一家IP供应商,本身并不生产芯片,其核心业务是IP核以及相关工具的开发和设计。各个芯片设计制造商购买其IP核授权后,进行2次设计开发流片,从而生产出满足市场需要的各种各样的ARM芯片。ARM芯片的研究还在继续并不断取得突破,自其问世以来,结构已经从V3发展到V6。目前非常流行的ARM芯核有ARM7TDMI、StrongARM、ARM720T、ARM9TDMI、ARM922T、ARM940T、ARM946T、ARM966T、ARM1OTDMI等。ARM7系列芯片在性能与成本之间找到了很好的平衡点,凭借其卓越的性价比迅速占领了市场,得到了广泛的应用。ARM9系列以后的芯片性能显著提高,已经能够运行嵌入式操作系统,能进行游戏娱乐、视频解码播放等计算负荷较高的应用。最新的ARMll内核囊括了Thumb.2、CoreSi曲t、Truszone等众多业界领先技术,同时ARM公司开始提供PiccoloDSP的芯核给芯片设计者,用于设计带DSP核心的SOC(SystemOnChip)结构芯片,ARM芯片的功能得到进一步增强并延伸到传统的强调速度与效率的DSP领域【11。由于ARM芯片的成功应用,众多软件厂商也推出了基于ARM系统的产品,包括WindowsCE、Linux、VxWorks等操作系统,以及各种移植版的应用软件如视频解码器等等。众多的消费电子产品制造商大力开展ARM核心系统的研究与开发,推出了基于ARM的性价比优越的智能产品,受到市场的欢迎。目前可以提供ARM芯片的著名半导体公司有:英特尔、飞利浦、德洲仪器、三星、摩托罗拉、ADI公司、安捷伦、Atmel、IntersiI、Alcatel、Alteral、台积电、台联电等等;提供ARM体系软件产品的有:微软、风河等;提供基于ARM的成套产品的有:三星、SONY、NOKIA、国内众多手机厂商等。可以说用如火如荼来形容ARM市场不为过。2.模式识别技术的发展模式识别(PatternRecognition)是指对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分【521。在人类的正常生活中,模式识别的活动是经常发生的,如人类看到一辆汽车的影像便会将之识别为一种交通工具,所以模式识别是人类的一项基本智能。随着计算机技术的出现与发展以及随后而来的对人工智能的研究热潮的出现,人们希望能利用计算机的快速运算能力来代替或扩展人类的部分脑力劳动,模式识别就是应用计算机对一组事件或过程进行鉴别和分类的技术。它所识别的事件或过程可以是文字、声音、2硕L硕L学位论文图像等具体对象,也可以是状态、程度等抽象对象。这些对象与数字形式的信息相区别,称为模式信息。模式识别尝试模拟人脑的“对象识别”能力,因此可以看作是人工智能的一个分支方向。和其它人工智能技术类似,模式识别一般借助计算机完成。计算机模式识别在20世纪60年代初迅速发展并成为一门新学科。模式识别技术的发展有着巨大的现实意义,目前在文字和语音识别、遥感和医学诊断等方面都有广泛的应用,其技术的进步能改变人类社会的活动方式节省人类的劳动力。例如文字识别技术能够自动将各种文字影像转换成电子文档保存管理而不再需要人类手工输入信息,从而大大节约了人力;语音识别技术使得语音身份鉴别成为可能,在安保、监控方面大有作为。模式识别技术的难点在于其识别的准确度的提高,以及对人脑识别过程的模拟。由于准确的对人脑的识别逻辑进行建模在目前的条件下难以完成,因此模式识别技术广泛借助其他学科门类的知识,以逼近理想的正确辨别逻辑。一般来说,模式识别与统计学、心理学、语言学、计算机科学、生物学、控制论、图像处理学等都有关系且互相交叉影响,要实现一个识别过程其具体知识往往来自于与应用目标有关的学科。例如字符模式识别中的预处理和特征抽取环节需要图像处理的技术,识别的字符类型不同又会导致识别算法的不同适应性;图像处理中的图像分析部分需要模式识别技术鉴别源图像的类型。今天的模式识别技术由于其巨大的现实意义及众多待解决问题的存在,仍然是一个发展迅速研究活跃的学科门类。3.手写体识别技术的发展手写体识别问题是模式识别问题中的一个经典问题,属于光学字符识别技术(既OCR技术),是与人们生活密切相关的问题。国外对字符识别的研究开始较早。我国自70年代开始对数字、英文字母及符号的识别进行研究,经过十多年的研究与努力,汉字识别技术的发展和应用已经有了长足进步:从简单的单体识别发展到多种字体混排的多体识别,从中文印刷材料的识别发展到中英混排印刷材料的双语识别。各个系统可以支持简、繁体汉字的识别,解决了多体多字号混排文本的识别问题,对于简单的版面可以进行有效的定量分析。目前,联机手写汉字识别技术已经相当成熟,市场上已经出现了多项具有代表性的产品。脱机印刷体识别也有成熟产品出现,识别率也基本能够达到实用的要求。脱机手写汉字识别的研究也取得了很大的进展,小字符集单字识别技术相对更为成熟【2引,文字识别理论与技术继续不断向前发展。1.3本文的主要研究内容本文是在承担三一重工股份有限公司的“工程机械触摸屏系统开发"项目研发工作中完成的,既是对过去的一年中承担的科研任务的成果梳理,同时也是对3基于ARM9基于ARM9的于写休数字识别技术研究’j实现研究过程的经验总结。第1章绪论。通过分析手写体识别技术的发展状况,ARM核心系列芯片的发展与应用,说明了在ARM平台上实现手写体识别功能的可行性,指出了课题的研究意义。第2章手写体数字识别系统的硬件基础及底层软件开发。以三星S3C2410芯片为核心,阐述了系统的硬件组成及其特点,给出主要硬件模块的原理及设计与实现。对Linux内核结构进行了研究,根据系统功能要求对ARM.Linux内核进行配置及编译,并挂载了YAFFS文件系统、触摸屏驱动,最后将Linux系统移植到ARM平台上。第3章手写体数字识别系统图像预处理的研究与实现。在详细阐述实现手写体数字识别功能的主要工作步骤,图像预处理的目的及主要处理流程的基础上,使用当前Linux平台上流行的跨平台图形编程环境Qt,设计并编程实现了图像的二值化、平滑去噪、细化、裁切拉伸等功能,并对不同算法的处理效果做出比较与选择。连接各个模块后,将样本图片批量转换并存储为文件供其他模块使用。第4章手写体数字识别算法的研究与实现。对当前字符识别的主要算法进行了分析比较,详细阐述了神经网络的数学原型及其用于文字识别的原理,经典BP网络的学习算法及其优缺点。使用Matlab编程实现了BP网络及对图像预处理模块所生成数据的读取功能。通过实验比较,选择了较好的学习算法及合理的网络参数,对BP网络进行训练达到了收敛的目的,最后对训练好的BP网络进行样本测试并给出结果。第5章Matlab与Qt联合编程实现手写体数字识别。利用Matlab的关键组件Simulink中的Real.timeWorkShop,将经过测试的神经网络改造并转换成C/C++代码。在对生成的代码进行分析的基础上,对其改写并嵌入Qt主程序重新编译成一个完整程序,并进行了测试给出了对比结果。随后将主程序移植到ARM.Linux平台上,将程序的输入切换为触摸屏动作模块。在Qt中将触摸屏映射成鼠标,并编程将其动作抓取成数字图像,连接主程序实现ARM.Linux上的有限字符识别。最后,对本文研究工作进行总结与展望。4硕卜学位论文第硕卜学位论文第2章手写体数字识别系统的硬件基础及底层软件开发2.1开发平台整体结构设备终端是一个嵌入式系统,它是一个运行操作系统及应用程序的软硬件综合体。本文所设计的系统需要液晶屏显示系统的反馈,触摸屏接收用户的操作,三星S3C24lO处理器处理中断操作及程序逻辑,FLASH存储程序参数及历史记录,JTAG及串口、网口方便与PC联机进行程序调试及测试。操作系统能够屏蔽底层硬件结构差异,减小开发难度,为设备各个功能模块的管理提供方便。系统的组成框图见图2.1。l应用程序 PC王IARM版Qt库工 l嵌入式Li肌x操作系统 JTAG/USB/以太网3 工I samsungs3c2410硬件系统图2—1开发平台整体框架整个系统以三星2410ARM9芯片为核心。嵌入式Linux操作系统安装在硬件平台上,用来屏蔽硬件物理结构上的差异,方便软件代码的编写及模块之间的复用。相比没有安装操作系统的“裸露"硬件系统,其一大优势就是可以利用此平台上已经做好了的函数库及功能模块,并且将大量琐碎的硬件细节操作交给操作系统来完成,从而大大减少重复性的工作,让开发者有更多的精力放在具体的应用设计上,加快开发的速度。2.2手写体数字识别系统的硬件基础2.2.1硬件系统的整体结构本文的开发主要基于三星公司的S3C2410硬件平台,硬件上主要包括主CPU、存储器单元、FLASH存储器、LCD接口、触摸屏接口、外接按键、USB接口和网卡接口等,预留了GPRS远程通讯接口。硬件系统框图见图2.2。基于ARM9基于ARM9的手写体数字识别技术研究与实现图2—2硬件系统组成框架CPU单元::S3C2410ARM920T内核存储器单元::64MBSDRAM复位电路:包括上电复位和手动复位电路,保证系统的可靠复位电源模块:主要使用开关电源进行变压及隔离时钟电路:使用外部晶振引入12MHz脉冲信号,经PLL倍频后供CPU使用实时时钟:使用外部的实时时钟芯片提供校时,同时附带EEPROMLCD:使用5.4寸显示屏作为显示窗口触摸屏:使用较为成熟的四线电阻式触摸屏键盘:带有6个开关式按键USB及网卡接口:支持1.0格式的USB接口及10M以太网硬件系统主要以S3C2410芯片为核心,配备64MB的大容量内存以满足运行操作系统及图形处理程序的需要。电阻式触摸屏取代了pc上鼠标的位置,在系统中被映射成鼠标方便应用程序的使用。另外系统提供少量的物理按键以方便程序调试及充当迷你键盘。2.2.2S3C2410芯片特点S3C24l0是由三星半导体公司为手持移动设备类应用设计的一款低功耗、高集成度的ARM9系列芯片,它含一个ARM920T内核。ARM920T实现了MMU、AMBABUS和Harvard高速缓冲体系结构,具有独立的16KB指令Cache和16KB数据Cache。S3C2410采用272脚FBGA封装,集成提供了一系列传统的外围设备功能,有力的减少了整个系统的成本。此CPU集成的片上功能有一引:(1)1.8V/2.0V内部供电、3.3v存储器、外部I/O供电。具有16KB一体化的Cache/MMII6硕{硕{:学位论文(2)具有外部存储器控制器(SDRAM和片选控制逻辑)(3) LCD控制器(支持4K色的STN屏和256K色的TFT型液晶屏,具有1路LCD专用DMA)(4) 4路DMA,具备外部请求脚(5)3路UAI汀,拥有16字节的发送FIFO,16字节的接收FIFO高速缓存,2通道SPI(6) l路多主模式的IIC总线(7) 兼容V1.0的SD主接口协议和V2.1l的MMC卡协议(8)2路全速USB主设备,其中l路可以作为USB从设备(V1.1协议)(9) 4路PwM定时器和一路内部定时器(10)具有看门狗定时器(11) 共提供117个通用I/O口,24路外部中断(12) 电源控制有正常模式,SLOW模式,空闲模式和掉电模式(13) 8路lO位ADC,其中2路可以作为触摸屏接口(14) 具有日历功能的I汀C时钟(15) 片内倍频锁相环PLLS3C241O集成了一个具有日历功能的I盯C,还集成了具有PLL(MPLL和UPLL)功能的芯片时钟发生器。MPLL产生主时钟,能够支持处理器工作频率最高达到203MHZ,通过更改设置可以改变芯片的工作频率以适应不同的工作要求。UPLL产生实现主从USB功能的时钟,方便uSB接口的实现。可以看出,S3C2410的片上集成功能十分丰富,合理的利用S3C2410丰富的硬件资源,可以轻松地进行各种嵌入式的设计开发。s3C2410将存储空间划分为8组,每组大小是128M,共计lGB。系统复位后内存分配情况见图2.3,Bank0到Bank6的开始地址是固定的,Bank7的开始地址是Bank6的结束地址,灵活可变,并且Bank7的大小与Bank6的大小必须相等。除Bank0外,其余各存储器的总线宽度可编程设置为8位、16位或32位,但是Bank0只能设置为16位或者32位。Bank0作为引导ROM,地址映射到Ox0000,总线宽度在复位时就确定了。所有的寄存器组均可用于ROM或者SRAM,Bank6和Bank7还可以用于SDRAM。所有内存块的访问周期都可编程。S3C2410同时支持大、小端模式。S3C2410外部共有272个引脚,主要包括总线控制信号、各类元器件接口信号,以及电源:时钟控制信号。本文所使用的芯片运行在标准的203MHz,此频率下系统的运算能力已经十分强大,可以良好的运行Linux/WCE操作系统。普通的平面图形处理能在肉眼察觉不到的时间内完成,为实现抓取触摸屏动作,实时判定文字类别打下了硬件基础。7綦于ARM9綦于ARM9的手写休数宁识别技术研究与实现0M[1:O]=00Ox6000-0000Ox4800-0000Ox4000一00000x400000000x3800一0000Ox3000_00000xlooO_0000Ox0800—0000Ox0000_0000图2—3系统复位后的内存映射关系2.2.3液晶及触摸屏的硬件基础2.2.3.1.液晶显示屏电路液晶显示器是常见的图形输出设备之一,能向用户提供友好的图形界面。LCD显示器通常与帧缓存(FrameBuf.fer)设备结合使用,系统定时将帧缓存中的内容输出到LCD显示器以刷新屏幕。S3C241O内部集成了LCD控制器,支持STN和TFT类型的液晶显示器。LCD控制器可根据水平和垂直像素、数据线宽度和刷新率编程支持各种需求的屏幕。本文选用320x240像素的5.4寸TFT液晶屏。S3C2410的LCD控制器用来传送在帧缓存中的视频数据和产生必要的控制信号。该控制器由REGBANK(控制寄存器组)、LCDCDMA(专用DMA)、vIDPCS(视频信号处理单元)、LPC3600和TIMEGEN(时序信号产生单元)组成。其中,REGBANK包含17个可编程寄存器和几个256×16的调色板存储器,用来配置LCD控制器并设置相应的参数;LCDCDMA提供了视频信号的快速传输通道,自动通过系统总线从系统帧缓存中取出图形数据,并传输到视频信号处理单元;VIDPCS将专用DMA中取出的信号进行整形及提高驱动能力处理后,输出8硕七学位论文到外部数据端口硕七学位论文到外部数据端口VD【23:O】;TIMEGEN和LPC3600产生LCD屏所需要的控制时序。视频数据通过LCD数据总线传送,采用DMA方式。控制信号包括:垂直同步信号VSYNC、水平同步信号HsYNC、线结束信号LEND、像素时钟信号VCLK和数据使能信号VDEN等。S3C2410支持TFT/STN型的LCD及触摸屏,但不能直接与它们相连,需要接口板驱动LCD。接口板通过50脚的插座作为LCD与触摸屏接口。LCD接口电路原理图见图2—4。图2—4LCD接口电路图2.2.3.2触摸屏硬件原理触摸屏作为一种特殊的计算机外设,提供了目前最简单、方便、自然的一种人机交互手段。它赋予了电子设备崭新的面貌,是极富吸引力的全新多媒体交互设备,具有坚固耐用、反应速度快、节省空间、易于交互等许多优点。利用这种技术,用户只要用手指轻轻地触碰计算机显示屏上的图形或文字就能实现对主机的操作,从而使人机交互直截了当,极大方便了那些不懂电脑操作的用户。触摸屏的基本工作原理是:当手指或其他物体接触安装在显示器前端的触摸屏时,所接触的位置由触摸屏控制器以坐标形式检测到,通过接口(如RS.232串口)送到CPU,从而确定输入的信息。电阻式触摸屏屏体部分是一块与显示器表面相匹配的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面经硬化处理、光滑防刮的塑料层,它的内表面也涂有一层透明导电层。导电层一般为两层OTI(氧化铟)透明氧化金属,最外面的一层OTI涂层作为导电体,第二层OTI则经过精密的网络附上横竖两个方向的+5V至0V的电压场,两层OTI9基于ARM9基于ARM9的于写体数宁识别技术研究与实现之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。当手指接触屏幕时,两层OTI导电层就会出现一个接触点,电脑同时检测电压及电流,计算出触摸的位置,反应速度为一般为10—20ms。手指触摸屏幕,平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零。这种接通状态被控制器侦测到后,进行A/D转换,将得到的电压值与5V相比较转换得到触摸点的Y轴坐标。同理可以得出X轴的坐标。以上就是所有电阻技术触摸屏共同的基本原理【91。电阻类触摸屏的关键在于材料的使用。电阻屏根据引出线数的多少,分为四线、五线、六线等多种触摸屏。电阻触摸屏对外界来说是一个完全隔离的工作环境,因此不怕灰尘和水汽。它可以用任何物体触摸,比较适合工业控制领域及办公室内有限人群的使用。电阻触摸屏的缺点主要是因为复合薄膜的外层一般采用塑胶材料,使用者太用力或使用锐器直击可能划伤整个触摸屏而导致报废。如果损伤在限度之内,划伤只会伤及外导电层。外导电层的划伤对于五线电阻触摸屏来说影响不大,但对四线电阻触摸屏来说是致命的。出于成本考虑,本文使用较常见的4线电阻式触摸屏。2.2.4JTAG接口JTAG(JointTestActionGrouP,联合测试行动组)是一种国际标准测试协议(兼容IEEEll49.1),主要用于芯片内部测试,方便调试。现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口有4线:TMs、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。JTAG最初被设计用来对芯片进行测试,其基本原理是在器件内部定义一个TAP(TestAccessPort测试访问口),通过专用的JTAG测试工具访问内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,方便的实现对各个器件的分别测试。现在,JTAG接口还常用于实现ISP(In.systemProgrammable)在线编程,如对FLASH等器件进行编程。ARM9核心系统的JTAG接口引脚的定义见表2.1。表2—1JTAG接口引脚定义信号功能nTRST 测试复位输入信号TDI JTAG指令和数据寄存器的串行数据输入端TMS 输入方式选择TCK 测试时钟TDo JTAG指令和数据寄存器串行数据输出端nRESET 目标系统复位信号2.3手写体数字识别系统的软件基础10硕.J硕.J二学位论文2.3.1操作系统的分类及比较2.3.1.1操作系统的主要分类及作用随着电子工业的不断发展,嵌入式系统的性能变得越来越强大,在嵌入式系统中使用带有完整的系统资源管理功能的操作系统成为可能。操作系统的引入,使得各种硬件资源的管理被系统自动完成,硬件平台之间的差异在一定程度上被屏蔽,应用程序的开发变得更加简单。据调查,目前国际上共有200多种嵌入式操作系统。从时间尺度来说,嵌入式操作系统大体可以分为实时操作系统和非实时操作系统;根据工作特性又可以分为多任务和单任务操作系统【2们。实时是指操作系统在时间上的响应速度以及物理进程的真实时间。实时操作系统在时间特性上有非常高的要求,一般来说,实时操作系统如果没有在某个预定的时间内响应某个事件,系统就会出错。非实时操作系统一般不能严格保证事件响应速度,如PC上的Windows平台。这类操作系统下的应用程序,不同系统资源条件下运行速度可能有较大差别,事件的响应速度也难以估计,如键盘响应,可能从几毫秒到几秒不等。在一些对时间有严格要求的系统中,如高速通信交换、军工、航天等领域,毫秒级别的误差都是不可接受的,在这种情况下就必须使用实时操作系统。多任务是指操作系统上同一时间内能否运行多个用户程序。传统的嵌入式系统为了在有限的硬件资源条件下满足对性能的要求,一般都是单任务模式。随着嵌入式系统硬件性能的提高及软件复杂度要求的提升,大多数嵌入式操作系统向多任务模式发展【8】。一般来说,嵌入式操作系统都是软实时操作系统。2.3.1.2主流的嵌入式操作系统的比较uC/OS是一个比较经典的实时操作系统。它的特点是源代码公开、可移植性好、可裁减、可固化、抢占式内核。精简小巧是其一大特点,对系统性能没有过高的要求,以ARM7系列芯片为核心的系统就能较好的运行。uC/OS的内核采用优先级调度策略,在运行就绪条件下总是运行优先级最高的任务。如果任务之间由于共享资源出现了竞争或者死锁,使用系统提供的信号量保护机制可能会发生优先级反转的情况,因此使用uC/OS开发程序时需要开发者对所开发的系统有清楚的了解。PalmOS是一种用于掌上电脑的32位操作系统,它运行在一个抢占式的多任务内核之上。它的特点是用户界面层同一时刻仅允许一个应用程序打开,进入某个程序必须退出原来的程序,.结构简单,保证了系统的高效和稳定。PalmOS专注于移动设备应用,它可以高效的使用内存和电池能量,便于硬件设计者设计小巧轻便的移动产品。PalmOS软件开发联盟提供了数万种应用程序,包括兼容W6rd、Excel的文档处理工具、浏览器、邮件系统、游戏等等,方便了用户使用。VxWorks是专门为实时嵌入式系统设计开发的实时操作系统,由美国风河慕于ARM9慕于ARM9的于写体数字识别技术研究与实现(WindRiver)公司开发,其具有以下特点:微内核、任务间通信、支持网络、支持文件系统及I/O管理、POSIx标准扩展、C++以及其他标准支持等等。这些核心功能可以与系统的其他附件及其合作伙伴Tornado的产品结合在一起使用,为程序员提供高效的实时任务调度、中断管理、任务间通讯功能,构成强大且友好的开发环境。系统资源被操作系统自动管理,释放了程序员的精力,应用程序开发者可以将更多的精力放在功能及应用层上。另外Vxwbrks内核非常高效,系统可靠性高、实时性能非常出色,因此在卫星通讯、军工控制、航空宇航等高端领域被广泛采用,其操作系统以及以此为基础的嵌入式开发平台在嵌入式软件开发领域处于领导地位。VxW6rks最大的问题就是价格比较高昂,使得产品的成本直线上升。近年来风河公司开始和Linux开发者合作,把自己的传统优势用于支持嵌入式Linux平台下的软件开发。Linux是一种计算机操作系统,其内核的名字也叫“Linux”。Linux操作系统是自由和开放源代码软件中最著名的例子。在开始的时候,Linux只是个人狂热爱好的一种产物,Linux内核最初是为英特尔386微处理器设计的,但是现在Linux内核支持从个人电脑到大型主机甚至包括嵌入式系统在内的各种硬件设备,已经成为了一种受到广泛关注和支持的操作系统,包括IBM和惠普在内的一些计算机业巨头也开始支持Linux。严格来讲,Linux这个词本身只表示Linux内核,但是实际上人们已经习惯了用Linux来形容整个基于Linux内核,以及使用GNU工程各种工具和数据库的操作系统(也被称为GNU/Linux)。基于这些组件的Linux软件套件被称为Linux发行版。一般来讲,一个Linux发行套件包含大量的软件,比如软件开发工具、数据库、w曲服务器(例如Apache)、XWindow、桌面环境(比如GNOME和KDE)、办公套件(比如OpenOmce.org)等等。和其他的商用Unix系统以及微软的Windows系统相比,作为自由软件的Linux具有成本低、安全性高、更加可信赖的优势。2.3.1.3Linux内核结构通常一个Linux内核主要由进程调度、内存管理、进程通信、网络接口、虚拟文件系统组成。进程调度(SCHED)模块主要控制进程对CPU的访问。所有条件都满足只等待CPU资源的进程称为可运行进程。当有几个等待获得CPU资源的进程需要运行时,Linux使用比较简单的基于优先级的调度算法选择新的进程。内存管理(MM)模块统一管理系统的所有硬件内存,负责内存的分配、.回收以及各个进程间的主内存共享。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码、数据、堆栈的总量可以超过实际内存的大小,操作系统自动把程序当前需要使用的模块放到内存中,其他部分放在磁盘里,由操作系统自动完成内存与磁盘的数据交换。这样程序可以申请比实际还要多的内存。内存12硕.J硕.J:学位论文管理模块从逻辑上分为硬件无关模块和硬件相关模块。硬件无关模块提供了进程的映射和逻辑内存的对换;硬件相关模块则为内存管理提供虚拟的接口,进行实际的物理操作。进程间通信(IPC)对进程间的各种通信机制提供支持。网络接口(NET)提供对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通信,根据具体硬件的不同而变化。虚拟文件系统(VFS)为所有的设备提供统一的接口,隐藏各种硬件的具体细节。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统主要是Linux所支持的文件系统如ext2、fat等,VFS支持数10种不同的文件系统:设备驱动程序是为每一种硬件控制器所编写的具体设备驱动程序并虚拟为文件概念。对于处于中心位置的进程,所有其他子系统都依赖于它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例如,当一个进程通过网络发送一条消息时,网络接口被挂起,并发送进程消息,直到硬件成功地完成消息的发送。当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或者失败,网络接口恢复。其他子系统也有类似过程。2.3.1.4最小化的Linux核心组成Linux最大的特点是遵守GPL声明,可以自由传播与修改。Linux操作系统的微内核与模块化结构提供给用户很强的可裁减性。可以把Linux操作系统看成一棵树,存储器管理、任务调度、定时器服务构成了树的主干,其它的驱动程序、用户接口程序及应用程序便是叶子,使得Linux枝繁叶茂具有各种丰富的功能【20J。最小的嵌入式Linux操作系统仅需要以下关键模块:(1)系统上电引导程序(2)Linux微内核,包括内存管理、任务调度、定时器服务等,Linux的关键算法都在于此(3)系统初始化程序在此基础上添加以下模块可以构成一个最小系统的应用:(4)相关硬件驱动程序(5).一个基本的应用程序 通常使用的Linux操作系统是在最小化的模块之上,添加各种驱动程序、文件系统、网络协议、用户接口等各种模块完成的。一个好的系统必须要有一个经过测试的适合硬件的健壮的核心。因此下面本文将进行Linux的最小内核的配置与移植,并进行测试。然后逐个加入文件系统、13基于ARM9基于ARM9的手写体数字识别技术研究与实现触摸屏驱动等周边设备的支持,为最终的程序运行搭建好环境。2.3.2搭建系统移植编程环境一般的Linux程序开发都是以本地的方式进行开发与调试,程序的运行场地就是开发所用的计算机。这种方式不适合嵌入式系统的开发,因为嵌入式系统本身资源有限,不能运行开发与调试工具,没有自主开发能力。所以嵌入式Linux程序开发一般采用交叉编译的方式,在宿主机上(通常是PC)开发并编译程序,将结果下载到目标板上运行。开发与运行的环境不同,需要交叉编译是嵌入式系统开发的主要特点之一。由于宿主机与目标机的CPU一般不相同,宿主机一般为Intelx86体系,而目标机为ARM体系结构,所以在宿主机开发编译程序时需要使用交叉编译工具包。开发时使用宿主机上的交叉编译、汇编及链接工具将应用程序转换生成与硬件CPU特征有关的只能在目标机上执行的二进制代码,然后将此可执行文件下载到目标机上运行,开发时以上步骤交替结合进行。本文使用Windows下的超级终端,通过串口与目标机相连接,同时启用以太网口连接方便调试。编译器选择Linux下的自由软件GNUGCC,它是Qt程序推荐的编译工具,可以完成几乎所有知名CPU的交叉编译及调试。GCC的全称是GNUCompilerCollection,支持对C、C++、objective.C、JA、,AFortran和Ada程序的编译。GNU交叉编译工具包主要包括以下几个部分:(1)目标系统的二进制工具binutils,其中包括汇编器as、链接器ld等(2)目标系统的C编译器GCC和C++编译器G++(3)目标系统的标准c库glibc(4)目标系统的Linux内核头文件有两种方式可以建立交叉编译环境:一种是从网上下载工具链的各个组件如binutils、GCC、G++、glibc、Linux内核等的源代码,重新编译生成最终程序;另外可以直接从网上下载已经编译好的针对ARM与Linux平台的工具。为简化起见,本文直接下载编译好了的3.32版的GCC, 将相关文件arm.1inux.gcc.3.32.tar.bz2安装到目录/user/local/arm/3.32/bin下,然后修改并增加环境变量,添加目录设置Pathmunge/user/local/arm/3.32/bin。这样在以后编译程序或内核时会自动使用已经安装好的工具链进行编译。2.3.3移植最小化的Linux内核2.3.3.1BootLoader的作用 在上电及复位后,ARM系统从地址Ox00000000处开始执行。本文将NORFLASH映射到这个地址,而在这个地址处安排的就是系统的引导装载程序BootLoader。BootLoader是系统加电后在操作系统内核运行之前执行的一段代码。这段代码将初始化硬件设备,建立内存空间的映射图,将内核映像文件和文件系14硕上学位论文统从硕上学位论文统从FLASH复制到RAM中,将系统的软硬件环境调整到一个合适的状态,然后跳转到操作系统内核的入口点执行,开始启动操作系统。BootLoader包含两种不同的操作模式:启动加载模式和下载模式【47】。启动加载模式是系统正常启动时的默认模式,此模式下BootLoader从目标机器的FLASH上将操作系统加载到RAM中运行,整个过程用户不进行干预。下载模式下,BootLoader加入了Xmodem与tftp等通信协议模块,从而目标机可以通过串口连接或网络连接等通信手段从宿主机下载内核映像、根文件系统映像、应用程序等等,能够为终端用户提供一个基于命令行的操作接口。BootLoader是严重依赖于硬件而实现的,一般将B00tLoader分为stagel和stage2两大部分。与CPU体系结构有关的代码通常放在第一部分中,一般使用汇编语言完成,以保证代码的简洁与高效。第二部分使用C语言编写,保证代码的可读性与易移植性,以实现更加复杂的功能。2.3.3.2B00tLoader第一阶段工作stagel是B00tLoader一开始就执行的操作,其目的是为stage2的执行以及随后的内核的执行,设置好一些基本的硬件环境。主要包括以下步骤:(1)屏蔽所有的中断。为中断提供服务的通常是操作系统,因此在执行Bootloader的过程中可以不响应任何中断。屏蔽中断通过写CPU的中断屏蔽寄存器来完成。(2)设置CPU的时钟频率和速度。(3)初始化RAM,设置系统的内存控制器的功能寄存器和各内存库控制寄存器等。(4)为加载stage2准备RAM空间。(5)拷贝stage2至0RAM中。(6)跳转到stage2的入口点。2.3.3.3BootLoader第二阶段工作stage2的主要的功能是通过串口下载Linux内核到目标板上,主要包括以下几个步骤:(1)初始化本阶段要使用到的硬件设备。这通常包括:初始化至少一个串口,以便和终端用户进行信息交互,初始化计时器。(2)检测系统的内存映射。所谓内存映射就是指在整个物理地址空间中有哪些地址范围被分配到寻址系统的RAM单元.。 (3)加载内核映像和根文件系统,将其从FLASH读入到RAM中。这里包括两个方面:内核映像所占用的内存范围;根文件系统所占用的内存范围。在规划内存占用的布局时,主要考虑基地址和映像的大小两个方面。(4)设置内核的启动参数。15基于ARM9基于ARM9的手写体数字识别技术研究与实现(5)调用内核。Bootloader调用Linux内核的方法是直接跳转到内核的第一条指令处。将内核映像解压拷贝到指定位置,然后设置好Linux内核启动的参数后,就可以启动Linux内核了。2.3.3.4根据硬件配置Linux最小系统并移植上板内核是操作系统的核心程序,主要提供进程管理、内存管理、设备驱动、文件系统、网络管理等核心功能。Linux系统采用的是单一内核结构,操作系统中所有的系统相关功能都被封装在内核中,他们与外部程序处于不同的内存地址空间中,程序只有通过系统调用(systemcall)来访问内存结构。Linux支持模块的动态装入和卸载,不必全部静态的编译进内核中。本文采用的Linux内核版本号为2.4.2。根据前文所述,配置好BootLoader及内存映射关系后,编译Linux模块下载后运行即可。2.3.4挂载文件系统2.3.4.1Linux文件系统特点及加载方式Linux的重要特征之一就是支持多种文件系统。这样它更加灵活并可以和其它操作系统共存。Linux已经支持十多种文件系统,包括ext、ext2、minix、umsdos、msdos、Vfat、proc、smb、ncp、is09660、sysV、hpfb、jf.fS、carmfs、nfs、yaf.fs等。毫无疑问,Linux所支持的操作系统今后还会增加。Linux并不使用设备标识符(如设备号或驱动器名称)来访问独立文件系统,而是将整个文件系统表示成单一实体的层次树结构进行访问。Linux每安装一个文件系统时,都会将其加入到文件系统层次树中。每次安装时,文件系统将被连接到一个被称为安装目录或安装点的目录上,文件系统中的内容将会取代此目录中原来的内容。当文件系统被卸载时,安装目录中原有的文件将再次出现。当磁盘初始化时,磁盘中将添加一个描述磁盘物理逻辑构成的分区结构。包含文件系统的设备称为块设备,文件系统将数据组织成目录、软连接等存在于物理块设备中的逻辑层次结构。Linux系统将块设备看成简单的线性组合关系,并不关心磁盘设备真正的底层物理结构与逻辑。块设备驱动程序负责将Linux发来的块操作转换为实际的物理磁盘操作,为Linux文件操作提供服务。块设备驱动中将保存磁盘的磁道、扇区、柱面数、位置等相关信息。不同的物理设备有不同信息记录,但是在Linux系统看来,这些都是一样的。因此只要驱动设置正确,通过块设备的挂载,Linux可以操作各种各样的记录设备,甚至是远程的基于网络的设备,而不管他们的物理状态。文件系统中的文件是数据的集合,不仅包括用户正常记录的数据,还包括文件系统的结构信息,以及Linux系统中所见到的文件名、目录、软连接、文件保护与校验信息等内容。此外文件中还要保存安全信息以便保持操作系统的基本完16硕{硕{:学位论文整性。所有这些数据被封装到“文件”单元中提供给用户使用。2.3.4.2加载YAFFS文件系统本文的系统挂载了NANDFLASH,其特点是容量大,存储区可能有坏点,以页面为单位进行存取。针对这些特点,YAFFS文件系统进行了针对性的加强。它是日志结构的文件系统,提供平衡损耗与掉电保护功能,可以有效避免随机掉电对文件系统一致性与完整性的损坏。YAFFS采用了多策略混合的垃圾回收算法,结合了贪心算法的高效性和随机算法的平均性,达到了兼顾损耗平均和系统开销的目的。YAFFS将文件组织成固定大小(512字节)的数据段。每个文件都有一个页面专门存放文件头,文件头保存了文件的模式、所有者id、组id、长度、文件名等信息。为了提高文件数据块的查找速度,文件的数据段被组织成树形结构。YAFFS在进行改写操作时总是先写入新的数据块,然后将旧的数据块从文件中删除。NANDFLASH物理存取是以页面为单位进行的,因此YAFFS文件系统也将文件组织成固定大小的数据段,利用NANDFLASH所提供的每个页面16字节的备用空间存放校验及文件结构信息,以实现错误检测及坏块处理的功能,同时提高了文件系统的操作速度。YAFFS使用页面备用空间的ECC进行错误检测,出现多次错误后此页面便会停止使用。YAFFS充分利用了NANDFLAsH所提供的每个页面l6字节的备用存储空间,参考了SmartMedia的设定,备用空间中的6字节被用作页面数据的ECC,2个字节分别用作块状态字和数据状态字,其余的8字节用来存放文件系统的组织信息,即元数据。由于文件系统的基本组织信息被保存在页面的备份空间中,因此,在文件系统加载时只需要扫描各个页面的备份空间,即可建立起整个文件系统的结构,加快了文件系统的加载速度。在内核中建立YAFFS目录fs/yaffs,并把yaffs代码复制到此目录下。修改Kconng和makefile,使得可以配置YAFFS。在YAFFS目录中生成Makenle和Kconfig文件。配置内核时选中MTD支持和YAFFS支持,编译内核并把内核下载到开发板的FLASH上,制作根文件系统并下载到FLASH指定位置。这样,YAFFS文件系统便被安装到嵌入式Linux系统中了。2.3.5触摸屏加载与调试2.3.5.1Linux中触摸屏的加载方式Linux下的触摸屏驱动程序主要都在/kernel/drivers/char/s3c2410.ts.c文件中。在触摸屏设备驱动程序中,全局变量structTSDEVtsdev用来保存触摸屏的相关参数、等待处理的消息队列、当前采样数据、上一次采样数据等信息。TsRET结构体中的信息就是驱动程序提供给上层应用程序使用的信息,用来存储触摸屏的返回值。上层应用程序通过读接口,从底层驱动中读取信息,并根据得到的值进行其他方面的操作。基于ARM9基于ARM9的于写体数宁识别技术研究‘j实现TSDEV结构用于记录触摸屏运行的各种状态,PenStatus包括PENUP、PENDOWN和PENFLEETING。buf【MAXTSBUF】是用来存放数据信息的事件队列,head、tail分别指向事件队列的头和尾。程序中的事件队列是一个环形结构,当有事件加入时,队列头加一,当有事件被取走时,队列尾加一,当头尾位置指针一致时读取该事件的信息,进程会被安排进入睡眠。WQ等待队列,包含一个锁变量和一个正在睡眠进程链表。当有好几个进程都在等待某件事时,Linux会把这些进程记录到这个等待队列。它的作用是当没有笔触事件发生时,阻塞上层的读操作,直到有笔触事件发生。队列使用自旋锁,自旋锁是基于共享变量来工作的,函数可以通过给某个变量设置一个特殊值来获得锁。而其他需要锁的函数则会循环查询锁是否可用。MAXTSBUF的值为16,即在没有被读取之前,系统缓冲区中最多可以存放16个笔触数据信息。2.3.5.2加载触摸屏的主要步骤首先在驱动模块初始化函数中,除了对驱动的字符设备的注册外,还要对中断进行申请。一般需要申请两个触摸屏相关的中断。一个是IRQTC中断,该中断在笔按下时,对应管脚产生表示中断的低电平信号;另一个是IRQADCDONE中断,该中断是当芯片内部A/D转换结束后,通知中断控制器产生中断,这时就可以去读取转换得到的数据。当触摸屏被按下后,就会触发中断,这时Linux系统会调用申请中断时附带的s3c2410isrtc中断回调函数,该函数中判断若为笔抬起则启动x轴坐标的A/D转换。转换完毕后会,会触发产生ADC中断,这时就会调用申请中断时附带的s3c2410isradc中断回调函数,在该函数中进行判断。若x轴坐标转换结束马上进行y轴坐标的A/D坐标转换;若y轴坐标转换结束,则重新回到等待中断模式,然后将坐标值写入环形缓冲区,并环形等待队列中的进程。将ADC触摸屏控制寄存器ADCTSC的第8位设为1,使得笔抬起也能产生中断信号。将修改后的触摸屏驱动加入Linux内核,重新编译下载,触摸屏便能将信号送给Linux系统了。2.3.6准备功能层软件开发工作进行到这里,硬件平台及底层的软件开发基本完成,可以开始准备应用层及功能层的软件设计开发了。为了减小开发及调试的难度,本文所设计的系统以识别0—9十个阿拉伯数字为主要目标,在实现基本的阿拉伯数字辨别的基础上再考虑扩充识别对象的范围。手写辨别程序最终目的是在ARM.Linux平台运行,其中逻辑辨别模块需要在PC.Window平台上编程并测试,然后将完成的模块嵌入主程序,移植到ARM.Linux平台下。Qt的一个重要特点就是它的跨平台特性,所有的Qt库函数都有Windows和Linux版本,用户所写的应用程序基本不需要改动就能够在Linux和Window平台移植运行。得益于Qt的这一良好特性,本文18硕十学位论文所要编写的大量应用程序不需要考虑太多就能达到程序与硬件平台的无关性,同硕十学位论文所要编写的大量应用程序不需要考虑太多就能达到程序与硬件平台的无关性,同时在PC和Linux上运行。所有程序在编写时不调用平台特有函数,用纯C/C++及Qt库完成,以减少硬件平台的不同带来的影响,减小软件开发工作量。程序的总体框架见图2.5:图2—5程序总体结构本文的工作路线如下:先设计并实现图像预处理模块,然后利用此模块在PC上将测试用图像文件转换成标准的数组,作为下一模块的输入。然后在PC上设计并实现图像识别逻辑模块,将上一步转换后的图像输入此模块,调试并得到理想的结果。当逻辑判断满足预定要求时,将此模块变成代码,嵌入到Qt的主程序当中,最后实现触摸屏动作处理模块,形成从触摸屏动作生成图像再变成归一化数据最后到自动识别的程序流程,移植到ARM.Linux平台上完成数字字符识别功能。19基于ARM9基于ARM9的手写体数宁识别技术研究与实现第3章手写体数字识别系统图像预处理的研究与实现3.1跨平台编程环境Qt3.1.1选择GUI作为交互方式在系统操控方式中,业界一直存在着2大流派,既CLI(CommandLineInstruction)与GUI(GraphicUserInterfaceGUI)。CLI的意思是使用命令行及指令输入的方式与计算机系统发生互动;而GUI是指通过图形、对话框等模式与操作者完成信息交互,如普通个人电脑上装的windows操作系统就是GUI形式的代表者。不可否认,在当今的信息科技条件下,只有CLI方式才能最大可能的与计算机系统完成信息的交互,真正的获得“完全的系统控制权",因此大多数科技开发人员都使用CLI方式以获得更大的操控自由度。本文开发所使用的系统平台是Linux,Linux的强项在于其内核的稳定、强大、高效。与windows平台对比,图形界面从来不是Linux的优势所在。但是对于普通的使用者以及一般的外围开发人员,图形GUI方式由于其简单直观,无疑更容易被接受,甚至在某些场合,图形操作方式是必须的。windows操作系统的成功与广泛流行,并不是由于其技术的领先性,很大程度上是其图形化的操作界面受到大量的普通计算机使用者的青睐而造成的。因此一个系统要走入普通用户手中,一个友好直观的GUI系统是不可缺少的。本文所要完成的字符识别功能与图形密切相关,目标使用对象为普通的操作人员,因此使用GUI方式更能满足要求。3.1.2主流的嵌入式GUI在嵌入式系统硬件性能不断提高的今天,图形用户界面的地位变得越来越重要,它的存在为使用者提供了友好便利的人机界面。但是嵌入式GUI与桌面机系统GUI又有区别,主要是因为嵌入式系统硬件资源一般有限而GUI操作又属于比较消耗资源的一类操作,因此嵌入式GUI要求简单、直观、可靠、占用资源小并且反应迅速。同时,嵌入式系统不像标准的PC那样结构统一,各个硬件系统之间有较大的差异性及特殊性,因此嵌入式GuI需要具备高度可移植性与可裁剪性,以适应不同的硬件条件和使用需求。支持嵌入式Linux操作系统的图形类库和开发系统,常见的开源版本有以下三种【49】:(1)MicroWindows:著名的开放源码的嵌入式GUI软件,它的设计宗旨是针对体积小的装置建立一套先进的视窗环境。MicroWindows能够在没有任何操作系统或其他图形系统的支持下运行,对裸显示设备进行直接操作。因此,MicroWindows显得十分小巧,便于移植到各种硬件和软件系统上。20硕十学位论文(2)MiniGUI硕十学位论文(2)MiniGUI:国内做得比较好的自由软件项目之一,它可以在以Linux为基础的应用平台上提供一个简单可行的MiniGUl支持系统。“小”是MiniGUI的特色,MiniGUI可以应用在电视机顶盒、实时控制系统及掌上电脑等诸多场合。由于这是由中国人自己开发的GUI系统,所以对中文的支持最好。(3)Qt/Embedded:由挪威著名的Trolltech公司开发的面向嵌入式系统的Qt版本。Qt/Embedded类库完全采用C++封装,丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面。它的类库接口完全兼容于同版本的Qt.x11,使用X.windows下的开发工具可以直接开发基于Qt/Embedded的应用程序GUI界面。3.1.3Qt的特点Qt被设计成跨平台的开发工具,由Trolltech最初创建并用于LinuX台式机。它支持各种带有UNIX核心特点的系统,其中就包括Linux系统,同时Qt还支持当今普通计算机上流行的Windows视窗系统。Linux上最流行的桌面环境KDE就是用Qt编写的,从KDE桌面可以看出Qt提供的是一个重量级的图形开发环境,使用它可以开发出艺术级的GUI效果。 Qt/Embedded以原始Qt为基础,做了许多富有特色的调整,使之更加适用于嵌入式环境。Qt/Embedded进一步封装了软硬件的许多操作细节,通过QtAPI与LinuxI/O设施直接交互,使得熟悉并已经适应面向对象编程的人员能够释放更多的精力到应用上,减少硬件及相关操作所带来的工作量。与其它GuI相比,QtGUI非常快,并且它没有分层,这使得Qt/Embedded成为用于运行基于Qt的程序的紧凑环境。其基于C/C++,面向对象的体系结构使代码结构化、可重用并且运行快速。Trolltech公司还推出了Qt掌上机环境Qtopia。Qtopia提供了一个基本桌面窗口环境,该环境为开发者提供了一个易于使用的界面,其中包含有全套的个人信息管理(personalInformationManagement,PIM)应用程序、因特网客户机、实用程序等等,在智能手机、个人电子消费品领域得到了广泛的应用。Qt不仅仅是一个GUI库,它以C/C++类库的形式,给开发者提供了重量级2DGUI和轻中量级3DGUI、多线程管理、文件细节封装、二进制级数据交换、数据库接口、网络模块封装、XML/Script脚本操作等功能的支持。Qt在系统中的作用,同Xwindow上的Motif、Openwin、GTK等图形界面库和windows平台上的MFC、OWL、VCL、ATL类似,而且Qt具有下列突出优点【81:(1)优良的跨平台特性。Qt支持下列操作系统:MicrosoftWindows95/98、MicrosoftWindowsNT、Linux、 Solaris、SunOS、HP-UX、DigitalUNIX(O-SF/l,Tru64)、Irix、FreeBSD、BSD/OS、SCO、AIX、0S390、QNX等等。(2)面向对象特点。Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为信号/插槽的安某于ARM9某于ARM9的手写体数字识兄ll技术研究与实现全类型来替代回调函数,这使得各个元件之间的协同工作变得十分简单。(3)丰富的API。Qt包括多达250个以上的C++类,还提供基于模板的collections、serialization、11le、I/Odevice、directorymanagement、date/time类。甚至还包括正则表达式的处理功能。(4)支持2D/3D图形渲染,支持OpenGL。(5)大量的开发文档。(6)XML支持。3.1.4选择Qt的主要原因本文的目标是在ARM.Linux平台上实现手写体数字识别功能,要实现这一功能,至少需要完成接受触摸屏操作、图像预处理、数字信息识别等功能模块。要完成以上模块,就必须在PC上将最核心的数字信息识别模块编程实现并调试完毕。数字信息的识别算法一般都比较复杂,直接使用Qt编程进行数学逻辑运算,难度较大并且出错几率高。因此本文所采用的技术路线是利用Matlab的快速原型能力,在PC上的Matlab中实现数字字符信息识别判断功能,然后将此模块逻辑自动生成C代码,嵌入到Qt主程序当中。因此,本文所设计的功能模块需要有跨平台运行的能力。Qt的最大特点就是跨平台,Qt库将不同操作系统之间的细节差别封装屏蔽,同样的应用程序代码,几乎不要改动就能在Window与Linux之间移植j使用Qt进行编程,将大大减少程序在不同平台间移植所需要的工作量。再者Qt提供的库函数在图像处理,数据封装等方面比MFC强大得多,以Qt为基础进行编程将进一步减小开发难度。最后,Qt默认的编译器是著名的GCC工具链,对比微软集成开发环境中的编译器,其对国际标准ANSIC的支持要好得多,能够达到90%以上。本文需要使用Matlab与LinuxQt联合编程,而对标准C的支持程度在使用几种开发工具联合编程时,直接影响开发的难度及结果。综合以上几点,本文最终选择Qt为开发工具。3.2图像预处理程序总体框架字符判断逻辑模块的一个重要特点,是调试完毕的模型对非训练样本具有一定的泛化能力(推广性),即在对已有测试样本进行准确辩识的基础
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麻醉科临床管理PT课件
- 2026年中国三勒浆抗疲劳液市场调查研究报告
- 2026年中国PVC足球市场调查研究报告
- 2026年中国3D立体视频眼镜市场调查研究报告
- 2026年艺术设计行业技能考试-装饰装修工历年参考题库含答案解析
- 2026年秘书资格考试-秘书三级历年参考题库含答案解析
- 康复治疗技术运动疗法
- 2026年环保知识生态建设知识竞赛-碳排放知识竞赛历年参考题库含答案解析
- 2026年煤炭矿山职业技能鉴定考试-工掘区队长安全技术考试历年参考题库含答案解析
- 2026年浙江住院医师-浙江住院医师耳鼻咽喉科历年参考题库含答案解析
- 2026年秋季开学初中生防溺水安全教育课件
- 人工智能算力中心技术要求
- 2026-2031年中国商务旅行行业市场调查研究及发展前景预测报告
- 第7课《培养德智体美劳全面发展的社会主义建设者和接班人》课件(共37张)
- 零星维修工程服务方案投标文件(技术标)
- 慢性阻塞性肺疾病护理
- TCABEE 036-2022《纳米陶瓷微珠保温隔热材料》
- 2025年软考《信息系统管理工程师》考试试题及答案
- 高二政治A10.1不作简单肯定或否定课件
- 2026年团干部技能大赛过关检测附参考答案详解【A卷】
- (正式版)DB36∕T 1117-2019 《安福火腿》
评论
0/150
提交评论