




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
湖南大學(xué)碩士學(xué)位論文基于ARM9的手寫(xiě)體數(shù)字識(shí)別技術(shù)研究與實(shí)現(xiàn)申請(qǐng)學(xué)位級(jí)別:碩士專業(yè):電子科學(xué)與技術(shù)20081110基f基fARM9的手寫(xiě)體數(shù)寧識(shí)別技術(shù)研究與實(shí)現(xiàn)摘 要‘近年來(lái)智能技術(shù)發(fā)展十分迅猛。產(chǎn)品功能越來(lái)越強(qiáng)大,出現(xiàn)功能捆綁及集成化的趨勢(shì)。手寫(xiě)體識(shí)別作為一種最簡(jiǎn)單直接的人機(jī)交互手段,在智能設(shè)備中有重要作用。新興的精簡(jiǎn)指令集ARM系列處理器,相比于傳統(tǒng)的復(fù)雜指令集處理器,功耗更低計(jì)算能力更強(qiáng)大,近年來(lái)在嵌入式領(lǐng)域得到廣泛的應(yīng)用。本文圍繞ARM9核心的硬件平臺(tái),研究在Linux上實(shí)現(xiàn)手寫(xiě)體數(shù)字的自動(dòng)識(shí)別的方法。(1)通過(guò)分析手寫(xiě)體識(shí)別技術(shù)的發(fā)展?fàn)顩r,ARM核心系列芯片的應(yīng)用情況,說(shuō)明了在ARM平臺(tái)上實(shí)現(xiàn)手寫(xiě)體數(shù)字識(shí)別功能的可行性。(2)以2410芯片為核心,闡述了系統(tǒng)的硬件組成及其特點(diǎn),各個(gè)硬件模塊的原理及功能。對(duì)ARM.Linux內(nèi)核進(jìn)行配置及編譯,掛載了適用于NANDFLASH的YAFFS文件系統(tǒng),對(duì)液晶及觸摸屏進(jìn)行了配置及調(diào)試,最后將Linux系統(tǒng)移植到ARM平臺(tái)上。(3)結(jié)合當(dāng)今圖像識(shí)別技術(shù)的發(fā)展,闡述了模式識(shí)別問(wèn)題中圖像預(yù)處理的主要方法,分析了圖像預(yù)處理過(guò)程中各個(gè)模塊的數(shù)學(xué)原理,利用跨平臺(tái)編程環(huán)境Qt編程實(shí)現(xiàn)了圖像預(yù)處理功能。(4)通過(guò)分析經(jīng)典BP網(wǎng)絡(luò)的學(xué)習(xí)算法及其優(yōu)缺點(diǎn),針對(duì)傳統(tǒng)BP算法的缺點(diǎn)進(jìn)行了參數(shù)優(yōu)化,減少了網(wǎng)絡(luò)訓(xùn)練失敗的幾率及訓(xùn)練所使用的時(shí)間。利用Matlab強(qiáng)大的數(shù)據(jù)處理與快速編程能力,使用神經(jīng)網(wǎng)絡(luò)工具箱,編程實(shí)現(xiàn)BP網(wǎng)絡(luò),并使用處理好的圖片數(shù)據(jù)對(duì)網(wǎng)絡(luò)進(jìn)行了訓(xùn)練。訓(xùn)練完成后,使用字符圖片樣本對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行了測(cè)試,并給出了測(cè)試結(jié)果,證明了訓(xùn)練結(jié)果的正確性。(5)利用Matlab的聯(lián)合編程能力,配置好模塊參數(shù)后,將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模塊導(dǎo)出生成C語(yǔ)言代碼,并結(jié)合Qt及Linux的特點(diǎn)進(jìn)行適應(yīng)性修改。根據(jù)課題要求,在Qt環(huán)境中配置好觸摸屏,使用程序抓取觸摸屏動(dòng)作生成圖像文件,最后將神經(jīng)網(wǎng)絡(luò)模塊嵌入到程序主體當(dāng)中,下載到ARM平臺(tái)上運(yùn)行。本文的設(shè)計(jì)原理適合于更復(fù)雜的文字識(shí)別場(chǎng)合,具有借鑒意義。根據(jù)需求對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,并加入更多分類器減少單個(gè)網(wǎng)絡(luò)的規(guī)模,就能實(shí)現(xiàn)更為復(fù)雜的手寫(xiě)體識(shí)別功能。關(guān)鍵詞:ARM;神經(jīng)網(wǎng)絡(luò);手寫(xiě)體識(shí)別;Linux;Matlab;Qt碩}碩}:學(xué)位論史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的于寫(xiě)體數(shù)寧識(shí)別技術(shù)研究與實(shí)現(xiàn)conflguredtheblock’sparams,exportedthewelltrainedBPnetworktoablockofCcode,anddidsomeadaptiVemodincationaccordingtothefeaturesofQtandLinux.Accordingtotherequirementoftheissue,thispaperconfiguredtheTouchScreenintheQtenVironment,madeaprogramblocktoconverthumanactionsonTouchScreenintoimagefiles.‘Inthelast,thepaperimplantthenenralnetworkblockintothemainprogramblock,anddownloadedtheprogramtotheARM·Linuxplatform.Thetheoryandapproachfitmoreconlplexcharacterrecognitionapplications,sothatitcouldbeareference.ByimproVingthenetworkaccordingtotherequirement,addingmorenetworksandreducingthescaleofasinglenetwork,itcouldimplementthemorecomplexhandwritingrecognitionfIunctionality.KeyWords:ARM;NeuralNetwork;handwritingrecognition;Linux;Matlab;QtIV湖南大學(xué)學(xué)位論文原創(chuàng)性聲明湖南大學(xué)學(xué)位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個(gè)人或集體己經(jīng)發(fā)表或撰寫(xiě)的成果作品。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。作者簽名覆感 日期:砷年,月珈學(xué)位論文版權(quán)使用授權(quán)書(shū)本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國(guó)家有關(guān)部門(mén)或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)湖南大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。本學(xué)位論文屬于1、保密口,在 年解密后適用本授權(quán)書(shū)。2、不保密囪。(請(qǐng)?jiān)谝陨舷鄳?yīng)方框內(nèi)打“√”)作者簽名:愛(ài)文 日期:矽7年,月硝日導(dǎo)師簽名: 日期:么呷年夕月z∥日碩士學(xué)位論文第碩士學(xué)位論文第1章 緒論1.1選題的背景及意義1.選題背景傳統(tǒng)的嵌入式應(yīng)用以經(jīng)典的INTEL51系列為代表,以一塊8位或者16位單片機(jī)為核心,配以內(nèi)存、IO口等設(shè)備組成一個(gè)小型定制系統(tǒng),裝入特定的程序以完成指定的功能。由于主處理器性能有限,只能進(jìn)行有限的邏輯控制,主要應(yīng)用于數(shù)據(jù)采集與傳輸、工業(yè)現(xiàn)場(chǎng)控制等場(chǎng)合。隨著電子技術(shù)理論的發(fā)展以及制造技術(shù)的成熟,出現(xiàn)了以精簡(jiǎn)指令集為基礎(chǔ)的高性能32位芯片。這些32位芯片普遍擁有大幅超越前輩的運(yùn)算性能,能夠運(yùn)行復(fù)雜的程序提供真正的圖形界面;集成常見(jiàn)的擴(kuò)展功能,擁有SOC特性,從而減少擴(kuò)展芯片的使用,簡(jiǎn)化電路設(shè)計(jì)。其中以ARM為核心的32位系列芯片最為成功。ARM公司設(shè)計(jì)的芯核結(jié)構(gòu)合理,功耗低,在擁有不俗的性能的同時(shí)還有相對(duì)較低的成本,因此獲得了包括lNTEL、三星、ATMEL在內(nèi)的眾多國(guó)際一流半導(dǎo)體廠商的大力支持,在32位嵌入式領(lǐng)域獲得了巨大的成功。便攜式電子消費(fèi)品、智能設(shè)備是ARM系列32位處理器一個(gè)重要的應(yīng)用場(chǎng)所。ARM微處理器的出現(xiàn),加速了嵌入式產(chǎn)品從原來(lái)的軍事、工控領(lǐng)域向民用、消費(fèi)領(lǐng)域的滲透。以手機(jī)、MP3、MP4等產(chǎn)品為代表,便攜式電子消費(fèi)產(chǎn)品已經(jīng)正式走入了普通人的生活。許多智能手機(jī)都以ARM9或更高端的ARM芯片為核心,裝入Palm/OS、WCE等嵌入式操作系統(tǒng),再配以特定的應(yīng)用程序,從而實(shí)現(xiàn)精美的圖形界面與其它各種智能功能。隨著電子設(shè)備功能的強(qiáng)大,傳統(tǒng)的按鍵操作方式顯得越來(lái)越不能滿足要求,觸摸屏加手寫(xiě)輸入的方式因?yàn)槠浞先说淖匀涣?xí)慣,簡(jiǎn)單直接,受到用戶的歡迎,成為近年來(lái)的技術(shù)熱點(diǎn),越來(lái)越受到重視。今天的ARM系列芯片功能強(qiáng)大,價(jià)格相對(duì)低廉,在以ARM9為核心的系統(tǒng)平臺(tái)上實(shí)現(xiàn)手寫(xiě)體識(shí)別技術(shù)已經(jīng)成為可能。2.課題意義本課題來(lái)自于三一重工股份有限公司的工程機(jī)械觸摸屏系統(tǒng)預(yù)研項(xiàng)目,手寫(xiě)體文字識(shí)別技術(shù)作為一個(gè)重要的功能模塊需要以合理的性價(jià)比加以實(shí)現(xiàn)。在不同的平臺(tái),不同的算法下,手寫(xiě)體字符識(shí)別的效果有很大區(qū)別。雖然國(guó)內(nèi)的字符識(shí)別技術(shù)近年來(lái)發(fā)展迅速,但大多是基于PC.Windows平臺(tái),Linux下開(kāi)源的手寫(xiě)體識(shí)別軟件成熟的不多,開(kāi)源的更少。本文以ARM9芯片為硬件核心,開(kāi)源的Linux為軟件核心,在此系統(tǒng)基礎(chǔ)上研究實(shí)現(xiàn)手寫(xiě)體數(shù)字識(shí)別功能的可能途徑。同時(shí)本文探索了一條使用Matlab與其他工具聯(lián)合編程,快速實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的技術(shù)路線,基于ARM9基于ARM9的于.寫(xiě)體數(shù)寧識(shí)別技術(shù)研究與實(shí)現(xiàn)在進(jìn)行復(fù)雜算法的應(yīng)用開(kāi)發(fā)時(shí)有重要的借鑒意義。1.2AI蝴與手寫(xiě)體識(shí)別技術(shù)的應(yīng)用與發(fā)展1.ARM系列芯片的應(yīng)用ARM系列處理器是指購(gòu)買了ARM公司的授權(quán),遵守其標(biāo)準(zhǔn)設(shè)計(jì)生產(chǎn)的RISC處理器。ARM公司是一家IP供應(yīng)商,本身并不生產(chǎn)芯片,其核心業(yè)務(wù)是IP核以及相關(guān)工具的開(kāi)發(fā)和設(shè)計(jì)。各個(gè)芯片設(shè)計(jì)制造商購(gòu)買其IP核授權(quán)后,進(jìn)行2次設(shè)計(jì)開(kāi)發(fā)流片,從而生產(chǎn)出滿足市場(chǎng)需要的各種各樣的ARM芯片。ARM芯片的研究還在繼續(xù)并不斷取得突破,自其問(wèn)世以來(lái),結(jié)構(gòu)已經(jīng)從V3發(fā)展到V6。目前非常流行的ARM芯核有ARM7TDMI、StrongARM、ARM720T、ARM9TDMI、ARM922T、ARM940T、ARM946T、ARM966T、ARM1OTDMI等。ARM7系列芯片在性能與成本之間找到了很好的平衡點(diǎn),憑借其卓越的性價(jià)比迅速占領(lǐng)了市場(chǎng),得到了廣泛的應(yīng)用。ARM9系列以后的芯片性能顯著提高,已經(jīng)能夠運(yùn)行嵌入式操作系統(tǒng),能進(jìn)行游戲娛樂(lè)、視頻解碼播放等計(jì)算負(fù)荷較高的應(yīng)用。最新的ARMll內(nèi)核囊括了Thumb.2、CoreSi曲t、Truszone等眾多業(yè)界領(lǐng)先技術(shù),同時(shí)ARM公司開(kāi)始提供PiccoloDSP的芯核給芯片設(shè)計(jì)者,用于設(shè)計(jì)帶DSP核心的SOC(SystemOnChip)結(jié)構(gòu)芯片,ARM芯片的功能得到進(jìn)一步增強(qiáng)并延伸到傳統(tǒng)的強(qiáng)調(diào)速度與效率的DSP領(lǐng)域【11。由于ARM芯片的成功應(yīng)用,眾多軟件廠商也推出了基于ARM系統(tǒng)的產(chǎn)品,包括WindowsCE、Linux、VxWorks等操作系統(tǒng),以及各種移植版的應(yīng)用軟件如視頻解碼器等等。眾多的消費(fèi)電子產(chǎn)品制造商大力開(kāi)展ARM核心系統(tǒng)的研究與開(kāi)發(fā),推出了基于ARM的性價(jià)比優(yōu)越的智能產(chǎn)品,受到市場(chǎng)的歡迎。目前可以提供ARM芯片的著名半導(dǎo)體公司有:英特爾、飛利浦、德洲儀器、三星、摩托羅拉、ADI公司、安捷倫、Atmel、IntersiI、Alcatel、Alteral、臺(tái)積電、臺(tái)聯(lián)電等等;提供ARM體系軟件產(chǎn)品的有:微軟、風(fēng)河等;提供基于ARM的成套產(chǎn)品的有:三星、SONY、NOKIA、國(guó)內(nèi)眾多手機(jī)廠商等??梢哉f(shuō)用如火如荼來(lái)形容ARM市場(chǎng)不為過(guò)。2.模式識(shí)別技術(shù)的發(fā)展模式識(shí)別(PatternRecognition)是指對(duì)表征事物或現(xiàn)象的各種形式的(數(shù)值的、文字的和邏輯關(guān)系的)信息進(jìn)行處理和分析,以對(duì)事物或現(xiàn)象進(jìn)行描述、辨認(rèn)、分類和解釋的過(guò)程,是信息科學(xué)和人工智能的重要組成部分【521。在人類的正常生活中,模式識(shí)別的活動(dòng)是經(jīng)常發(fā)生的,如人類看到一輛汽車的影像便會(huì)將之識(shí)別為一種交通工具,所以模式識(shí)別是人類的一項(xiàng)基本智能。隨著計(jì)算機(jī)技術(shù)的出現(xiàn)與發(fā)展以及隨后而來(lái)的對(duì)人工智能的研究熱潮的出現(xiàn),人們希望能利用計(jì)算機(jī)的快速運(yùn)算能力來(lái)代替或擴(kuò)展人類的部分腦力勞動(dòng),模式識(shí)別就是應(yīng)用計(jì)算機(jī)對(duì)一組事件或過(guò)程進(jìn)行鑒別和分類的技術(shù)。它所識(shí)別的事件或過(guò)程可以是文字、聲音、2碩L碩L學(xué)位論文圖像等具體對(duì)象,也可以是狀態(tài)、程度等抽象對(duì)象。這些對(duì)象與數(shù)字形式的信息相區(qū)別,稱為模式信息。模式識(shí)別嘗試模擬人腦的“對(duì)象識(shí)別”能力,因此可以看作是人工智能的一個(gè)分支方向。和其它人工智能技術(shù)類似,模式識(shí)別一般借助計(jì)算機(jī)完成。計(jì)算機(jī)模式識(shí)別在20世紀(jì)60年代初迅速發(fā)展并成為一門(mén)新學(xué)科。模式識(shí)別技術(shù)的發(fā)展有著巨大的現(xiàn)實(shí)意義,目前在文字和語(yǔ)音識(shí)別、遙感和醫(yī)學(xué)診斷等方面都有廣泛的應(yīng)用,其技術(shù)的進(jìn)步能改變?nèi)祟惿鐣?huì)的活動(dòng)方式節(jié)省人類的勞動(dòng)力。例如文字識(shí)別技術(shù)能夠自動(dòng)將各種文字影像轉(zhuǎn)換成電子文檔保存管理而不再需要人類手工輸入信息,從而大大節(jié)約了人力;語(yǔ)音識(shí)別技術(shù)使得語(yǔ)音身份鑒別成為可能,在安保、監(jiān)控方面大有作為。模式識(shí)別技術(shù)的難點(diǎn)在于其識(shí)別的準(zhǔn)確度的提高,以及對(duì)人腦識(shí)別過(guò)程的模擬。由于準(zhǔn)確的對(duì)人腦的識(shí)別邏輯進(jìn)行建模在目前的條件下難以完成,因此模式識(shí)別技術(shù)廣泛借助其他學(xué)科門(mén)類的知識(shí),以逼近理想的正確辨別邏輯。一般來(lái)說(shuō),模式識(shí)別與統(tǒng)計(jì)學(xué)、心理學(xué)、語(yǔ)言學(xué)、計(jì)算機(jī)科學(xué)、生物學(xué)、控制論、圖像處理學(xué)等都有關(guān)系且互相交叉影響,要實(shí)現(xiàn)一個(gè)識(shí)別過(guò)程其具體知識(shí)往往來(lái)自于與應(yīng)用目標(biāo)有關(guān)的學(xué)科。例如字符模式識(shí)別中的預(yù)處理和特征抽取環(huán)節(jié)需要圖像處理的技術(shù),識(shí)別的字符類型不同又會(huì)導(dǎo)致識(shí)別算法的不同適應(yīng)性;圖像處理中的圖像分析部分需要模式識(shí)別技術(shù)鑒別源圖像的類型。今天的模式識(shí)別技術(shù)由于其巨大的現(xiàn)實(shí)意義及眾多待解決問(wèn)題的存在,仍然是一個(gè)發(fā)展迅速研究活躍的學(xué)科門(mén)類。3.手寫(xiě)體識(shí)別技術(shù)的發(fā)展手寫(xiě)體識(shí)別問(wèn)題是模式識(shí)別問(wèn)題中的一個(gè)經(jīng)典問(wèn)題,屬于光學(xué)字符識(shí)別技術(shù)(既OCR技術(shù)),是與人們生活密切相關(guān)的問(wèn)題。國(guó)外對(duì)字符識(shí)別的研究開(kāi)始較早。我國(guó)自70年代開(kāi)始對(duì)數(shù)字、英文字母及符號(hào)的識(shí)別進(jìn)行研究,經(jīng)過(guò)十多年的研究與努力,漢字識(shí)別技術(shù)的發(fā)展和應(yīng)用已經(jīng)有了長(zhǎng)足進(jìn)步:從簡(jiǎn)單的單體識(shí)別發(fā)展到多種字體混排的多體識(shí)別,從中文印刷材料的識(shí)別發(fā)展到中英混排印刷材料的雙語(yǔ)識(shí)別。各個(gè)系統(tǒng)可以支持簡(jiǎn)、繁體漢字的識(shí)別,解決了多體多字號(hào)混排文本的識(shí)別問(wèn)題,對(duì)于簡(jiǎn)單的版面可以進(jìn)行有效的定量分析。目前,聯(lián)機(jī)手寫(xiě)漢字識(shí)別技術(shù)已經(jīng)相當(dāng)成熟,市場(chǎng)上已經(jīng)出現(xiàn)了多項(xiàng)具有代表性的產(chǎn)品。脫機(jī)印刷體識(shí)別也有成熟產(chǎn)品出現(xiàn),識(shí)別率也基本能夠達(dá)到實(shí)用的要求。脫機(jī)手寫(xiě)漢字識(shí)別的研究也取得了很大的進(jìn)展,小字符集單字識(shí)別技術(shù)相對(duì)更為成熟【2引,文字識(shí)別理論與技術(shù)繼續(xù)不斷向前發(fā)展。1.3本文的主要研究?jī)?nèi)容本文是在承擔(dān)三一重工股份有限公司的“工程機(jī)械觸摸屏系統(tǒng)開(kāi)發(fā)"項(xiàng)目研發(fā)工作中完成的,既是對(duì)過(guò)去的一年中承擔(dān)的科研任務(wù)的成果梳理,同時(shí)也是對(duì)3基于ARM9基于ARM9的于寫(xiě)休數(shù)字識(shí)別技術(shù)研究’j實(shí)現(xiàn)研究過(guò)程的經(jīng)驗(yàn)總結(jié)。第1章緒論。通過(guò)分析手寫(xiě)體識(shí)別技術(shù)的發(fā)展?fàn)顩r,ARM核心系列芯片的發(fā)展與應(yīng)用,說(shuō)明了在ARM平臺(tái)上實(shí)現(xiàn)手寫(xiě)體識(shí)別功能的可行性,指出了課題的研究意義。第2章手寫(xiě)體數(shù)字識(shí)別系統(tǒng)的硬件基礎(chǔ)及底層軟件開(kāi)發(fā)。以三星S3C2410芯片為核心,闡述了系統(tǒng)的硬件組成及其特點(diǎn),給出主要硬件模塊的原理及設(shè)計(jì)與實(shí)現(xiàn)。對(duì)Linux內(nèi)核結(jié)構(gòu)進(jìn)行了研究,根據(jù)系統(tǒng)功能要求對(duì)ARM.Linux內(nèi)核進(jìn)行配置及編譯,并掛載了YAFFS文件系統(tǒng)、觸摸屏驅(qū)動(dòng),最后將Linux系統(tǒng)移植到ARM平臺(tái)上。第3章手寫(xiě)體數(shù)字識(shí)別系統(tǒng)圖像預(yù)處理的研究與實(shí)現(xiàn)。在詳細(xì)闡述實(shí)現(xiàn)手寫(xiě)體數(shù)字識(shí)別功能的主要工作步驟,圖像預(yù)處理的目的及主要處理流程的基礎(chǔ)上,使用當(dāng)前Linux平臺(tái)上流行的跨平臺(tái)圖形編程環(huán)境Qt,設(shè)計(jì)并編程實(shí)現(xiàn)了圖像的二值化、平滑去噪、細(xì)化、裁切拉伸等功能,并對(duì)不同算法的處理效果做出比較與選擇。連接各個(gè)模塊后,將樣本圖片批量轉(zhuǎn)換并存儲(chǔ)為文件供其他模塊使用。第4章手寫(xiě)體數(shù)字識(shí)別算法的研究與實(shí)現(xiàn)。對(duì)當(dāng)前字符識(shí)別的主要算法進(jìn)行了分析比較,詳細(xì)闡述了神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原型及其用于文字識(shí)別的原理,經(jīng)典BP網(wǎng)絡(luò)的學(xué)習(xí)算法及其優(yōu)缺點(diǎn)。使用Matlab編程實(shí)現(xiàn)了BP網(wǎng)絡(luò)及對(duì)圖像預(yù)處理模塊所生成數(shù)據(jù)的讀取功能。通過(guò)實(shí)驗(yàn)比較,選擇了較好的學(xué)習(xí)算法及合理的網(wǎng)絡(luò)參數(shù),對(duì)BP網(wǎng)絡(luò)進(jìn)行訓(xùn)練達(dá)到了收斂的目的,最后對(duì)訓(xùn)練好的BP網(wǎng)絡(luò)進(jìn)行樣本測(cè)試并給出結(jié)果。第5章Matlab與Qt聯(lián)合編程實(shí)現(xiàn)手寫(xiě)體數(shù)字識(shí)別。利用Matlab的關(guān)鍵組件Simulink中的Real.timeWorkShop,將經(jīng)過(guò)測(cè)試的神經(jīng)網(wǎng)絡(luò)改造并轉(zhuǎn)換成C/C++代碼。在對(duì)生成的代碼進(jìn)行分析的基礎(chǔ)上,對(duì)其改寫(xiě)并嵌入Qt主程序重新編譯成一個(gè)完整程序,并進(jìn)行了測(cè)試給出了對(duì)比結(jié)果。隨后將主程序移植到ARM.Linux平臺(tái)上,將程序的輸入切換為觸摸屏動(dòng)作模塊。在Qt中將觸摸屏映射成鼠標(biāo),并編程將其動(dòng)作抓取成數(shù)字圖像,連接主程序?qū)崿F(xiàn)ARM.Linux上的有限字符識(shí)別。最后,對(duì)本文研究工作進(jìn)行總結(jié)與展望。4碩卜學(xué)位論文第碩卜學(xué)位論文第2章手寫(xiě)體數(shù)字識(shí)別系統(tǒng)的硬件基礎(chǔ)及底層軟件開(kāi)發(fā)2.1開(kāi)發(fā)平臺(tái)整體結(jié)構(gòu)設(shè)備終端是一個(gè)嵌入式系統(tǒng),它是一個(gè)運(yùn)行操作系統(tǒng)及應(yīng)用程序的軟硬件綜合體。本文所設(shè)計(jì)的系統(tǒng)需要液晶屏顯示系統(tǒng)的反饋,觸摸屏接收用戶的操作,三星S3C24lO處理器處理中斷操作及程序邏輯,F(xiàn)LASH存儲(chǔ)程序參數(shù)及歷史記錄,JTAG及串口、網(wǎng)口方便與PC聯(lián)機(jī)進(jìn)行程序調(diào)試及測(cè)試。操作系統(tǒng)能夠屏蔽底層硬件結(jié)構(gòu)差異,減小開(kāi)發(fā)難度,為設(shè)備各個(gè)功能模塊的管理提供方便。系統(tǒng)的組成框圖見(jiàn)圖2.1。l應(yīng)用程序 PC王IARM版Qt庫(kù)工 l嵌入式Li肌x操作系統(tǒng) JTAG/USB/以太網(wǎng)3 工I samsungs3c2410硬件系統(tǒng)圖2—1開(kāi)發(fā)平臺(tái)整體框架整個(gè)系統(tǒng)以三星2410ARM9芯片為核心。嵌入式Linux操作系統(tǒng)安裝在硬件平臺(tái)上,用來(lái)屏蔽硬件物理結(jié)構(gòu)上的差異,方便軟件代碼的編寫(xiě)及模塊之間的復(fù)用。相比沒(méi)有安裝操作系統(tǒng)的“裸露"硬件系統(tǒng),其一大優(yōu)勢(shì)就是可以利用此平臺(tái)上已經(jīng)做好了的函數(shù)庫(kù)及功能模塊,并且將大量瑣碎的硬件細(xì)節(jié)操作交給操作系統(tǒng)來(lái)完成,從而大大減少重復(fù)性的工作,讓開(kāi)發(fā)者有更多的精力放在具體的應(yīng)用設(shè)計(jì)上,加快開(kāi)發(fā)的速度。2.2手寫(xiě)體數(shù)字識(shí)別系統(tǒng)的硬件基礎(chǔ)2.2.1硬件系統(tǒng)的整體結(jié)構(gòu)本文的開(kāi)發(fā)主要基于三星公司的S3C2410硬件平臺(tái),硬件上主要包括主CPU、存儲(chǔ)器單元、FLASH存儲(chǔ)器、LCD接口、觸摸屏接口、外接按鍵、USB接口和網(wǎng)卡接口等,預(yù)留了GPRS遠(yuǎn)程通訊接口。硬件系統(tǒng)框圖見(jiàn)圖2.2?;贏RM9基于ARM9的手寫(xiě)體數(shù)字識(shí)別技術(shù)研究與實(shí)現(xiàn)圖2—2硬件系統(tǒng)組成框架CPU單元::S3C2410ARM920T內(nèi)核存儲(chǔ)器單元::64MBSDRAM復(fù)位電路:包括上電復(fù)位和手動(dòng)復(fù)位電路,保證系統(tǒng)的可靠復(fù)位電源模塊:主要使用開(kāi)關(guān)電源進(jìn)行變壓及隔離時(shí)鐘電路:使用外部晶振引入12MHz脈沖信號(hào),經(jīng)PLL倍頻后供CPU使用實(shí)時(shí)時(shí)鐘:使用外部的實(shí)時(shí)時(shí)鐘芯片提供校時(shí),同時(shí)附帶EEPROMLCD:使用5.4寸顯示屏作為顯示窗口觸摸屏:使用較為成熟的四線電阻式觸摸屏鍵盤(pán):帶有6個(gè)開(kāi)關(guān)式按鍵USB及網(wǎng)卡接口:支持1.0格式的USB接口及10M以太網(wǎng)硬件系統(tǒng)主要以S3C2410芯片為核心,配備64MB的大容量?jī)?nèi)存以滿足運(yùn)行操作系統(tǒng)及圖形處理程序的需要。電阻式觸摸屏取代了pc上鼠標(biāo)的位置,在系統(tǒng)中被映射成鼠標(biāo)方便應(yīng)用程序的使用。另外系統(tǒng)提供少量的物理按鍵以方便程序調(diào)試及充當(dāng)迷你鍵盤(pán)。2.2.2S3C2410芯片特點(diǎn)S3C24l0是由三星半導(dǎo)體公司為手持移動(dòng)設(shè)備類應(yīng)用設(shè)計(jì)的一款低功耗、高集成度的ARM9系列芯片,它含一個(gè)ARM920T內(nèi)核。ARM920T實(shí)現(xiàn)了MMU、AMBABUS和Harvard高速緩沖體系結(jié)構(gòu),具有獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache。S3C2410采用272腳FBGA封裝,集成提供了一系列傳統(tǒng)的外圍設(shè)備功能,有力的減少了整個(gè)系統(tǒng)的成本。此CPU集成的片上功能有一引:(1)1.8V/2.0V內(nèi)部供電、3.3v存儲(chǔ)器、外部I/O供電。具有16KB一體化的Cache/MMII6碩{碩{:學(xué)位論文(2)具有外部存儲(chǔ)器控制器(SDRAM和片選控制邏輯)(3) LCD控制器(支持4K色的STN屏和256K色的TFT型液晶屏,具有1路LCD專用DMA)(4) 4路DMA,具備外部請(qǐng)求腳(5)3路UAI汀,擁有16字節(jié)的發(fā)送FIFO,16字節(jié)的接收FIFO高速緩存,2通道SPI(6) l路多主模式的IIC總線(7) 兼容V1.0的SD主接口協(xié)議和V2.1l的MMC卡協(xié)議(8)2路全速USB主設(shè)備,其中l(wèi)路可以作為USB從設(shè)備(V1.1協(xié)議)(9) 4路PwM定時(shí)器和一路內(nèi)部定時(shí)器(10)具有看門(mén)狗定時(shí)器(11) 共提供117個(gè)通用I/O口,24路外部中斷(12) 電源控制有正常模式,SLOW模式,空閑模式和掉電模式(13) 8路lO位ADC,其中2路可以作為觸摸屏接口(14) 具有日歷功能的I汀C時(shí)鐘(15) 片內(nèi)倍頻鎖相環(huán)PLLS3C241O集成了一個(gè)具有日歷功能的I盯C,還集成了具有PLL(MPLL和UPLL)功能的芯片時(shí)鐘發(fā)生器。MPLL產(chǎn)生主時(shí)鐘,能夠支持處理器工作頻率最高達(dá)到203MHZ,通過(guò)更改設(shè)置可以改變芯片的工作頻率以適應(yīng)不同的工作要求。UPLL產(chǎn)生實(shí)現(xiàn)主從USB功能的時(shí)鐘,方便uSB接口的實(shí)現(xiàn)??梢钥闯?,S3C2410的片上集成功能十分豐富,合理的利用S3C2410豐富的硬件資源,可以輕松地進(jìn)行各種嵌入式的設(shè)計(jì)開(kāi)發(fā)。s3C2410將存儲(chǔ)空間劃分為8組,每組大小是128M,共計(jì)lGB。系統(tǒng)復(fù)位后內(nèi)存分配情況見(jiàn)圖2.3,Bank0到Bank6的開(kāi)始地址是固定的,Bank7的開(kāi)始地址是Bank6的結(jié)束地址,靈活可變,并且Bank7的大小與Bank6的大小必須相等。除Bank0外,其余各存儲(chǔ)器的總線寬度可編程設(shè)置為8位、16位或32位,但是Bank0只能設(shè)置為16位或者32位。Bank0作為引導(dǎo)ROM,地址映射到Ox0000,總線寬度在復(fù)位時(shí)就確定了。所有的寄存器組均可用于ROM或者SRAM,Bank6和Bank7還可以用于SDRAM。所有內(nèi)存塊的訪問(wèn)周期都可編程。S3C2410同時(shí)支持大、小端模式。S3C2410外部共有272個(gè)引腳,主要包括總線控制信號(hào)、各類元器件接口信號(hào),以及電源:時(shí)鐘控制信號(hào)。本文所使用的芯片運(yùn)行在標(biāo)準(zhǔn)的203MHz,此頻率下系統(tǒng)的運(yùn)算能力已經(jīng)十分強(qiáng)大,可以良好的運(yùn)行Linux/WCE操作系統(tǒng)。普通的平面圖形處理能在肉眼察覺(jué)不到的時(shí)間內(nèi)完成,為實(shí)現(xiàn)抓取觸摸屏動(dòng)作,實(shí)時(shí)判定文字類別打下了硬件基礎(chǔ)。7綦于ARM9綦于ARM9的手寫(xiě)休數(shù)寧識(shí)別技術(shù)研究與實(shí)現(xiàn)0M[1:O]=00Ox6000-0000Ox4800-0000Ox4000一00000x400000000x3800一0000Ox3000_00000xlooO_0000Ox0800—0000Ox0000_0000圖2—3系統(tǒng)復(fù)位后的內(nèi)存映射關(guān)系2.2.3液晶及觸摸屏的硬件基礎(chǔ)2.2.3.1.液晶顯示屏電路液晶顯示器是常見(jiàn)的圖形輸出設(shè)備之一,能向用戶提供友好的圖形界面。LCD顯示器通常與幀緩存(FrameBuf.fer)設(shè)備結(jié)合使用,系統(tǒng)定時(shí)將幀緩存中的內(nèi)容輸出到LCD顯示器以刷新屏幕。S3C241O內(nèi)部集成了LCD控制器,支持STN和TFT類型的液晶顯示器。LCD控制器可根據(jù)水平和垂直像素、數(shù)據(jù)線寬度和刷新率編程支持各種需求的屏幕。本文選用320x240像素的5.4寸TFT液晶屏。S3C2410的LCD控制器用來(lái)傳送在幀緩存中的視頻數(shù)據(jù)和產(chǎn)生必要的控制信號(hào)。該控制器由REGBANK(控制寄存器組)、LCDCDMA(專用DMA)、vIDPCS(視頻信號(hào)處理單元)、LPC3600和TIMEGEN(時(shí)序信號(hào)產(chǎn)生單元)組成。其中,REGBANK包含17個(gè)可編程寄存器和幾個(gè)256×16的調(diào)色板存儲(chǔ)器,用來(lái)配置LCD控制器并設(shè)置相應(yīng)的參數(shù);LCDCDMA提供了視頻信號(hào)的快速傳輸通道,自動(dòng)通過(guò)系統(tǒng)總線從系統(tǒng)幀緩存中取出圖形數(shù)據(jù),并傳輸?shù)揭曨l信號(hào)處理單元;VIDPCS將專用DMA中取出的信號(hào)進(jìn)行整形及提高驅(qū)動(dòng)能力處理后,輸出8碩七學(xué)位論文到外部數(shù)據(jù)端口碩七學(xué)位論文到外部數(shù)據(jù)端口VD【23:O】;TIMEGEN和LPC3600產(chǎn)生LCD屏所需要的控制時(shí)序。視頻數(shù)據(jù)通過(guò)LCD數(shù)據(jù)總線傳送,采用DMA方式。控制信號(hào)包括:垂直同步信號(hào)VSYNC、水平同步信號(hào)HsYNC、線結(jié)束信號(hào)LEND、像素時(shí)鐘信號(hào)VCLK和數(shù)據(jù)使能信號(hào)VDEN等。S3C2410支持TFT/STN型的LCD及觸摸屏,但不能直接與它們相連,需要接口板驅(qū)動(dòng)LCD。接口板通過(guò)50腳的插座作為L(zhǎng)CD與觸摸屏接口。LCD接口電路原理圖見(jiàn)圖2—4。圖2—4LCD接口電路圖2.2.3.2觸摸屏硬件原理觸摸屏作為一種特殊的計(jì)算機(jī)外設(shè),提供了目前最簡(jiǎn)單、方便、自然的一種人機(jī)交互手段。它賦予了電子設(shè)備嶄新的面貌,是極富吸引力的全新多媒體交互設(shè)備,具有堅(jiān)固耐用、反應(yīng)速度快、節(jié)省空間、易于交互等許多優(yōu)點(diǎn)。利用這種技術(shù),用戶只要用手指輕輕地觸碰計(jì)算機(jī)顯示屏上的圖形或文字就能實(shí)現(xiàn)對(duì)主機(jī)的操作,從而使人機(jī)交互直截了當(dāng),極大方便了那些不懂電腦操作的用戶。觸摸屏的基本工作原理是:當(dāng)手指或其他物體接觸安裝在顯示器前端的觸摸屏?xí)r,所接觸的位置由觸摸屏控制器以坐標(biāo)形式檢測(cè)到,通過(guò)接口(如RS.232串口)送到CPU,從而確定輸入的信息。電阻式觸摸屏屏體部分是一塊與顯示器表面相匹配的多層復(fù)合薄膜,由一層玻璃或有機(jī)玻璃作為基層,表面涂有一層透明的導(dǎo)電層,上面再蓋有一層外表面經(jīng)硬化處理、光滑防刮的塑料層,它的內(nèi)表面也涂有一層透明導(dǎo)電層。導(dǎo)電層一般為兩層OTI(氧化銦)透明氧化金屬,最外面的一層OTI涂層作為導(dǎo)電體,第二層OTI則經(jīng)過(guò)精密的網(wǎng)絡(luò)附上橫豎兩個(gè)方向的+5V至0V的電壓場(chǎng),兩層OTI9基于ARM9基于ARM9的于寫(xiě)體數(shù)寧識(shí)別技術(shù)研究與實(shí)現(xiàn)之間有許多細(xì)小(小于千分之一英寸)的透明隔離點(diǎn)把它們隔開(kāi)絕緣。當(dāng)手指接觸屏幕時(shí),兩層OTI導(dǎo)電層就會(huì)出現(xiàn)一個(gè)接觸點(diǎn),電腦同時(shí)檢測(cè)電壓及電流,計(jì)算出觸摸的位置,反應(yīng)速度為一般為10—20ms。手指觸摸屏幕,平常相互絕緣的兩層導(dǎo)電層就在觸摸點(diǎn)位置有了一個(gè)接觸,因其中一面導(dǎo)電層接通Y軸方向的5V均勻電壓場(chǎng),使得偵測(cè)層的電壓由零變?yōu)榉橇?。這種接通狀態(tài)被控制器偵測(cè)到后,進(jìn)行A/D轉(zhuǎn)換,將得到的電壓值與5V相比較轉(zhuǎn)換得到觸摸點(diǎn)的Y軸坐標(biāo)。同理可以得出X軸的坐標(biāo)。以上就是所有電阻技術(shù)觸摸屏共同的基本原理【91。電阻類觸摸屏的關(guān)鍵在于材料的使用。電阻屏根據(jù)引出線數(shù)的多少,分為四線、五線、六線等多種觸摸屏。電阻觸摸屏對(duì)外界來(lái)說(shuō)是一個(gè)完全隔離的工作環(huán)境,因此不怕灰塵和水汽。它可以用任何物體觸摸,比較適合工業(yè)控制領(lǐng)域及辦公室內(nèi)有限人群的使用。電阻觸摸屏的缺點(diǎn)主要是因?yàn)閺?fù)合薄膜的外層一般采用塑膠材料,使用者太用力或使用銳器直擊可能劃傷整個(gè)觸摸屏而導(dǎo)致報(bào)廢。如果損傷在限度之內(nèi),劃傷只會(huì)傷及外導(dǎo)電層。外導(dǎo)電層的劃傷對(duì)于五線電阻觸摸屏來(lái)說(shuō)影響不大,但對(duì)四線電阻觸摸屏來(lái)說(shuō)是致命的。出于成本考慮,本文使用較常見(jiàn)的4線電阻式觸摸屏。2.2.4JTAG接口JTAG(JointTestActionGrouP,聯(lián)合測(cè)試行動(dòng)組)是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議(兼容IEEEll49.1),主要用于芯片內(nèi)部測(cè)試,方便調(diào)試?,F(xiàn)在多數(shù)的高級(jí)器件都支持JTAG協(xié)議,如ARM、DSP、FPGA器件等。標(biāo)準(zhǔn)的JTAG接口有4線:TMs、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。JTAG最初被設(shè)計(jì)用來(lái)對(duì)芯片進(jìn)行測(cè)試,其基本原理是在器件內(nèi)部定義一個(gè)TAP(TestAccessPort測(cè)試訪問(wèn)口),通過(guò)專用的JTAG測(cè)試工具訪問(wèn)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試。JTAG測(cè)試允許多個(gè)器件通過(guò)JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,方便的實(shí)現(xiàn)對(duì)各個(gè)器件的分別測(cè)試?,F(xiàn)在,JTAG接口還常用于實(shí)現(xiàn)ISP(In.systemProgrammable)在線編程,如對(duì)FLASH等器件進(jìn)行編程。ARM9核心系統(tǒng)的JTAG接口引腳的定義見(jiàn)表2.1。表2—1JTAG接口引腳定義信號(hào)功能nTRST 測(cè)試復(fù)位輸入信號(hào)TDI JTAG指令和數(shù)據(jù)寄存器的串行數(shù)據(jù)輸入端TMS 輸入方式選擇TCK 測(cè)試時(shí)鐘TDo JTAG指令和數(shù)據(jù)寄存器串行數(shù)據(jù)輸出端nRESET 目標(biāo)系統(tǒng)復(fù)位信號(hào)2.3手寫(xiě)體數(shù)字識(shí)別系統(tǒng)的軟件基礎(chǔ)10碩.J碩.J二學(xué)位論文2.3.1操作系統(tǒng)的分類及比較2.3.1.1操作系統(tǒng)的主要分類及作用隨著電子工業(yè)的不斷發(fā)展,嵌入式系統(tǒng)的性能變得越來(lái)越強(qiáng)大,在嵌入式系統(tǒng)中使用帶有完整的系統(tǒng)資源管理功能的操作系統(tǒng)成為可能。操作系統(tǒng)的引入,使得各種硬件資源的管理被系統(tǒng)自動(dòng)完成,硬件平臺(tái)之間的差異在一定程度上被屏蔽,應(yīng)用程序的開(kāi)發(fā)變得更加簡(jiǎn)單。據(jù)調(diào)查,目前國(guó)際上共有200多種嵌入式操作系統(tǒng)。從時(shí)間尺度來(lái)說(shuō),嵌入式操作系統(tǒng)大體可以分為實(shí)時(shí)操作系統(tǒng)和非實(shí)時(shí)操作系統(tǒng);根據(jù)工作特性又可以分為多任務(wù)和單任務(wù)操作系統(tǒng)【2們。實(shí)時(shí)是指操作系統(tǒng)在時(shí)間上的響應(yīng)速度以及物理進(jìn)程的真實(shí)時(shí)間。實(shí)時(shí)操作系統(tǒng)在時(shí)間特性上有非常高的要求,一般來(lái)說(shuō),實(shí)時(shí)操作系統(tǒng)如果沒(méi)有在某個(gè)預(yù)定的時(shí)間內(nèi)響應(yīng)某個(gè)事件,系統(tǒng)就會(huì)出錯(cuò)。非實(shí)時(shí)操作系統(tǒng)一般不能嚴(yán)格保證事件響應(yīng)速度,如PC上的Windows平臺(tái)。這類操作系統(tǒng)下的應(yīng)用程序,不同系統(tǒng)資源條件下運(yùn)行速度可能有較大差別,事件的響應(yīng)速度也難以估計(jì),如鍵盤(pán)響應(yīng),可能從幾毫秒到幾秒不等。在一些對(duì)時(shí)間有嚴(yán)格要求的系統(tǒng)中,如高速通信交換、軍工、航天等領(lǐng)域,毫秒級(jí)別的誤差都是不可接受的,在這種情況下就必須使用實(shí)時(shí)操作系統(tǒng)。多任務(wù)是指操作系統(tǒng)上同一時(shí)間內(nèi)能否運(yùn)行多個(gè)用戶程序。傳統(tǒng)的嵌入式系統(tǒng)為了在有限的硬件資源條件下滿足對(duì)性能的要求,一般都是單任務(wù)模式。隨著嵌入式系統(tǒng)硬件性能的提高及軟件復(fù)雜度要求的提升,大多數(shù)嵌入式操作系統(tǒng)向多任務(wù)模式發(fā)展【8】。一般來(lái)說(shuō),嵌入式操作系統(tǒng)都是軟實(shí)時(shí)操作系統(tǒng)。2.3.1.2主流的嵌入式操作系統(tǒng)的比較uC/OS是一個(gè)比較經(jīng)典的實(shí)時(shí)操作系統(tǒng)。它的特點(diǎn)是源代碼公開(kāi)、可移植性好、可裁減、可固化、搶占式內(nèi)核。精簡(jiǎn)小巧是其一大特點(diǎn),對(duì)系統(tǒng)性能沒(méi)有過(guò)高的要求,以ARM7系列芯片為核心的系統(tǒng)就能較好的運(yùn)行。uC/OS的內(nèi)核采用優(yōu)先級(jí)調(diào)度策略,在運(yùn)行就緒條件下總是運(yùn)行優(yōu)先級(jí)最高的任務(wù)。如果任務(wù)之間由于共享資源出現(xiàn)了競(jìng)爭(zhēng)或者死鎖,使用系統(tǒng)提供的信號(hào)量保護(hù)機(jī)制可能會(huì)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)的情況,因此使用uC/OS開(kāi)發(fā)程序時(shí)需要開(kāi)發(fā)者對(duì)所開(kāi)發(fā)的系統(tǒng)有清楚的了解。PalmOS是一種用于掌上電腦的32位操作系統(tǒng),它運(yùn)行在一個(gè)搶占式的多任務(wù)內(nèi)核之上。它的特點(diǎn)是用戶界面層同一時(shí)刻僅允許一個(gè)應(yīng)用程序打開(kāi),進(jìn)入某個(gè)程序必須退出原來(lái)的程序,.結(jié)構(gòu)簡(jiǎn)單,保證了系統(tǒng)的高效和穩(wěn)定。PalmOS專注于移動(dòng)設(shè)備應(yīng)用,它可以高效的使用內(nèi)存和電池能量,便于硬件設(shè)計(jì)者設(shè)計(jì)小巧輕便的移動(dòng)產(chǎn)品。PalmOS軟件開(kāi)發(fā)聯(lián)盟提供了數(shù)萬(wàn)種應(yīng)用程序,包括兼容W6rd、Excel的文檔處理工具、瀏覽器、郵件系統(tǒng)、游戲等等,方便了用戶使用。VxWorks是專門(mén)為實(shí)時(shí)嵌入式系統(tǒng)設(shè)計(jì)開(kāi)發(fā)的實(shí)時(shí)操作系統(tǒng),由美國(guó)風(fēng)河慕于ARM9慕于ARM9的于寫(xiě)體數(shù)字識(shí)別技術(shù)研究與實(shí)現(xiàn)(WindRiver)公司開(kāi)發(fā),其具有以下特點(diǎn):微內(nèi)核、任務(wù)間通信、支持網(wǎng)絡(luò)、支持文件系統(tǒng)及I/O管理、POSIx標(biāo)準(zhǔn)擴(kuò)展、C++以及其他標(biāo)準(zhǔn)支持等等。這些核心功能可以與系統(tǒng)的其他附件及其合作伙伴T(mén)ornado的產(chǎn)品結(jié)合在一起使用,為程序員提供高效的實(shí)時(shí)任務(wù)調(diào)度、中斷管理、任務(wù)間通訊功能,構(gòu)成強(qiáng)大且友好的開(kāi)發(fā)環(huán)境。系統(tǒng)資源被操作系統(tǒng)自動(dòng)管理,釋放了程序員的精力,應(yīng)用程序開(kāi)發(fā)者可以將更多的精力放在功能及應(yīng)用層上。另外Vxwbrks內(nèi)核非常高效,系統(tǒng)可靠性高、實(shí)時(shí)性能非常出色,因此在衛(wèi)星通訊、軍工控制、航空宇航等高端領(lǐng)域被廣泛采用,其操作系統(tǒng)以及以此為基礎(chǔ)的嵌入式開(kāi)發(fā)平臺(tái)在嵌入式軟件開(kāi)發(fā)領(lǐng)域處于領(lǐng)導(dǎo)地位。VxW6rks最大的問(wèn)題就是價(jià)格比較高昂,使得產(chǎn)品的成本直線上升。近年來(lái)風(fēng)河公司開(kāi)始和Linux開(kāi)發(fā)者合作,把自己的傳統(tǒng)優(yōu)勢(shì)用于支持嵌入式Linux平臺(tái)下的軟件開(kāi)發(fā)。Linux是一種計(jì)算機(jī)操作系統(tǒng),其內(nèi)核的名字也叫“Linux”。Linux操作系統(tǒng)是自由和開(kāi)放源代碼軟件中最著名的例子。在開(kāi)始的時(shí)候,Linux只是個(gè)人狂熱愛(ài)好的一種產(chǎn)物,Linux內(nèi)核最初是為英特爾386微處理器設(shè)計(jì)的,但是現(xiàn)在Linux內(nèi)核支持從個(gè)人電腦到大型主機(jī)甚至包括嵌入式系統(tǒng)在內(nèi)的各種硬件設(shè)備,已經(jīng)成為了一種受到廣泛關(guān)注和支持的操作系統(tǒng),包括IBM和惠普在內(nèi)的一些計(jì)算機(jī)業(yè)巨頭也開(kāi)始支持Linux。嚴(yán)格來(lái)講,Linux這個(gè)詞本身只表示Linux內(nèi)核,但是實(shí)際上人們已經(jīng)習(xí)慣了用Linux來(lái)形容整個(gè)基于Linux內(nèi)核,以及使用GNU工程各種工具和數(shù)據(jù)庫(kù)的操作系統(tǒng)(也被稱為GNU/Linux)?;谶@些組件的Linux軟件套件被稱為L(zhǎng)inux發(fā)行版。一般來(lái)講,一個(gè)Linux發(fā)行套件包含大量的軟件,比如軟件開(kāi)發(fā)工具、數(shù)據(jù)庫(kù)、w曲服務(wù)器(例如Apache)、XWindow、桌面環(huán)境(比如GNOME和KDE)、辦公套件(比如OpenOmce.org)等等。和其他的商用Unix系統(tǒng)以及微軟的Windows系統(tǒng)相比,作為自由軟件的Linux具有成本低、安全性高、更加可信賴的優(yōu)勢(shì)。2.3.1.3Linux內(nèi)核結(jié)構(gòu)通常一個(gè)Linux內(nèi)核主要由進(jìn)程調(diào)度、內(nèi)存管理、進(jìn)程通信、網(wǎng)絡(luò)接口、虛擬文件系統(tǒng)組成。進(jìn)程調(diào)度(SCHED)模塊主要控制進(jìn)程對(duì)CPU的訪問(wèn)。所有條件都滿足只等待CPU資源的進(jìn)程稱為可運(yùn)行進(jìn)程。當(dāng)有幾個(gè)等待獲得CPU資源的進(jìn)程需要運(yùn)行時(shí),Linux使用比較簡(jiǎn)單的基于優(yōu)先級(jí)的調(diào)度算法選擇新的進(jìn)程。內(nèi)存管理(MM)模塊統(tǒng)一管理系統(tǒng)的所有硬件內(nèi)存,負(fù)責(zé)內(nèi)存的分配、.回收以及各個(gè)進(jìn)程間的主內(nèi)存共享。Linux的內(nèi)存管理支持虛擬內(nèi)存,即在計(jì)算機(jī)中運(yùn)行的程序,其代碼、數(shù)據(jù)、堆棧的總量可以超過(guò)實(shí)際內(nèi)存的大小,操作系統(tǒng)自動(dòng)把程序當(dāng)前需要使用的模塊放到內(nèi)存中,其他部分放在磁盤(pán)里,由操作系統(tǒng)自動(dòng)完成內(nèi)存與磁盤(pán)的數(shù)據(jù)交換。這樣程序可以申請(qǐng)比實(shí)際還要多的內(nèi)存。內(nèi)存12碩.J碩.J:學(xué)位論文管理模塊從邏輯上分為硬件無(wú)關(guān)模塊和硬件相關(guān)模塊。硬件無(wú)關(guān)模塊提供了進(jìn)程的映射和邏輯內(nèi)存的對(duì)換;硬件相關(guān)模塊則為內(nèi)存管理提供虛擬的接口,進(jìn)行實(shí)際的物理操作。進(jìn)程間通信(IPC)對(duì)進(jìn)程間的各種通信機(jī)制提供支持。網(wǎng)絡(luò)接口(NET)提供對(duì)各種網(wǎng)絡(luò)標(biāo)準(zhǔn)的存取和各種網(wǎng)絡(luò)硬件的支持。網(wǎng)絡(luò)接口可分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動(dòng)程序。網(wǎng)絡(luò)協(xié)議部分負(fù)責(zé)實(shí)現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議。網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)與硬件設(shè)備通信,根據(jù)具體硬件的不同而變化。虛擬文件系統(tǒng)(VFS)為所有的設(shè)備提供統(tǒng)一的接口,隱藏各種硬件的具體細(xì)節(jié)。虛擬文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設(shè)備驅(qū)動(dòng)程序。邏輯文件系統(tǒng)主要是Linux所支持的文件系統(tǒng)如ext2、fat等,VFS支持?jǐn)?shù)10種不同的文件系統(tǒng):設(shè)備驅(qū)動(dòng)程序是為每一種硬件控制器所編寫(xiě)的具體設(shè)備驅(qū)動(dòng)程序并虛擬為文件概念。對(duì)于處于中心位置的進(jìn)程,所有其他子系統(tǒng)都依賴于它,因?yàn)槊總€(gè)子系統(tǒng)都需要掛起或恢復(fù)進(jìn)程。一般情況下,當(dāng)一個(gè)進(jìn)程等待硬件操作完成時(shí),它被掛起;當(dāng)操作真正完成時(shí),進(jìn)程被恢復(fù)執(zhí)行。例如,當(dāng)一個(gè)進(jìn)程通過(guò)網(wǎng)絡(luò)發(fā)送一條消息時(shí),網(wǎng)絡(luò)接口被掛起,并發(fā)送進(jìn)程消息,直到硬件成功地完成消息的發(fā)送。當(dāng)消息被成功的發(fā)送出去以后,網(wǎng)絡(luò)接口給進(jìn)程返回一個(gè)代碼,表示操作的成功或者失敗,網(wǎng)絡(luò)接口恢復(fù)。其他子系統(tǒng)也有類似過(guò)程。2.3.1.4最小化的Linux核心組成Linux最大的特點(diǎn)是遵守GPL聲明,可以自由傳播與修改。Linux操作系統(tǒng)的微內(nèi)核與模塊化結(jié)構(gòu)提供給用戶很強(qiáng)的可裁減性。可以把Linux操作系統(tǒng)看成一棵樹(shù),存儲(chǔ)器管理、任務(wù)調(diào)度、定時(shí)器服務(wù)構(gòu)成了樹(shù)的主干,其它的驅(qū)動(dòng)程序、用戶接口程序及應(yīng)用程序便是葉子,使得Linux枝繁葉茂具有各種豐富的功能【20J。最小的嵌入式Linux操作系統(tǒng)僅需要以下關(guān)鍵模塊:(1)系統(tǒng)上電引導(dǎo)程序(2)Linux微內(nèi)核,包括內(nèi)存管理、任務(wù)調(diào)度、定時(shí)器服務(wù)等,Linux的關(guān)鍵算法都在于此(3)系統(tǒng)初始化程序在此基礎(chǔ)上添加以下模塊可以構(gòu)成一個(gè)最小系統(tǒng)的應(yīng)用:(4)相關(guān)硬件驅(qū)動(dòng)程序(5).一個(gè)基本的應(yīng)用程序 通常使用的Linux操作系統(tǒng)是在最小化的模塊之上,添加各種驅(qū)動(dòng)程序、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議、用戶接口等各種模塊完成的。一個(gè)好的系統(tǒng)必須要有一個(gè)經(jīng)過(guò)測(cè)試的適合硬件的健壯的核心。因此下面本文將進(jìn)行Linux的最小內(nèi)核的配置與移植,并進(jìn)行測(cè)試。然后逐個(gè)加入文件系統(tǒng)、13基于ARM9基于ARM9的手寫(xiě)體數(shù)字識(shí)別技術(shù)研究與實(shí)現(xiàn)觸摸屏驅(qū)動(dòng)等周邊設(shè)備的支持,為最終的程序運(yùn)行搭建好環(huán)境。2.3.2搭建系統(tǒng)移植編程環(huán)境一般的Linux程序開(kāi)發(fā)都是以本地的方式進(jìn)行開(kāi)發(fā)與調(diào)試,程序的運(yùn)行場(chǎng)地就是開(kāi)發(fā)所用的計(jì)算機(jī)。這種方式不適合嵌入式系統(tǒng)的開(kāi)發(fā),因?yàn)榍度胧较到y(tǒng)本身資源有限,不能運(yùn)行開(kāi)發(fā)與調(diào)試工具,沒(méi)有自主開(kāi)發(fā)能力。所以嵌入式Linux程序開(kāi)發(fā)一般采用交叉編譯的方式,在宿主機(jī)上(通常是PC)開(kāi)發(fā)并編譯程序,將結(jié)果下載到目標(biāo)板上運(yùn)行。開(kāi)發(fā)與運(yùn)行的環(huán)境不同,需要交叉編譯是嵌入式系統(tǒng)開(kāi)發(fā)的主要特點(diǎn)之一。由于宿主機(jī)與目標(biāo)機(jī)的CPU一般不相同,宿主機(jī)一般為Intelx86體系,而目標(biāo)機(jī)為ARM體系結(jié)構(gòu),所以在宿主機(jī)開(kāi)發(fā)編譯程序時(shí)需要使用交叉編譯工具包。開(kāi)發(fā)時(shí)使用宿主機(jī)上的交叉編譯、匯編及鏈接工具將應(yīng)用程序轉(zhuǎn)換生成與硬件CPU特征有關(guān)的只能在目標(biāo)機(jī)上執(zhí)行的二進(jìn)制代碼,然后將此可執(zhí)行文件下載到目標(biāo)機(jī)上運(yùn)行,開(kāi)發(fā)時(shí)以上步驟交替結(jié)合進(jìn)行。本文使用Windows下的超級(jí)終端,通過(guò)串口與目標(biāo)機(jī)相連接,同時(shí)啟用以太網(wǎng)口連接方便調(diào)試。編譯器選擇Linux下的自由軟件GNUGCC,它是Qt程序推薦的編譯工具,可以完成幾乎所有知名CPU的交叉編譯及調(diào)試。GCC的全稱是GNUCompilerCollection,支持對(duì)C、C++、objective.C、JA、,AFortran和Ada程序的編譯。GNU交叉編譯工具包主要包括以下幾個(gè)部分:(1)目標(biāo)系統(tǒng)的二進(jìn)制工具binutils,其中包括匯編器as、鏈接器ld等(2)目標(biāo)系統(tǒng)的C編譯器GCC和C++編譯器G++(3)目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)c庫(kù)glibc(4)目標(biāo)系統(tǒng)的Linux內(nèi)核頭文件有兩種方式可以建立交叉編譯環(huán)境:一種是從網(wǎng)上下載工具鏈的各個(gè)組件如binutils、GCC、G++、glibc、Linux內(nèi)核等的源代碼,重新編譯生成最終程序;另外可以直接從網(wǎng)上下載已經(jīng)編譯好的針對(duì)ARM與Linux平臺(tái)的工具。為簡(jiǎn)化起見(jiàn),本文直接下載編譯好了的3.32版的GCC, 將相關(guān)文件arm.1inux.gcc.3.32.tar.bz2安裝到目錄/user/local/arm/3.32/bin下,然后修改并增加環(huán)境變量,添加目錄設(shè)置Pathmunge/user/local/arm/3.32/bin。這樣在以后編譯程序或內(nèi)核時(shí)會(huì)自動(dòng)使用已經(jīng)安裝好的工具鏈進(jìn)行編譯。2.3.3移植最小化的Linux內(nèi)核2.3.3.1BootLoader的作用 在上電及復(fù)位后,ARM系統(tǒng)從地址Ox00000000處開(kāi)始執(zhí)行。本文將NORFLASH映射到這個(gè)地址,而在這個(gè)地址處安排的就是系統(tǒng)的引導(dǎo)裝載程序BootLoader。BootLoader是系統(tǒng)加電后在操作系統(tǒng)內(nèi)核運(yùn)行之前執(zhí)行的一段代碼。這段代碼將初始化硬件設(shè)備,建立內(nèi)存空間的映射圖,將內(nèi)核映像文件和文件系14碩上學(xué)位論文統(tǒng)從碩上學(xué)位論文統(tǒng)從FLASH復(fù)制到RAM中,將系統(tǒng)的軟硬件環(huán)境調(diào)整到一個(gè)合適的狀態(tài),然后跳轉(zhuǎn)到操作系統(tǒng)內(nèi)核的入口點(diǎn)執(zhí)行,開(kāi)始啟動(dòng)操作系統(tǒng)。BootLoader包含兩種不同的操作模式:?jiǎn)?dòng)加載模式和下載模式【47】。啟動(dòng)加載模式是系統(tǒng)正常啟動(dòng)時(shí)的默認(rèn)模式,此模式下BootLoader從目標(biāo)機(jī)器的FLASH上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過(guò)程用戶不進(jìn)行干預(yù)。下載模式下,BootLoader加入了Xmodem與tftp等通信協(xié)議模塊,從而目標(biāo)機(jī)可以通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從宿主機(jī)下載內(nèi)核映像、根文件系統(tǒng)映像、應(yīng)用程序等等,能夠?yàn)榻K端用戶提供一個(gè)基于命令行的操作接口。BootLoader是嚴(yán)重依賴于硬件而實(shí)現(xiàn)的,一般將B00tLoader分為stagel和stage2兩大部分。與CPU體系結(jié)構(gòu)有關(guān)的代碼通常放在第一部分中,一般使用匯編語(yǔ)言完成,以保證代碼的簡(jiǎn)潔與高效。第二部分使用C語(yǔ)言編寫(xiě),保證代碼的可讀性與易移植性,以實(shí)現(xiàn)更加復(fù)雜的功能。2.3.3.2B00tLoader第一階段工作stagel是B00tLoader一開(kāi)始就執(zhí)行的操作,其目的是為stage2的執(zhí)行以及隨后的內(nèi)核的執(zhí)行,設(shè)置好一些基本的硬件環(huán)境。主要包括以下步驟:(1)屏蔽所有的中斷。為中斷提供服務(wù)的通常是操作系統(tǒng),因此在執(zhí)行Bootloader的過(guò)程中可以不響應(yīng)任何中斷。屏蔽中斷通過(guò)寫(xiě)CPU的中斷屏蔽寄存器來(lái)完成。(2)設(shè)置CPU的時(shí)鐘頻率和速度。(3)初始化RAM,設(shè)置系統(tǒng)的內(nèi)存控制器的功能寄存器和各內(nèi)存庫(kù)控制寄存器等。(4)為加載stage2準(zhǔn)備RAM空間。(5)拷貝stage2至0RAM中。(6)跳轉(zhuǎn)到stage2的入口點(diǎn)。2.3.3.3BootLoader第二階段工作stage2的主要的功能是通過(guò)串口下載Linux內(nèi)核到目標(biāo)板上,主要包括以下幾個(gè)步驟:(1)初始化本階段要使用到的硬件設(shè)備。這通常包括:初始化至少一個(gè)串口,以便和終端用戶進(jìn)行信息交互,初始化計(jì)時(shí)器。(2)檢測(cè)系統(tǒng)的內(nèi)存映射。所謂內(nèi)存映射就是指在整個(gè)物理地址空間中有哪些地址范圍被分配到尋址系統(tǒng)的RAM單元.。 (3)加載內(nèi)核映像和根文件系統(tǒng),將其從FLASH讀入到RAM中。這里包括兩個(gè)方面:內(nèi)核映像所占用的內(nèi)存范圍;根文件系統(tǒng)所占用的內(nèi)存范圍。在規(guī)劃內(nèi)存占用的布局時(shí),主要考慮基地址和映像的大小兩個(gè)方面。(4)設(shè)置內(nèi)核的啟動(dòng)參數(shù)。15基于ARM9基于ARM9的手寫(xiě)體數(shù)字識(shí)別技術(shù)研究與實(shí)現(xiàn)(5)調(diào)用內(nèi)核。Bootloader調(diào)用Linux內(nèi)核的方法是直接跳轉(zhuǎn)到內(nèi)核的第一條指令處。將內(nèi)核映像解壓拷貝到指定位置,然后設(shè)置好Linux內(nèi)核啟動(dòng)的參數(shù)后,就可以啟動(dòng)Linux內(nèi)核了。2.3.3.4根據(jù)硬件配置Linux最小系統(tǒng)并移植上板內(nèi)核是操作系統(tǒng)的核心程序,主要提供進(jìn)程管理、內(nèi)存管理、設(shè)備驅(qū)動(dòng)、文件系統(tǒng)、網(wǎng)絡(luò)管理等核心功能。Linux系統(tǒng)采用的是單一內(nèi)核結(jié)構(gòu),操作系統(tǒng)中所有的系統(tǒng)相關(guān)功能都被封裝在內(nèi)核中,他們與外部程序處于不同的內(nèi)存地址空間中,程序只有通過(guò)系統(tǒng)調(diào)用(systemcall)來(lái)訪問(wèn)內(nèi)存結(jié)構(gòu)。Linux支持模塊的動(dòng)態(tài)裝入和卸載,不必全部靜態(tài)的編譯進(jìn)內(nèi)核中。本文采用的Linux內(nèi)核版本號(hào)為2.4.2。根據(jù)前文所述,配置好BootLoader及內(nèi)存映射關(guān)系后,編譯Linux模塊下載后運(yùn)行即可。2.3.4掛載文件系統(tǒng)2.3.4.1Linux文件系統(tǒng)特點(diǎn)及加載方式Linux的重要特征之一就是支持多種文件系統(tǒng)。這樣它更加靈活并可以和其它操作系統(tǒng)共存。Linux已經(jīng)支持十多種文件系統(tǒng),包括ext、ext2、minix、umsdos、msdos、Vfat、proc、smb、ncp、is09660、sysV、hpfb、jf.fS、carmfs、nfs、yaf.fs等。毫無(wú)疑問(wèn),Linux所支持的操作系統(tǒng)今后還會(huì)增加。Linux并不使用設(shè)備標(biāo)識(shí)符(如設(shè)備號(hào)或驅(qū)動(dòng)器名稱)來(lái)訪問(wèn)獨(dú)立文件系統(tǒng),而是將整個(gè)文件系統(tǒng)表示成單一實(shí)體的層次樹(shù)結(jié)構(gòu)進(jìn)行訪問(wèn)。Linux每安裝一個(gè)文件系統(tǒng)時(shí),都會(huì)將其加入到文件系統(tǒng)層次樹(shù)中。每次安裝時(shí),文件系統(tǒng)將被連接到一個(gè)被稱為安裝目錄或安裝點(diǎn)的目錄上,文件系統(tǒng)中的內(nèi)容將會(huì)取代此目錄中原來(lái)的內(nèi)容。當(dāng)文件系統(tǒng)被卸載時(shí),安裝目錄中原有的文件將再次出現(xiàn)。當(dāng)磁盤(pán)初始化時(shí),磁盤(pán)中將添加一個(gè)描述磁盤(pán)物理邏輯構(gòu)成的分區(qū)結(jié)構(gòu)。包含文件系統(tǒng)的設(shè)備稱為塊設(shè)備,文件系統(tǒng)將數(shù)據(jù)組織成目錄、軟連接等存在于物理塊設(shè)備中的邏輯層次結(jié)構(gòu)。Linux系統(tǒng)將塊設(shè)備看成簡(jiǎn)單的線性組合關(guān)系,并不關(guān)心磁盤(pán)設(shè)備真正的底層物理結(jié)構(gòu)與邏輯。塊設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)將Linux發(fā)來(lái)的塊操作轉(zhuǎn)換為實(shí)際的物理磁盤(pán)操作,為L(zhǎng)inux文件操作提供服務(wù)。塊設(shè)備驅(qū)動(dòng)中將保存磁盤(pán)的磁道、扇區(qū)、柱面數(shù)、位置等相關(guān)信息。不同的物理設(shè)備有不同信息記錄,但是在Linux系統(tǒng)看來(lái),這些都是一樣的。因此只要驅(qū)動(dòng)設(shè)置正確,通過(guò)塊設(shè)備的掛載,Linux可以操作各種各樣的記錄設(shè)備,甚至是遠(yuǎn)程的基于網(wǎng)絡(luò)的設(shè)備,而不管他們的物理狀態(tài)。文件系統(tǒng)中的文件是數(shù)據(jù)的集合,不僅包括用戶正常記錄的數(shù)據(jù),還包括文件系統(tǒng)的結(jié)構(gòu)信息,以及Linux系統(tǒng)中所見(jiàn)到的文件名、目錄、軟連接、文件保護(hù)與校驗(yàn)信息等內(nèi)容。此外文件中還要保存安全信息以便保持操作系統(tǒng)的基本完16碩{碩{:學(xué)位論文整性。所有這些數(shù)據(jù)被封裝到“文件”單元中提供給用戶使用。2.3.4.2加載YAFFS文件系統(tǒng)本文的系統(tǒng)掛載了NANDFLASH,其特點(diǎn)是容量大,存儲(chǔ)區(qū)可能有壞點(diǎn),以頁(yè)面為單位進(jìn)行存取。針對(duì)這些特點(diǎn),YAFFS文件系統(tǒng)進(jìn)行了針對(duì)性的加強(qiáng)。它是日志結(jié)構(gòu)的文件系統(tǒng),提供平衡損耗與掉電保護(hù)功能,可以有效避免隨機(jī)掉電對(duì)文件系統(tǒng)一致性與完整性的損壞。YAFFS采用了多策略混合的垃圾回收算法,結(jié)合了貪心算法的高效性和隨機(jī)算法的平均性,達(dá)到了兼顧損耗平均和系統(tǒng)開(kāi)銷的目的。YAFFS將文件組織成固定大小(512字節(jié))的數(shù)據(jù)段。每個(gè)文件都有一個(gè)頁(yè)面專門(mén)存放文件頭,文件頭保存了文件的模式、所有者id、組id、長(zhǎng)度、文件名等信息。為了提高文件數(shù)據(jù)塊的查找速度,文件的數(shù)據(jù)段被組織成樹(shù)形結(jié)構(gòu)。YAFFS在進(jìn)行改寫(xiě)操作時(shí)總是先寫(xiě)入新的數(shù)據(jù)塊,然后將舊的數(shù)據(jù)塊從文件中刪除。NANDFLASH物理存取是以頁(yè)面為單位進(jìn)行的,因此YAFFS文件系統(tǒng)也將文件組織成固定大小的數(shù)據(jù)段,利用NANDFLASH所提供的每個(gè)頁(yè)面16字節(jié)的備用空間存放校驗(yàn)及文件結(jié)構(gòu)信息,以實(shí)現(xiàn)錯(cuò)誤檢測(cè)及壞塊處理的功能,同時(shí)提高了文件系統(tǒng)的操作速度。YAFFS使用頁(yè)面?zhèn)溆每臻g的ECC進(jìn)行錯(cuò)誤檢測(cè),出現(xiàn)多次錯(cuò)誤后此頁(yè)面便會(huì)停止使用。YAFFS充分利用了NANDFLAsH所提供的每個(gè)頁(yè)面l6字節(jié)的備用存儲(chǔ)空間,參考了SmartMedia的設(shè)定,備用空間中的6字節(jié)被用作頁(yè)面數(shù)據(jù)的ECC,2個(gè)字節(jié)分別用作塊狀態(tài)字和數(shù)據(jù)狀態(tài)字,其余的8字節(jié)用來(lái)存放文件系統(tǒng)的組織信息,即元數(shù)據(jù)。由于文件系統(tǒng)的基本組織信息被保存在頁(yè)面的備份空間中,因此,在文件系統(tǒng)加載時(shí)只需要掃描各個(gè)頁(yè)面的備份空間,即可建立起整個(gè)文件系統(tǒng)的結(jié)構(gòu),加快了文件系統(tǒng)的加載速度。在內(nèi)核中建立YAFFS目錄fs/yaffs,并把yaffs代碼復(fù)制到此目錄下。修改Kconng和makefile,使得可以配置YAFFS。在YAFFS目錄中生成Makenle和Kconfig文件。配置內(nèi)核時(shí)選中MTD支持和YAFFS支持,編譯內(nèi)核并把內(nèi)核下載到開(kāi)發(fā)板的FLASH上,制作根文件系統(tǒng)并下載到FLASH指定位置。這樣,YAFFS文件系統(tǒng)便被安裝到嵌入式Linux系統(tǒng)中了。2.3.5觸摸屏加載與調(diào)試2.3.5.1Linux中觸摸屏的加載方式Linux下的觸摸屏驅(qū)動(dòng)程序主要都在/kernel/drivers/char/s3c2410.ts.c文件中。在觸摸屏設(shè)備驅(qū)動(dòng)程序中,全局變量structTSDEVtsdev用來(lái)保存觸摸屏的相關(guān)參數(shù)、等待處理的消息隊(duì)列、當(dāng)前采樣數(shù)據(jù)、上一次采樣數(shù)據(jù)等信息。TsRET結(jié)構(gòu)體中的信息就是驅(qū)動(dòng)程序提供給上層應(yīng)用程序使用的信息,用來(lái)存儲(chǔ)觸摸屏的返回值。上層應(yīng)用程序通過(guò)讀接口,從底層驅(qū)動(dòng)中讀取信息,并根據(jù)得到的值進(jìn)行其他方面的操作?;贏RM9基于ARM9的于寫(xiě)體數(shù)寧識(shí)別技術(shù)研究‘j實(shí)現(xiàn)TSDEV結(jié)構(gòu)用于記錄觸摸屏運(yùn)行的各種狀態(tài),PenStatus包括PENUP、PENDOWN和PENFLEETING。buf【MAXTSBUF】是用來(lái)存放數(shù)據(jù)信息的事件隊(duì)列,head、tail分別指向事件隊(duì)列的頭和尾。程序中的事件隊(duì)列是一個(gè)環(huán)形結(jié)構(gòu),當(dāng)有事件加入時(shí),隊(duì)列頭加一,當(dāng)有事件被取走時(shí),隊(duì)列尾加一,當(dāng)頭尾位置指針一致時(shí)讀取該事件的信息,進(jìn)程會(huì)被安排進(jìn)入睡眠。WQ等待隊(duì)列,包含一個(gè)鎖變量和一個(gè)正在睡眠進(jìn)程鏈表。當(dāng)有好幾個(gè)進(jìn)程都在等待某件事時(shí),Linux會(huì)把這些進(jìn)程記錄到這個(gè)等待隊(duì)列。它的作用是當(dāng)沒(méi)有筆觸事件發(fā)生時(shí),阻塞上層的讀操作,直到有筆觸事件發(fā)生。隊(duì)列使用自旋鎖,自旋鎖是基于共享變量來(lái)工作的,函數(shù)可以通過(guò)給某個(gè)變量設(shè)置一個(gè)特殊值來(lái)獲得鎖。而其他需要鎖的函數(shù)則會(huì)循環(huán)查詢鎖是否可用。MAXTSBUF的值為16,即在沒(méi)有被讀取之前,系統(tǒng)緩沖區(qū)中最多可以存放16個(gè)筆觸數(shù)據(jù)信息。2.3.5.2加載觸摸屏的主要步驟首先在驅(qū)動(dòng)模塊初始化函數(shù)中,除了對(duì)驅(qū)動(dòng)的字符設(shè)備的注冊(cè)外,還要對(duì)中斷進(jìn)行申請(qǐng)。一般需要申請(qǐng)兩個(gè)觸摸屏相關(guān)的中斷。一個(gè)是IRQTC中斷,該中斷在筆按下時(shí),對(duì)應(yīng)管腳產(chǎn)生表示中斷的低電平信號(hào);另一個(gè)是IRQADCDONE中斷,該中斷是當(dāng)芯片內(nèi)部A/D轉(zhuǎn)換結(jié)束后,通知中斷控制器產(chǎn)生中斷,這時(shí)就可以去讀取轉(zhuǎn)換得到的數(shù)據(jù)。當(dāng)觸摸屏被按下后,就會(huì)觸發(fā)中斷,這時(shí)Linux系統(tǒng)會(huì)調(diào)用申請(qǐng)中斷時(shí)附帶的s3c2410isrtc中斷回調(diào)函數(shù),該函數(shù)中判斷若為筆抬起則啟動(dòng)x軸坐標(biāo)的A/D轉(zhuǎn)換。轉(zhuǎn)換完畢后會(huì),會(huì)觸發(fā)產(chǎn)生ADC中斷,這時(shí)就會(huì)調(diào)用申請(qǐng)中斷時(shí)附帶的s3c2410isradc中斷回調(diào)函數(shù),在該函數(shù)中進(jìn)行判斷。若x軸坐標(biāo)轉(zhuǎn)換結(jié)束馬上進(jìn)行y軸坐標(biāo)的A/D坐標(biāo)轉(zhuǎn)換;若y軸坐標(biāo)轉(zhuǎn)換結(jié)束,則重新回到等待中斷模式,然后將坐標(biāo)值寫(xiě)入環(huán)形緩沖區(qū),并環(huán)形等待隊(duì)列中的進(jìn)程。將ADC觸摸屏控制寄存器ADCTSC的第8位設(shè)為1,使得筆抬起也能產(chǎn)生中斷信號(hào)。將修改后的觸摸屏驅(qū)動(dòng)加入Linux內(nèi)核,重新編譯下載,觸摸屏便能將信號(hào)送給Linux系統(tǒng)了。2.3.6準(zhǔn)備功能層軟件開(kāi)發(fā)工作進(jìn)行到這里,硬件平臺(tái)及底層的軟件開(kāi)發(fā)基本完成,可以開(kāi)始準(zhǔn)備應(yīng)用層及功能層的軟件設(shè)計(jì)開(kāi)發(fā)了。為了減小開(kāi)發(fā)及調(diào)試的難度,本文所設(shè)計(jì)的系統(tǒng)以識(shí)別0—9十個(gè)阿拉伯?dāng)?shù)字為主要目標(biāo),在實(shí)現(xiàn)基本的阿拉伯?dāng)?shù)字辨別的基礎(chǔ)上再考慮擴(kuò)充識(shí)別對(duì)象的范圍。手寫(xiě)辨別程序最終目的是在ARM.Linux平臺(tái)運(yùn)行,其中邏輯辨別模塊需要在PC.Window平臺(tái)上編程并測(cè)試,然后將完成的模塊嵌入主程序,移植到ARM.Linux平臺(tái)下。Qt的一個(gè)重要特點(diǎn)就是它的跨平臺(tái)特性,所有的Qt庫(kù)函數(shù)都有Windows和Linux版本,用戶所寫(xiě)的應(yīng)用程序基本不需要改動(dòng)就能夠在Linux和Window平臺(tái)移植運(yùn)行。得益于Qt的這一良好特性,本文18碩十學(xué)位論文所要編寫(xiě)的大量應(yīng)用程序不需要考慮太多就能達(dá)到程序與硬件平臺(tái)的無(wú)關(guān)性,同碩十學(xué)位論文所要編寫(xiě)的大量應(yīng)用程序不需要考慮太多就能達(dá)到程序與硬件平臺(tái)的無(wú)關(guān)性,同時(shí)在PC和Linux上運(yùn)行。所有程序在編寫(xiě)時(shí)不調(diào)用平臺(tái)特有函數(shù),用純C/C++及Qt庫(kù)完成,以減少硬件平臺(tái)的不同帶來(lái)的影響,減小軟件開(kāi)發(fā)工作量。程序的總體框架見(jiàn)圖2.5:圖2—5程序總體結(jié)構(gòu)本文的工作路線如下:先設(shè)計(jì)并實(shí)現(xiàn)圖像預(yù)處理模塊,然后利用此模塊在PC上將測(cè)試用圖像文件轉(zhuǎn)換成標(biāo)準(zhǔn)的數(shù)組,作為下一模塊的輸入。然后在PC上設(shè)計(jì)并實(shí)現(xiàn)圖像識(shí)別邏輯模塊,將上一步轉(zhuǎn)換后的圖像輸入此模塊,調(diào)試并得到理想的結(jié)果。當(dāng)邏輯判斷滿足預(yù)定要求時(shí),將此模塊變成代碼,嵌入到Qt的主程序當(dāng)中,最后實(shí)現(xiàn)觸摸屏動(dòng)作處理模塊,形成從觸摸屏動(dòng)作生成圖像再變成歸一化數(shù)據(jù)最后到自動(dòng)識(shí)別的程序流程,移植到ARM.Linux平臺(tái)上完成數(shù)字字符識(shí)別功能。19基于ARM9基于ARM9的手寫(xiě)體數(shù)寧識(shí)別技術(shù)研究與實(shí)現(xiàn)第3章手寫(xiě)體數(shù)字識(shí)別系統(tǒng)圖像預(yù)處理的研究與實(shí)現(xiàn)3.1跨平臺(tái)編程環(huán)境Qt3.1.1選擇GUI作為交互方式在系統(tǒng)操控方式中,業(yè)界一直存在著2大流派,既CLI(CommandLineInstruction)與GUI(GraphicUserInterfaceGUI)。CLI的意思是使用命令行及指令輸入的方式與計(jì)算機(jī)系統(tǒng)發(fā)生互動(dòng);而GUI是指通過(guò)圖形、對(duì)話框等模式與操作者完成信息交互,如普通個(gè)人電腦上裝的windows操作系統(tǒng)就是GUI形式的代表者。不可否認(rèn),在當(dāng)今的信息科技條件下,只有CLI方式才能最大可能的與計(jì)算機(jī)系統(tǒng)完成信息的交互,真正的獲得“完全的系統(tǒng)控制權(quán)",因此大多數(shù)科技開(kāi)發(fā)人員都使用CLI方式以獲得更大的操控自由度。本文開(kāi)發(fā)所使用的系統(tǒng)平臺(tái)是Linux,Linux的強(qiáng)項(xiàng)在于其內(nèi)核的穩(wěn)定、強(qiáng)大、高效。與windows平臺(tái)對(duì)比,圖形界面從來(lái)不是Linux的優(yōu)勢(shì)所在。但是對(duì)于普通的使用者以及一般的外圍開(kāi)發(fā)人員,圖形GUI方式由于其簡(jiǎn)單直觀,無(wú)疑更容易被接受,甚至在某些場(chǎng)合,圖形操作方式是必須的。windows操作系統(tǒng)的成功與廣泛流行,并不是由于其技術(shù)的領(lǐng)先性,很大程度上是其圖形化的操作界面受到大量的普通計(jì)算機(jī)使用者的青睞而造成的。因此一個(gè)系統(tǒng)要走入普通用戶手中,一個(gè)友好直觀的GUI系統(tǒng)是不可缺少的。本文所要完成的字符識(shí)別功能與圖形密切相關(guān),目標(biāo)使用對(duì)象為普通的操作人員,因此使用GUI方式更能滿足要求。3.1.2主流的嵌入式GUI在嵌入式系統(tǒng)硬件性能不斷提高的今天,圖形用戶界面的地位變得越來(lái)越重要,它的存在為使用者提供了友好便利的人機(jī)界面。但是嵌入式GUI與桌面機(jī)系統(tǒng)GUI又有區(qū)別,主要是因?yàn)榍度胧较到y(tǒng)硬件資源一般有限而GUI操作又屬于比較消耗資源的一類操作,因此嵌入式GUI要求簡(jiǎn)單、直觀、可靠、占用資源小并且反應(yīng)迅速。同時(shí),嵌入式系統(tǒng)不像標(biāo)準(zhǔn)的PC那樣結(jié)構(gòu)統(tǒng)一,各個(gè)硬件系統(tǒng)之間有較大的差異性及特殊性,因此嵌入式GuI需要具備高度可移植性與可裁剪性,以適應(yīng)不同的硬件條件和使用需求。支持嵌入式Linux操作系統(tǒng)的圖形類庫(kù)和開(kāi)發(fā)系統(tǒng),常見(jiàn)的開(kāi)源版本有以下三種【49】:(1)MicroWindows:著名的開(kāi)放源碼的嵌入式GUI軟件,它的設(shè)計(jì)宗旨是針對(duì)體積小的裝置建立一套先進(jìn)的視窗環(huán)境。MicroWindows能夠在沒(méi)有任何操作系統(tǒng)或其他圖形系統(tǒng)的支持下運(yùn)行,對(duì)裸顯示設(shè)備進(jìn)行直接操作。因此,MicroWindows顯得十分小巧,便于移植到各種硬件和軟件系統(tǒng)上。20碩十學(xué)位論文(2)MiniGUI碩十學(xué)位論文(2)MiniGUI:國(guó)內(nèi)做得比較好的自由軟件項(xiàng)目之一,它可以在以Linux為基礎(chǔ)的應(yīng)用平臺(tái)上提供一個(gè)簡(jiǎn)單可行的MiniGUl支持系統(tǒng)?!靶 笔荕iniGUI的特色,MiniGUI可以應(yīng)用在電視機(jī)頂盒、實(shí)時(shí)控制系統(tǒng)及掌上電腦等諸多場(chǎng)合。由于這是由中國(guó)人自己開(kāi)發(fā)的GUI系統(tǒng),所以對(duì)中文的支持最好。(3)Qt/Embedded:由挪威著名的Trolltech公司開(kāi)發(fā)的面向嵌入式系統(tǒng)的Qt版本。Qt/Embedded類庫(kù)完全采用C++封裝,豐富的控件資源和較好的可移植性是Qt/Embedded最為優(yōu)秀的一方面。它的類庫(kù)接口完全兼容于同版本的Qt.x11,使用X.windows下的開(kāi)發(fā)工具可以直接開(kāi)發(fā)基于Qt/Embedded的應(yīng)用程序GUI界面。3.1.3Qt的特點(diǎn)Qt被設(shè)計(jì)成跨平臺(tái)的開(kāi)發(fā)工具,由Trolltech最初創(chuàng)建并用于LinuX臺(tái)式機(jī)。它支持各種帶有UNIX核心特點(diǎn)的系統(tǒng),其中就包括Linux系統(tǒng),同時(shí)Qt還支持當(dāng)今普通計(jì)算機(jī)上流行的Windows視窗系統(tǒng)。Linux上最流行的桌面環(huán)境KDE就是用Qt編寫(xiě)的,從KDE桌面可以看出Qt提供的是一個(gè)重量級(jí)的圖形開(kāi)發(fā)環(huán)境,使用它可以開(kāi)發(fā)出藝術(shù)級(jí)的GUI效果。 Qt/Embedded以原始Qt為基礎(chǔ),做了許多富有特色的調(diào)整,使之更加適用于嵌入式環(huán)境。Qt/Embedded進(jìn)一步封裝了軟硬件的許多操作細(xì)節(jié),通過(guò)QtAPI與LinuxI/O設(shè)施直接交互,使得熟悉并已經(jīng)適應(yīng)面向?qū)ο缶幊痰娜藛T能夠釋放更多的精力到應(yīng)用上,減少硬件及相關(guān)操作所帶來(lái)的工作量。與其它GuI相比,QtGUI非常快,并且它沒(méi)有分層,這使得Qt/Embedded成為用于運(yùn)行基于Qt的程序的緊湊環(huán)境。其基于C/C++,面向?qū)ο蟮捏w系結(jié)構(gòu)使代碼結(jié)構(gòu)化、可重用并且運(yùn)行快速。Trolltech公司還推出了Qt掌上機(jī)環(huán)境Qtopia。Qtopia提供了一個(gè)基本桌面窗口環(huán)境,該環(huán)境為開(kāi)發(fā)者提供了一個(gè)易于使用的界面,其中包含有全套的個(gè)人信息管理(personalInformationManagement,PIM)應(yīng)用程序、因特網(wǎng)客戶機(jī)、實(shí)用程序等等,在智能手機(jī)、個(gè)人電子消費(fèi)品領(lǐng)域得到了廣泛的應(yīng)用。Qt不僅僅是一個(gè)GUI庫(kù),它以C/C++類庫(kù)的形式,給開(kāi)發(fā)者提供了重量級(jí)2DGUI和輕中量級(jí)3DGUI、多線程管理、文件細(xì)節(jié)封裝、二進(jìn)制級(jí)數(shù)據(jù)交換、數(shù)據(jù)庫(kù)接口、網(wǎng)絡(luò)模塊封裝、XML/Script腳本操作等功能的支持。Qt在系統(tǒng)中的作用,同Xwindow上的Motif、Openwin、GTK等圖形界面庫(kù)和windows平臺(tái)上的MFC、OWL、VCL、ATL類似,而且Qt具有下列突出優(yōu)點(diǎn)【81:(1)優(yōu)良的跨平臺(tái)特性。Qt支持下列操作系統(tǒng):MicrosoftWindows95/98、MicrosoftWindowsNT、Linux、 Solaris、SunOS、HP-UX、DigitalUNIX(O-SF/l,Tru64)、Irix、FreeBSD、BSD/OS、SCO、AIX、0S390、QNX等等。(2)面向?qū)ο筇攸c(diǎn)。Qt的良好封裝機(jī)制使得Qt的模塊化程度非常高,可重用性較好,對(duì)于用戶開(kāi)發(fā)來(lái)說(shuō)是非常方便的。Qt提供了一種稱為信號(hào)/插槽的安某于ARM9某于ARM9的手寫(xiě)體數(shù)字識(shí)兄ll技術(shù)研究與實(shí)現(xiàn)全類型來(lái)替代回調(diào)函數(shù),這使得各個(gè)元件之間的協(xié)同工作變得十分簡(jiǎn)單。(3)豐富的API。Qt包括多達(dá)250個(gè)以上的C++類,還提供基于模板的collections、serialization、11le、I/Odevice、directorymanagement、date/time類。甚至還包括正則表達(dá)式的處理功能。(4)支持2D/3D圖形渲染,支持OpenGL。(5)大量的開(kāi)發(fā)文檔。(6)XML支持。3.1.4選擇Qt的主要原因本文的目標(biāo)是在ARM.Linux平臺(tái)上實(shí)現(xiàn)手寫(xiě)體數(shù)字識(shí)別功能,要實(shí)現(xiàn)這一功能,至少需要完成接受觸摸屏操作、圖像預(yù)處理、數(shù)字信息識(shí)別等功能模塊。要完成以上模塊,就必須在PC上將最核心的數(shù)字信息識(shí)別模塊編程實(shí)現(xiàn)并調(diào)試完畢。數(shù)字信息的識(shí)別算法一般都比較復(fù)雜,直接使用Qt編程進(jìn)行數(shù)學(xué)邏輯運(yùn)算,難度較大并且出錯(cuò)幾率高。因此本文所采用的技術(shù)路線是利用Matlab的快速原型能力,在PC上的Matlab中實(shí)現(xiàn)數(shù)字字符信息識(shí)別判斷功能,然后將此模塊邏輯自動(dòng)生成C代碼,嵌入到Qt主程序當(dāng)中。因此,本文所設(shè)計(jì)的功能模塊需要有跨平臺(tái)運(yùn)行的能力。Qt的最大特點(diǎn)就是跨平臺(tái),Qt庫(kù)將不同操作系統(tǒng)之間的細(xì)節(jié)差別封裝屏蔽,同樣的應(yīng)用程序代碼,幾乎不要改動(dòng)就能在Window與Linux之間移植j使用Qt進(jìn)行編程,將大大減少程序在不同平臺(tái)間移植所需要的工作量。再者Qt提供的庫(kù)函數(shù)在圖像處理,數(shù)據(jù)封裝等方面比MFC強(qiáng)大得多,以Qt為基礎(chǔ)進(jìn)行編程將進(jìn)一步減小開(kāi)發(fā)難度。最后,Qt默認(rèn)的編譯器是著名的GCC工具鏈,對(duì)比微軟集成開(kāi)發(fā)環(huán)境中的編譯器,其對(duì)國(guó)際標(biāo)準(zhǔn)ANSIC的支持要好得多,能夠達(dá)到90%以上。本文需要使用Matlab與LinuxQt聯(lián)合編程,而對(duì)標(biāo)準(zhǔn)C的支持程度在使用幾種開(kāi)發(fā)工具聯(lián)合編程時(shí),直接影響開(kāi)發(fā)的難度及結(jié)果。綜合以上幾點(diǎn),本文最終選擇Qt為開(kāi)發(fā)工具。3.2圖像預(yù)處理程序總體框架字符判斷邏輯模塊的一個(gè)重要特點(diǎn),是調(diào)試完畢的模型對(duì)非訓(xùn)練樣本具有一定的泛化能力(推廣性),即在對(duì)已有測(cè)試樣本進(jìn)行準(zhǔn)確辯識(shí)的基礎(chǔ)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 25年公司項(xiàng)目負(fù)責(zé)人安全培訓(xùn)考試試題附參考答案【能力提升】
- 2024-2025工廠安全培訓(xùn)考試試題答案黃金題型
- 河南省新鄉(xiāng)金太陽(yáng)2025屆高三第二次模擬-歷史試題+答案
- 老年認(rèn)知功能評(píng)估工具-全面剖析
- 移動(dòng)支付技術(shù)在電商中的應(yīng)用-全面剖析
- 幼兒園陪餐服務(wù)人員職責(zé)解析
- 2024-2025學(xué)年度幼兒園教育創(chuàng)新計(jì)劃
- 建筑施工安全管理及保障措施
- 熱交換器性能提升策略-全面剖析
- 九年級(jí)英語(yǔ)學(xué)期總結(jié)與反思計(jì)劃
- 消防更換設(shè)備方案范本
- 2024年環(huán)境影響評(píng)估試題及答案
- 【初中歷史】2024-2025學(xué)年部編版七年級(jí)下學(xué)期歷史中考復(fù)習(xí)提綱
- 《電力建設(shè)工程施工安全管理導(dǎo)則》(nbt10096-2018)
- 全過(guò)程工程咨詢投標(biāo)方案(技術(shù)方案)
- 湖南省2025屆高三九校聯(lián)盟第二次聯(lián)考?xì)v史試卷(含答案解析)
- 家具全屋定制的成本核算示例-成本實(shí)操
- 在線預(yù)訂平臺(tái)在旅行社人力資源管理中的應(yīng)用研究-深度研究
- 暈針暈血的處理及預(yù)防
- 旅拍店合伙人協(xié)議書(shū)范本
- Seminar_帶SPL的安全集成
評(píng)論
0/150
提交評(píng)論