基于嵌入式ARM-Linux的電子相冊設(shè)計(jì)_第1頁
基于嵌入式ARM-Linux的電子相冊設(shè)計(jì)_第2頁
基于嵌入式ARM-Linux的電子相冊設(shè)計(jì)_第3頁
基于嵌入式ARM-Linux的電子相冊設(shè)計(jì)_第4頁
基于嵌入式ARM-Linux的電子相冊設(shè)計(jì)_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

學(xué)士學(xué)位畢業(yè)設(shè)計(jì)(論文)基于嵌入式ARM-Linux的電子相冊設(shè)計(jì)學(xué)生姓名:學(xué)號:指導(dǎo)教師:所在學(xué)院:專業(yè):中國·2013年05月本科畢業(yè)設(shè)計(jì)(論文)任務(wù)書學(xué)生姓名所在班級導(dǎo)師姓名導(dǎo)師職稱論文題目基于嵌入式ARM-Linux的電子相冊設(shè)計(jì)題目分類1.應(yīng)用與非應(yīng)用類:〇工程〇科研〇教學(xué)建設(shè)〇理論分析〇模擬2.軟件與軟硬結(jié)合類:〇軟件〇硬件〇軟硬結(jié)合〇非軟硬件(1、2類中必須各選一項(xiàng)適合自己題目的類型在〇內(nèi)打√)主要研究內(nèi)容及指標(biāo):研究內(nèi)容:以嵌入式硬件設(shè)備為基礎(chǔ),軟件為核心,設(shè)計(jì)一種可插SD卡且方便攜帶的電子相冊。實(shí)現(xiàn)圖片的瀏覽、查找及定時(shí)更換等功能。并對系統(tǒng)的軟、硬件程序設(shè)計(jì)與測試。設(shè)計(jì)要求:繪制硬件原理圖,編制bootloder、硬件驅(qū)動(dòng)及應(yīng)用層軟件;完成畢業(yè)設(shè)計(jì)說明技術(shù)要求:1)通過LED輸出顯示;2)主要采用ARM芯片控制電路、顯示電路、電源電路;3)可隨時(shí)更換相片,具有USB通信功能;4)與PC之間進(jìn)行串行通信;5)可外擴(kuò)SD存儲(chǔ)卡,曾加照片容量。主要參考文獻(xiàn):[1]博韋,西斯特(著),陳莉君,張瓊聲,張宏偉(譯),深入理解LINUX內(nèi)核(第三版),中國電力出版社,2007.9[2]邵貝貝,單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法,清華大學(xué)出版社,2004.11[3]張友德、謝偉毅,單片機(jī)原理與應(yīng)用技術(shù),機(jī)械工業(yè)出版社,2004.3[4]Matthew,N,Stones,R,BeginningLinuxProgramming,ElectronicProducts,2010.6階段規(guī)劃:第一周--第三周查閱和收集課題資料,并分析嵌入式系統(tǒng)的簡要工作過程。第四周--第十周總體方案設(shè)計(jì),繪制電路原理圖,對數(shù)據(jù)分析并設(shè)計(jì)最優(yōu)電路。第十一周--第十五周編程、調(diào)試第十六周--至今整理論文準(zhǔn)備答辯開題時(shí)間完成論文時(shí)間專家審定意見:系主任簽字:年月日注:1.任務(wù)書由指導(dǎo)教師填寫后交給學(xué)生,要求學(xué)生妥善保存。2.此任務(wù)書夾于論文扉頁與論文一并裝訂,作為論文評分依據(jù)之。摘要摘要PAGE———PAGE37—摘要隨著數(shù)碼相機(jī)的盛行,傳統(tǒng)相機(jī)逐漸退出歷史的舞臺。對于數(shù)碼相片的欣賞和擺設(shè),人們一般只能通過PC機(jī),極其不方便。電子相冊正是迎合這種需求,它體積小,能隨時(shí)更換相片,并具有USB傳輸功能,能夠即插即用,擁有較大的存儲(chǔ)空間。本設(shè)計(jì)采用了比較通用的S3C2410系列處理芯片為主芯片和源代碼開放的嵌入linux操作系統(tǒng)共同建立的平臺設(shè)計(jì)了電子相冊系統(tǒng),主要實(shí)現(xiàn)的功能有對多種格式相片在640*480LCD觸摸屏上以幻燈形式播放、USB讀取等功能。該設(shè)計(jì)具有成本低,功能強(qiáng)大等特點(diǎn)。針對nandflash啟動(dòng)的支持,實(shí)現(xiàn)了啟動(dòng)引導(dǎo)程序U-BOOT的修改和移植,以及嵌入式linux內(nèi)核的裁剪和驅(qū)動(dòng)的修改,包括nandflash分區(qū)、LCD驅(qū)動(dòng)修改等;在軟件開發(fā)的同時(shí),我們根據(jù)該項(xiàng)目設(shè)計(jì)需求,完成了電路原理圖和PCB版圖的設(shè)計(jì)。關(guān)鍵詞:S3C2410;nandflash;LCD觸摸屏;linuxABSTRACTABSTRACTWiththeprevalenceofdigitalcamera,traditionalcameragraduallywithdrawfromthestageofhistory.Fordigitalphotoappreciationanddecoration,peoplegenerallyonlythroughthePCmachine,isnotveryconvenient.Electronicphotoalbumistomeetthisdemand,itissmallinsize,canbereplacedatanytimeandphoto,withUSBtransmissionfunction,canplugandplay,hasalargerstoragespace.ThisdesignusesthejointestablishmentofembeddedoperatingsystemoflinuxseriesS3C2410chipasthemainchip,andopensourcegeneralplatformdesignofelectronicalbumsystem,themainfunctionofavarietyofphotosinthe640*480LCDtouchscreenintheslideshowbroadcast,USBreadfunctions.Thedesignhastheadvantagesoflowcost,powerfulfeatures.Thenandflashstartupsupport,realizethebootloaderofthemodificationandtransplantationofU-BOOT,andtheembeddedLinuxkernelcuttinganddrivemodifications,includingnandflashpartition,LCDdrivermodification;insoftwaredevelopmentandatthesametime,weaccordingtothedesignrequirementsoftheproject,completedthedesignofthecircuitprinciplediagramandPCBlayout.Keywords:S3C2410;Nandflash;LCDtouchscreen;Linux目錄目錄摘要 IABSTRACT II目錄 III前言 IV1緒論 11.1電子相冊市場成長的必然性 11.2電子相冊未來產(chǎn)品的發(fā)展 11.2.1數(shù)碼相框 11.2.2電子相冊 11.3目前市場上流行三種系統(tǒng)設(shè)計(jì)架構(gòu) 21.3.1單芯片解決方案 21.3.2以DSP+FPGA等硬件為基礎(chǔ),用軟件算法實(shí)現(xiàn)功能 21.3.3ARM9核心方案 22硬件設(shè)計(jì)方案 32.1采用此硬件方案的優(yōu)勢 42.2采用Linux操作系統(tǒng)的優(yōu)勢 42.3硬件的設(shè)計(jì)方案 52.3.1S3C2410簡介 52.3.2SDRAM存儲(chǔ)接口電路 62.3.3NANDFLASH存儲(chǔ)電路 72.3.4電源模塊 92.3.5USB電路模塊 92.3.6LCD電路模塊 102.4小結(jié) 123Linux系統(tǒng)的建立 133.1Linux的啟動(dòng)過程 133.2啟動(dòng)代碼和BootLoader 153.3U-BOOT的簡介 173.4U-BOOT的移植和修改步驟 193.4.1U-BOOT由NandFlash啟動(dòng)概述 193.4.2U-BOOT基本配置移植步驟 193.4.3U-BOOT對NandFlash命令的支持 203.4.4啟動(dòng)代碼的移植 203.4.5NandFlash環(huán)境參數(shù)的設(shè)置 213.5Linux內(nèi)核移植 213.5.1LCD驅(qū)動(dòng)分析和修改 223.5.2配置圖形 223.6文件系統(tǒng)的創(chuàng)建 223.6.1創(chuàng)建根文件系統(tǒng) 233.6.2yaffs文件系統(tǒng)的移植 233.7嵌入式圖形用戶界面系統(tǒng)概述 233.7.1圖形用戶界面(GUI)系統(tǒng)簡介 233.7.2嵌入式圖形用戶界面簡介 243.7.3Qt/Embedded簡介 243.8Qt/Embedded核心技術(shù) 253.8.1信號與槽 253.8.2對象模型 253.8.3國際化 263.8.4FrameBuffer 273.8.5Qt/Embedded工具 283.8.6Qt/Embedded的移植 293.9小結(jié) 294基于嵌入式的電子相冊應(yīng)用程序設(shè)計(jì) 294.1圖片播放模塊 294.1.1程序?qū)崿F(xiàn)功能及說明 294.1.2關(guān)鍵代碼實(shí)現(xiàn) 314.2移動(dòng)設(shè)備讀取模塊 324.2.1程序?qū)崿F(xiàn)功能及說明 324.2.2關(guān)鍵代碼實(shí)現(xiàn) 334.3設(shè)置模塊 344.3.1程序?qū)崿F(xiàn)功能及說明 344.3.2關(guān)鍵代碼實(shí)現(xiàn) 354.4小結(jié) 36結(jié)論 1參考文獻(xiàn) 1致謝 1附錄Ⅰ 1附錄Ⅱ 1前言前言隨著數(shù)碼相機(jī)的大量普及和人們對多媒體娛樂播放的需求,各種記憶卡越來越多地被運(yùn)用于存放數(shù)碼照片和多媒體文件。不同用戶的計(jì)算機(jī)中存滿各種照片,連桌上相框中照片的更換頻率也提高了。先輸出照片,然后更換到相框中,這樣的程序比較煩瑣,常常要通過計(jì)算機(jī)才能將相片進(jìn)行顯示與分享。對數(shù)碼相片進(jìn)行便捷的顯示、分享、編輯、刪除、打印等操作逐漸成為市場的需求。電子相框,數(shù)碼伴侶等概念型產(chǎn)品逐漸出現(xiàn)在數(shù)碼市場,電子相冊也由概念型產(chǎn)品進(jìn)入市場已有六、七年。目前,電子相冊產(chǎn)品主要應(yīng)用于禮品市場,其真正的目標(biāo)用戶卻是非常廣泛的,并且它的最終消費(fèi)人群應(yīng)該是以家庭為主的普通消費(fèi)者,其應(yīng)用的領(lǐng)域?qū)⒏鼜V闊。國內(nèi)也有廠家很早就注意到這類產(chǎn)品的良好的發(fā)展趨勢,例如曾作為NHJMP4中國地區(qū)總代理的北京中電金捷數(shù)碼科技有限公司,就及時(shí)地推出了自有品牌的金捷電子相冊,并且以出眾的外觀設(shè)計(jì)和良好的口碑效應(yīng),以及親民的價(jià)格贏得了市場的青睞。結(jié)論大學(xué)畢業(yè)設(shè)計(jì)(論文)1緒論1.1電子相冊市場成長的必然性(1)市場需求的必然性在上世紀(jì)末本世紀(jì)初,電子相冊呈現(xiàn)迅速發(fā)展的勢頭,普及型數(shù)碼相機(jī)的分辨率由200萬象素增長到現(xiàn)在的800—1500萬象素,價(jià)格也由300美元左右下降到現(xiàn)在的120美元左右。隨著數(shù)碼相機(jī)的日益普及,作為一種以數(shù)字照片的保存、回放和瀏覽為核心功能的產(chǎn)品——電子相冊自然迎合了消費(fèi)者的需求。(2)核心器件性能和價(jià)格的合理化推動(dòng)市場的發(fā)展電子相冊有三大核心器件:處理器,半導(dǎo)體存儲(chǔ)器和LCD顯示單元。隨著ARM的不斷發(fā)展,電子相冊所需要的ARM+Jpeg處理器技術(shù)已為許多廠商所擁有,集成了USBHost及卡接口單元的產(chǎn)品也屢見不鮮。Nandflash技術(shù)飛速發(fā)展,單位容量的價(jià)格在過去的六年中約下跌40至50倍。1.2電子相冊未來產(chǎn)品的發(fā)展1.2.1數(shù)碼相框數(shù)碼相框?qū)⑹且詳?shù)字照片的重顯為主要功能的產(chǎn)品,其功能更接近于傳統(tǒng)意義上的相框。由于受到人機(jī)界面的限制,為更方便地重顯和瀏覽以及確定重顯的規(guī)則,這類產(chǎn)品不強(qiáng)調(diào)有大容量的內(nèi)存以及豐富的卡接口。主要特征是:(1)USB接口以便更新和同步數(shù)據(jù);(2)在某些情況下(如從PC端通過相框的USB接口同步數(shù)據(jù)時(shí)),允許修改數(shù)字照片的格式,使其有最佳的重顯效果;(3)僅依靠內(nèi)置的半導(dǎo)體存儲(chǔ)器存放需要重顯的數(shù)字照片;(4)文件(照片)查詢和播放規(guī)則設(shè)定非常簡潔易用;(5)產(chǎn)品大致分為桌面和壁掛兩種。1.2.2電子相冊電子相冊是以數(shù)字照片的存儲(chǔ)和瀏覽為主要功能的產(chǎn)品由于需要滿足跟PC相同的類似功能,這類產(chǎn)品的主要特征是:(1)有大容量的內(nèi)置數(shù)據(jù)存儲(chǔ)器;(2)USB等各種卡接口,并支持內(nèi)部存貯器與各種數(shù)據(jù)存貯器之間的同步以及相互拷貝;(3)強(qiáng)大的文件管理功能:瀏覽,搜尋,命名(重命名),復(fù)制,刪除,備份等;(4)帶或不帶內(nèi)建顯示單元,有能支持其它高分辨率顯示設(shè)備的接口(如色差,VGA甚至是HDMI);與其他產(chǎn)品的功能結(jié)合的產(chǎn)品形態(tài)以及大頭貼等產(chǎn)品,用于不在本文所包含的范圍內(nèi)。1.3目前市場上流行三種系統(tǒng)設(shè)計(jì)架構(gòu)1.3.1單芯片解決方案以單芯片的解決方案,以ESS/AMLOGIC/MPX等芯片設(shè)計(jì)為代表,PHILIP/Sony等品牌廠商也以該方式為主。該方案的優(yōu)點(diǎn):(1)結(jié)構(gòu)簡單,成本低,芯片功能強(qiáng)大;(2)多媒體的編解碼速度快。該方案的缺點(diǎn):(1)可擴(kuò)展的余地不足;(2)對讀卡部分,某些方案使用硬件實(shí)現(xiàn),不能支持新類型的卡;(3)應(yīng)客戶要求的二次開發(fā)比較不方便。1.3.2以DSP+FPGA等硬件為基礎(chǔ),用軟件算法實(shí)現(xiàn)功能這種方案,是以DSP來實(shí)現(xiàn)多媒體部分的編解碼算法,再由FPGA實(shí)現(xiàn)顯示輸出格式的算法轉(zhuǎn)化;讀卡部分,文件系統(tǒng)部分由DSP軟件處理,外圍設(shè)備大的驅(qū)動(dòng)由DSP的軟件算法實(shí)現(xiàn)。這種方案的優(yōu)點(diǎn):功能擴(kuò)展升級性強(qiáng),軟件實(shí)現(xiàn)讀卡部分,新的類型卡,外圍設(shè)備可以通過升級方式實(shí)現(xiàn)。這種方案的缺點(diǎn):(1)整體成本比較大;(2)客戶二次開發(fā)難度大。DSP和FPGA的算法實(shí)現(xiàn)需要專業(yè)人員;(3)顯示輸出由FPGA實(shí)現(xiàn),該類輸出大部分是數(shù)字的輸出,模擬輸出支持比較弱。1.3.3ARM9核心方案以ARM9等強(qiáng)大的CPU為核心,以WINCE、LINUX等操作系統(tǒng)為軟件核心架構(gòu)系統(tǒng)。此方案以ARM如S3C2410、Intelxscale等強(qiáng)大的嵌入式CPU為架構(gòu),速度在200M-300MHZ。嵌入WINCE、LINUX等操作系統(tǒng),實(shí)現(xiàn)多媒體的編解碼。該方案的優(yōu)點(diǎn):(1)系統(tǒng)芯片功能強(qiáng)大,實(shí)現(xiàn)的功能多,對于新的多媒體格式支持好,只需要安裝更新的軟件;(2)硬件電路簡單;(3)二次開發(fā)容易實(shí)現(xiàn)。該方案的缺點(diǎn):(1)成本較大,該類強(qiáng)大的CPU一般使用在PDA等嵌入式領(lǐng)域;(2)比較耗電,使用軟件解碼功耗與頻率相關(guān)性很大。2硬件設(shè)計(jì)方案本設(shè)計(jì)選用的是第三種方案:以ARM9CPU_S3C2410為核心,以Linux操作系統(tǒng)為軟件核心架構(gòu)。基于ARM的微處理器具有低功耗、低成本、高性能等特點(diǎn),ARM采用RISC(精簡指令集計(jì)算機(jī))架構(gòu)和流水線結(jié)構(gòu),使用了大量的寄存器,具有極高的工作效率。其中,RISC架構(gòu)具有如下特點(diǎn):固定長度的指令格式,指令歸整、簡單,基本尋址方式只有2~3種,使用單周期指令,便于流水線操作。ARM微處理器按性能分為以下系列:ARM7,ARM9,ARM9E,ARM10E,SecureCoreXscale。ARM支持兩種類型的指令集:一種是32位的ARM指令,以字對準(zhǔn)保存;另一種是16位的Thumb指令,半字對準(zhǔn)保存。ARM具有7種工作狀態(tài):USR:正常的程序執(zhí)行狀態(tài)FIQ:用于高速數(shù)據(jù)傳輸或通道處理IRQ:用于通用的中斷處理SVC:操作系統(tǒng)使用的保護(hù)模式ABT:用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)UND:當(dāng)出現(xiàn)未定義指令終止時(shí)進(jìn)入該模式SYS:運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)在ARM體系中有一個(gè)重要的概念——異常:當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止時(shí)就叫做異常,例如處理一個(gè)外部的中斷請求。在處理異常之前,當(dāng)前的處理器狀態(tài)必須被保留,當(dāng)異常處理完后,異常發(fā)生前的程序可以繼續(xù)執(zhí)行。處理器允許多個(gè)異常同時(shí)發(fā)生,它們將會(huì)按固定的優(yōu)先級進(jìn)行處理。ARM支持的異常類型有:復(fù)位:復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常;未定義指令:遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常;軟件中斷:執(zhí)行SWI指令產(chǎn)生,用于用戶模式下的程序調(diào)用特權(quán)操作指令;指令預(yù)取中止:處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問,產(chǎn)生指令預(yù)取中止異常;數(shù)據(jù)中止:處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當(dāng)前指令訪問時(shí),產(chǎn)生數(shù)據(jù)中止異常;中斷服務(wù)請求:外部中斷請求有效,且CPSR中的1位為0時(shí),產(chǎn)生IRQ異常;快速中斷請求:快速中斷請求引腳有效,且CPSR中的F位為0時(shí),產(chǎn)生FIQ異常。2.1采用此硬件方案的優(yōu)勢如上所述:(1)系統(tǒng)芯片功能強(qiáng)大,實(shí)現(xiàn)的功能多,對于新的多媒體格式支持性好,只需要安裝更新的軟件;(2)硬件電路簡單,可采用標(biāo)準(zhǔn)電路,不需耗費(fèi)過多的資源(人力,資金等);(3)可以在硬件上增加模塊,留作二次開發(fā)使用,極為方便;(4)S3C2410是一個(gè)比較成熟的芯片,技術(shù)積累齊全;(5)S3C2410支持豐富的存儲(chǔ)卡接口。2.2采用Linux操作系統(tǒng)的優(yōu)勢Linux是一種自由和開放源碼的類Unix操作系統(tǒng)。目前存在著許多不同的Linux,但它們都使用了Linux內(nèi)核。Linux可安裝在各種計(jì)算機(jī)硬件設(shè)備中,從手機(jī)、平板電腦、路由器和視頻游戲控制臺,到臺式計(jì)算機(jī)、大型機(jī)和超級計(jì)算機(jī)。Linux是一個(gè)領(lǐng)先的操作系統(tǒng),世界上運(yùn)算最快的10臺超級計(jì)算機(jī)運(yùn)行的都是Linux操作系統(tǒng)。嚴(yán)格來講,Linux這個(gè)詞本身只表示Linux內(nèi)核,但實(shí)際上人們已經(jīng)習(xí)慣了用Linux來形容整個(gè)基于Linux內(nèi)核,并且使用GNU工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。Linux是我國軟件的國策,尤其是在IT行業(yè),龐大的使用群體、開放的體系和豐富資源使得Linux將是日后普及和推廣的重點(diǎn)。Linux的優(yōu)越性日益凸顯Linux將是我們學(xué)習(xí)和工作實(shí)用的首選。目前,很多網(wǎng)絡(luò)技術(shù)、服務(wù)器、網(wǎng)絡(luò)設(shè)備都是基于Linux操作系統(tǒng),并且在不少時(shí)尚的手機(jī)、PDA、媒體播放器等消費(fèi)類電子產(chǎn)品中已經(jīng)廣泛使用Linux作為操作系統(tǒng)。在Linux軟件國策的指引下,Linux已經(jīng)得到很大的普及。很多學(xué)生已經(jīng)自發(fā)地通過書籍、互聯(lián)網(wǎng)等資源學(xué)習(xí)Linux。綜上所述,提高技術(shù)水平就是以市場流行需求為導(dǎo)向進(jìn)行研發(fā),特別是像嵌入式種工程類的技術(shù)。在條件允許的情況下,我們甚至應(yīng)該時(shí)刻與國際接軌,掌握當(dāng)前最領(lǐng)先的技術(shù)。2.3硬件的設(shè)計(jì)方案根據(jù)前面所提出的系統(tǒng)方案,本課題所研究的系統(tǒng)應(yīng)該包括以下功能:支持USB接口存儲(chǔ)設(shè)備的讀寫;支持常用格式圖片的瀏覽(jpg、Bmp、gif等);支持彩色LCD屏,圖形化界面顯示。2.3.1S3C2410簡介Samsung公司推出的16/32位RISC處理器S3C2410A,為手持設(shè)備和一般類型應(yīng)用提供了低價(jià)格、低功耗、高性能小型微控制器的解決方案。S3C2410為手持設(shè)備和一般類型應(yīng)用提供了低價(jià)格、低功耗、高性能小型微控制器的解決方案。采用272腳FPGA封裝,內(nèi)含一個(gè)ARM920T內(nèi)核。為了降低系統(tǒng)成本,S3CARM9-S3C2410處理器,ARM920T核由ARM9TDMI、存儲(chǔ)管理單元,MMU和高速緩存三部分組成。其中MMU可以管理虛擬內(nèi)存,高速緩存由獨(dú)立的16KB地址和16KB數(shù)據(jù)高速Cache組成。ARM92T0有兩個(gè)內(nèi)部協(xié)處理器:CP14和CP15。CP14用于調(diào)試控制CP15用于存儲(chǔ)系統(tǒng)控制以及測試控制??偟馁Y源如下:?內(nèi)核工作電壓為1.2V,內(nèi)存工作電壓兼容1.8V/2.5V/3.3V,外圍I/O口使用3.3V,集成16KB的指令緩存和16KB的數(shù)據(jù)緩存,帶MMU(MemoryManagementUnit),支持SRAM和SDRAM等內(nèi)存。?LCD控制器接口(最高支持4K色的STN和256K色的TFT)?4通道DMA控制器?3通道UART?2通道SPI接口?IIC總線接口?IIS音頻編解碼數(shù)據(jù)接口?AC97音頻接口?MMC/SD存儲(chǔ)卡接口?2通道USB傳輸接口和1個(gè)復(fù)用的USB設(shè)備接口?4通道PWM(脈寬調(diào)制)定時(shí)器和1個(gè)看門狗定時(shí)器?8通道10位ADC和一個(gè)觸控屏接口?實(shí)時(shí)時(shí)鐘?130個(gè)GPIO口和24通道外部中斷源接口?片上PLL時(shí)鐘發(fā)生鎖相環(huán)總的方案圖如圖2.1:LCD顯示LCD顯示ARM芯片S3C2410RESET電路SDRAMNandFlash時(shí)鐘電路USB接口電源圖2.1硬件系統(tǒng)框圖2.3.2SDRAM存儲(chǔ)接口電路SDRAM:同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,同步是指Memory工作需要同步時(shí)鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn);動(dòng)態(tài)是指存儲(chǔ)陣列需要不斷的刷新來保證數(shù)據(jù)不丟失;隨機(jī)是指數(shù)據(jù)不是線性依次存儲(chǔ),而是自由指定地址進(jìn)行數(shù)據(jù)讀寫。SDRAM從發(fā)展到現(xiàn)在已經(jīng)經(jīng)歷了四代,分別是:第一代SDRSDRAM,第二代DDRSDRAM,第三代DDR2SDRAM,第四代DDR3SDRAM.(顯卡上的DDR已經(jīng)發(fā)展到DDR5)第一代SDRAM采用單端(Single-Ended)時(shí)鐘信號,第二代、第三代與第四代由于工作頻率比較快,所以采用可降低干擾的差分時(shí)鐘信號作為同步時(shí)鐘。SDRAM之所以成為DRARM就是因?yàn)樗粩噙M(jìn)行刷新(Refresh)才能保留住數(shù)據(jù),因此它是DRAM最重要的操作。那么要隔多長時(shí)間重復(fù)一次刷新,目前公認(rèn)的標(biāo)準(zhǔn)是,存儲(chǔ)體中電容的數(shù)據(jù)有效保存期上限是64ms(毫秒,1/1000秒),也就是說每一行刷新的循環(huán)周期是64ms。這樣刷新速度就是:行數(shù)量/64ms。我們在看內(nèi)存規(guī)格時(shí),經(jīng)常會(huì)看到4096RefreshCycles/64ms或8192RefreshCycles/64ms的標(biāo)識,這里的4096與8192就代表這個(gè)芯片中每個(gè)Bank的行數(shù)。刷新命令一次對一行有效,發(fā)送間隔也是隨總行數(shù)而變化,4096行時(shí)為15.625μs(微秒,1/1000毫秒),8192行時(shí)就為7.8125μs。HY57V561620為8192refreshcycles/64ms。本設(shè)計(jì)采用32M的HY57V56162來設(shè)計(jì)SDRAM存儲(chǔ)電路,它的單片內(nèi)存規(guī)格為256Mbit4M*16bit*4Banks,即容量為32MB的16位SDRAM。使用S3C2410的nGCS6片選信號HY57V56162的數(shù)據(jù)總線與上S3C2410的低16位相連。操作地址的最小值變?yōu)?x00000004,所以將S3C2410的ADDR2-ADDR14順序與HY57V56162的A0-A12相連。為了能夠正確訪問HY57V56162高/低位字節(jié)數(shù)據(jù),又將HY57V56162的LDQM和UDQM分別與nBE0:nWBE0:DQM0和nBE1:nWBE1:DQM1相連,HY57V56162的BA0、BA1是SDRAM內(nèi)部BANK選擇地址線,代表著SDRAM內(nèi)存的最高地址,因?yàn)閮善琀Y57V56162組成了64M的內(nèi)存,也就是說要26根地址線來實(shí)現(xiàn)尋址,所以將BA0、BA1分別與S3C2410的ADDR24和ADDR25引腳相連。原理圖如圖2.2所示:圖2.2SDRAM存儲(chǔ)電路2.3.3NANDFLASH存儲(chǔ)電路Nand-flash內(nèi)存是flash內(nèi)存的一種,其內(nèi)部采用非線性宏單元模式,為固態(tài)大容量內(nèi)存的實(shí)現(xiàn)提供了廉價(jià)有效的解決方案。Nand-flash存儲(chǔ)器具有容量較大,改寫速度快等優(yōu)點(diǎn),適用于大量數(shù)據(jù)的存儲(chǔ),因而在業(yè)界得到了越來越廣泛的應(yīng)用,如嵌入式產(chǎn)品中包括數(shù)碼相機(jī)、MP3隨身聽記憶卡、體積小巧的U盤等。NOR和NAND是現(xiàn)在市場上兩種主要的非易失閃存技術(shù)。Intel于1988年首先開發(fā)出NORflash技術(shù),徹底改變了原先由EPROM和EEPROM一統(tǒng)天下的局面。緊接著,1989年,東芝公司發(fā)表了NANDflash結(jié)構(gòu),強(qiáng)調(diào)降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級。但是經(jīng)過了十多年之后,仍然有相當(dāng)多的硬件工程師分不清NOR和NAND閃存。許多業(yè)內(nèi)人士也搞不清楚NAND閃存技術(shù)相對于NOR技術(shù)的優(yōu)越之處,因?yàn)榇蠖鄶?shù)情況下閃存只是用來存儲(chǔ)少量的代碼,這時(shí)NOR閃存更適合一些。而NAND則是高數(shù)據(jù)存儲(chǔ)密度的理想解決方案。NANDflash的單元尺寸幾乎是NOR器件的一半,由于生產(chǎn)過程更為簡單,NAND結(jié)構(gòu)可以在給定的模具尺寸內(nèi)提供更高的容量,也就相應(yīng)地降低了價(jià)格。NandFlash讀和寫操作采用512字節(jié)的塊,這一點(diǎn)有點(diǎn)像硬盤管理此類操作,很自然地,基于NAND的存儲(chǔ)器就可以取代硬盤或其他塊設(shè)備。NORflash占據(jù)了容量為1~16MB閃存市場的大部分,而NANDflash只是用在8~128MB的產(chǎn)品當(dāng)中,這也說明NOR主要應(yīng)用在代碼存儲(chǔ)介質(zhì)中,NAND適合于數(shù)據(jù)存儲(chǔ),NAND在CompactFlash、SecureDigital、PCCards和MMC存儲(chǔ)卡市場上所占份額最大。當(dāng)前NORFLASH價(jià)格比較昂貴,考慮到成本問題,本設(shè)計(jì)采用了64M的K9F1208U0BNandFlash作為介質(zhì)存儲(chǔ)電路,將K9F1208U0B的I/O[0-7]與上S3C2410的數(shù)據(jù)總線DATA[0-7]相連,實(shí)現(xiàn)數(shù)據(jù)的讀寫。S3C2410中NandFlash控制器的R/nB與K9F1208U0B的R/nB相連,可以檢查nFCE/GPA22、nFRE/GPA20、nFWE/GPA19分別與K9F1208U0B的CLE、nCE、nRE、new是否相連。分別可以控制K9F1208U0B的地址鎖存使能、命令鎖存使能、片選使能、讀使能和寫使能。原理圖如圖2.3所示:圖2.3NandFlash存儲(chǔ)電路2.3.4電源模塊S3C2410的電源引腳分為:VDDalive引腳給處理器復(fù)位模塊和端口寄存器提供1.8V電壓;VDDi和VDDiarm為處理器內(nèi)核提供1.8V電壓;VDDi_MPLL提供1.8V模擬電源和數(shù)字電源;VDD_UPLL為UPLL提供1.8V模擬電源和數(shù)字電源;VDDOP和VDDMOP分別為處理器存儲(chǔ)端口提供3.3V電壓;VDDRTC為處理器內(nèi)的ADC系統(tǒng)提供3.3V電壓;VDDRTC為時(shí)鐘電路提供1.8V電壓,該電壓在系統(tǒng)掉電后仍需要維持。在該系統(tǒng)中,需要使用1.8V和3.3V的直流穩(wěn)壓電源。為簡化系統(tǒng)電源電路的設(shè)計(jì),要求整個(gè)電路系統(tǒng)的輸入為高質(zhì)量的5V直流穩(wěn)壓電源然后采用兩個(gè)LM117電壓穩(wěn)壓器轉(zhuǎn)成3.3V的VDD和VCC;再采用IN4148穩(wěn)壓管來保證電源輸入電壓的穩(wěn)定性。VDDRTC是通過一個(gè)外置電池,再加4個(gè)IN4148穩(wěn)壓管串聯(lián)組成。復(fù)位電路是用一個(gè)74HC14反施密特觸發(fā)芯片實(shí)現(xiàn)兩級非門是用于按鈕去抖動(dòng)和波形整形;nRESET端的輸出狀態(tài)與RESET端輸出狀態(tài)相反,用于低電平復(fù)位的器件。電源電路如圖2.4所示:圖2.4電源電路2.3.5USB電路模塊USB接口可用于連接多達(dá)127個(gè)外設(shè),如鼠標(biāo)、調(diào)制解調(diào)器和鍵盤等。USB自從1996年推出后,已成功替代串口和并口,并成為當(dāng)今個(gè)人電腦和大量智能設(shè)備的必配的接口之一。目前USB設(shè)備雖已被廣泛應(yīng)用,比較普遍的是USB2.0接口,它的傳輸速度為480Mbps。USB2.0將設(shè)備之間的數(shù)據(jù)傳輸速度增加到了480Mbps,比USB1.1標(biāo)準(zhǔn)快40倍左右,速度的提高對于用戶的最大好處就是意味著用戶可以使用到更高效的外部設(shè)備,而且具有多種速度的周邊設(shè)備都可以被連接到USB2.0的線路上,而且無需擔(dān)心數(shù)據(jù)傳輸時(shí)發(fā)生瓶頸效應(yīng)。USB采用四線電纜,其中兩根是用來傳送數(shù)據(jù)的串行通道,另兩根為下游(Downstream)設(shè)備提供電源,對于高速且需要高帶寬的外設(shè),USB以全速12Mbps的傳輸數(shù)據(jù);對于低速外設(shè),USB則以1.5Mbps的傳輸速率來傳輸數(shù)據(jù)。USB總線會(huì)根據(jù)外設(shè)情況在兩種傳輸模式中自動(dòng)地動(dòng)態(tài)轉(zhuǎn)換。USB是基于令牌的總線。類似于令牌環(huán)網(wǎng)絡(luò)或FDDI基于令牌的總線。USB主控制器廣播令牌,總線上設(shè)備檢測令牌中的地址是否與自身相符,通過接收或發(fā)送數(shù)據(jù)給主機(jī)來響應(yīng)。USB通過支持懸掛/恢復(fù)操作來管理USB總線電源。根據(jù)S3C2410內(nèi)部的USB控制器,它的接口規(guī)范:主機(jī)接口的正負(fù)數(shù)據(jù)線分別接15K歐姆的下拉電阻,并且分別通過22歐姆的電阻與CPU的Dpn和DNn相連;設(shè)備接口的正數(shù)據(jù)線要接1.5K歐姆的上拉電阻,而負(fù)數(shù)據(jù)線接470歐姆的下拉電阻,正負(fù)數(shù)據(jù)線與CPU之間接22歐姆的終端電阻??刂破髟韴D如圖2.5所示:圖2.5USB接口電路2.3.6LCD電路模塊LCD的構(gòu)造是在兩片平行的玻璃基板當(dāng)中放置液晶盒,下基板玻璃上設(shè)置TFT(薄膜晶體管),上基板玻璃上設(shè)置彩色濾光片,通過TFT上的信號與電壓改變來控制液晶分子的轉(zhuǎn)動(dòng)方向,從而達(dá)到控制每個(gè)像素點(diǎn)偏振光出射與否而達(dá)到顯示目的?,F(xiàn)在LCD已經(jīng)替代CRT成為主流,價(jià)格也已經(jīng)下降了很多,并已充分的普及。LCD制造時(shí)選用的控制IC、濾光片和定向膜等配件,與面板的對比度有關(guān),一般而言,對比度能夠達(dá)到350:1就足夠了,但在專業(yè)領(lǐng)域這樣的對比度平還不夠。相對CRT顯示器輕易達(dá)到500:1甚至更高的對比度而言,只有高檔液晶顯示器才能達(dá)到這樣如此程度。LCD是一種介于固態(tài)與液態(tài)之間的物質(zhì),本身是不能發(fā)光的,需借助要額外的光源才行。最早的液晶顯示器只有上下兩個(gè)燈管,發(fā)展到現(xiàn)在,普及型的最低也是四燈,高端的是六燈。四燈管設(shè)計(jì)分為三種擺放形式:一種是四個(gè)邊各有一個(gè)燈管,但缺點(diǎn)是中間會(huì)出現(xiàn)黑影,解決的方法就是由上到下四個(gè)燈管平排列的方式,最后一種是U型的擺放形式,其實(shí)是兩燈變相產(chǎn)生的兩根燈管。六燈管設(shè)計(jì)實(shí)際使用的是三根燈管,將三根燈管都彎成U型,然后平行放置,以達(dá)到六根燈管的效果。圖2.6和圖2.7是S3C2410X芯片內(nèi)部集成的LCD控制器的外部管腳圖和內(nèi)部方框圖,其中內(nèi)部的寄存器作用如下:REGBANK有17個(gè)可編程寄存器組和256*16的調(diào)色板存儲(chǔ)器,用來設(shè)定LCD控制器。LCDCDMA是一個(gè)專用DMA,自動(dòng)從幀存儲(chǔ)器傳輸視頻數(shù)據(jù)到LCD控制器,用這個(gè)特殊的DMA,視頻數(shù)據(jù)可不經(jīng)過CPU干涉就顯示在屏幕上。VIDPRCS接受從LCDCDMA來的視頻數(shù)據(jù),并在將其改變到合適數(shù)據(jù)格式后,經(jīng)VD[23:0]將之送到LCD驅(qū)動(dòng)器,如4/8單掃描或4雙掃描顯示模式。LENDLENDLCD-PWRENLCDVF0LCDVF1LCDVF2S3C2410LCD控制器VD[23-0]VM/VDEN/TPVFRAME/VSYNC/STVVLINE/VSYNC/CPVVCLK/LCDHCLK圖2.6S3C2410LCD控制器外部管腳圖TIMEGEN由可編程邏輯組成,以支持不同LCD驅(qū)動(dòng)器的接口時(shí)序和速率的不同要求。TIMEGEN產(chǎn)生VFRAME、VLINE、VCLK、VM信號等。數(shù)據(jù)流描述如下:FIFO存儲(chǔ)器位于LCDCDMA。當(dāng)FIFO空或部分空時(shí),LCDCDMA要求從基于突發(fā)傳輸模式的幀存儲(chǔ)器中獲取數(shù)據(jù),存入要顯示的圖像數(shù)據(jù),而這個(gè)幀存儲(chǔ)器是LCD控制器在RAM中開辟的一片緩沖區(qū)。當(dāng)這個(gè)傳輸請求被存儲(chǔ)控制器中的總線仲裁器接收到后,從系統(tǒng)存儲(chǔ)器到內(nèi)部FIFO就會(huì)成功傳輸4個(gè)字。BEGBANKBEGBANKLCDCDMAVIDPRCSVIDEOMUXLPC3600TIMEGENVSYNCHSYNCVCLKVDENLCDVF0LCDVF1LCDVF2VD[23-0]圖2.7LCD控制器內(nèi)部方框圖由于S3C2410內(nèi)部集成的LCD控制器如上所以設(shè)計(jì)的外接LCD電路模塊如圖2.8:圖2.8LCD模塊電路2.4小結(jié)本章首先介紹了嵌入式ARM-Linux系統(tǒng)的組成,并簡要介紹了Linux操作系統(tǒng)的歷史及Linux操作系統(tǒng)在嵌入式領(lǐng)域的應(yīng)用。介紹了S3C2410的功能,并對SDRAM存儲(chǔ)接口電路、NANDFLASH存儲(chǔ)電路、電源模塊、USB電路模塊和LCD電路模塊的設(shè)計(jì)進(jìn)行了說明。對系統(tǒng)各組成部分功能作了簡要說明,對系統(tǒng)主要技術(shù)指標(biāo)、性能及結(jié)構(gòu)特點(diǎn)亦作了簡要介紹。3Linux系統(tǒng)的建立本設(shè)計(jì)采用的是嵌入式Linux系統(tǒng),嵌入式Linux(EmbeddedLinux)是指對Linux經(jīng)過裁剪小型化后,可固化在存儲(chǔ)器或單片機(jī)中,應(yīng)用于特定嵌入式場合的專用Linux操作系統(tǒng)。Linux做嵌入式的優(yōu)勢:首先,Linux是開放源代碼,是遍布全球的眾多Linux愛好者和Linux開發(fā)者的強(qiáng)大技術(shù)支持;其次,Linux的內(nèi)核小、效率高,內(nèi)核的更新速度很快,Linux可以定制,其系統(tǒng)內(nèi)核最小只有約134KB;第三,Linux是免費(fèi)的OS,在價(jià)格上極具競爭力。Linux還有著嵌入式操作系統(tǒng)所需要的很多特色,突出的就是Linux適應(yīng)于多種CPU和多種硬件平臺,是一個(gè)跨平臺的系統(tǒng)。到目前為止,它可以支持二三十種CPU。而且性能穩(wěn)定,裁剪性很好,開發(fā)和使用都很容易,移植性很強(qiáng),移植的速度遠(yuǎn)遠(yuǎn)超過Java的開發(fā)環(huán)境,即用Linux環(huán)境開發(fā)的產(chǎn)品,二次開發(fā)方便。同時(shí),Linux內(nèi)核的結(jié)構(gòu)在網(wǎng)絡(luò)方面是非常完整的,Linux對網(wǎng)絡(luò)中最常用的TCP/IP協(xié)議有最完備的支持,提供了包括十兆、百兆、千兆的以太網(wǎng)絡(luò),以及無線網(wǎng)絡(luò)、Tokerring(令牌環(huán)網(wǎng))、光纖甚至衛(wèi)星的支持。還有使用Linux開發(fā)無線連接產(chǎn)品的開發(fā)者越來越多。3.1Linux的啟動(dòng)過程嵌入式Linux的啟動(dòng)流程大概如下:第一階段,用戶上電,CPU進(jìn)入自動(dòng)實(shí)模式,通常是從ROM-BIOS的地址0xffff0開始執(zhí)行代碼,按BIOS中設(shè)置的啟動(dòng)設(shè)備進(jìn)行啟動(dòng),接著啟動(dòng)設(shè)備上安裝的引導(dǎo)程序lilo或grub開始引導(dǎo)Linux。第二階段,Linux首先進(jìn)行內(nèi)核的引導(dǎo),主要完成磁盤引導(dǎo)、讀取機(jī)器系統(tǒng)數(shù)據(jù)、實(shí)模式和保護(hù)模式的切換、加載數(shù)據(jù)段寄存器以及重置中斷描述符表等。第三階段,執(zhí)行init系統(tǒng)初始化工作,init程序調(diào)用了rc.sysinit和rc等程序,而rc.sysinit和rc在完成初始化和運(yùn)行服務(wù)的任務(wù)后,返回init。第四階段,init啟動(dòng)mingetty,打開終端供用戶登錄系統(tǒng),用戶登錄成功后進(jìn)入了shell,這樣就完成從開機(jī)到登錄的整個(gè)啟動(dòng)過程。BootLoader應(yīng)用程序文件系統(tǒng)參數(shù)BootLoader應(yīng)用程序文件系統(tǒng)參數(shù)內(nèi)核內(nèi)核圖3.1Linux系統(tǒng)各部分軟件圖一個(gè)嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃樗膫€(gè)層次:(1)引導(dǎo)加載程序。包括固化在固件中啟動(dòng)代碼和Bootloader兩大部分。(2)Linux內(nèi)核。特定于嵌入式電路板的內(nèi)核以及控制內(nèi)核引導(dǎo)系統(tǒng)的參數(shù)。(3)文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備上的文件系統(tǒng),一般有RAMDISK、CRAMFS和YAFFS等。(4)用戶應(yīng)用程序。特定于用戶開發(fā)的應(yīng)用程序。上電上電BIOSBIOS第第一階段Grub/liloGrub/lilo第二第二階段Kernelrc.sysinitKernelrc.sysinit第三階段第三階段RcInitLoginMingettyLoginMingetty第四第四階段ShellShell完成完成圖3.2Linux啟動(dòng)流程圖3.2啟動(dòng)代碼和BootLoader引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段代碼,對嵌入式系統(tǒng)來講是一個(gè)非常重要的系統(tǒng)組成部分。但在嵌入式系統(tǒng)中,一般并沒有像PC中BIOS那樣的固件程序,因此在一般的系統(tǒng)中,整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來完成。在一個(gè)基于ARM嵌入式系統(tǒng)中,系統(tǒng)上電或者復(fù)位時(shí)通常都從0x00000000處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader,通過這小段程序可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核做準(zhǔn)備。BootLoader的啟動(dòng)過程可以是單階段的,也可以是多階段的。大多數(shù)單階段的BootLoader應(yīng)用于簡單的系統(tǒng),一般為沒有操作系統(tǒng)的系統(tǒng)。通常多階段的BootLoader能提供更為復(fù)雜的功能以及更好的可移植性。從固態(tài)存儲(chǔ)設(shè)備上啟動(dòng)的BootLoader大多數(shù)是兩階段的啟動(dòng)過程,也就是啟動(dòng)過程可以分為stage1和stage2兩部分:(1)Stage1為啟動(dòng)代碼,它是CPU上電后執(zhí)行的第一段代碼負(fù)責(zé)初始化最原始的硬件資源,例如屏蔽CPU中斷、工作頻率、內(nèi)存參數(shù)和設(shè)置堆棧等。由于在初始化原始硬件資源之前程序是直接控制CPU工作,所以該部分的啟動(dòng)代碼必須要用匯編語言編寫。(1)Stage2是緊接著啟動(dòng)代碼之后的程序,負(fù)責(zé)初始化本階段要用到的硬件資源,例如UART,RAM,ROM,USB,LCD等;為內(nèi)核設(shè)置啟動(dòng)參數(shù):還要提供一定的命令行接口,用于進(jìn)行系統(tǒng)調(diào)試,最后要負(fù)責(zé)引導(dǎo)操作系統(tǒng)。由于涉及復(fù)雜的功能,所以通常用C語言編寫,C語言入口點(diǎn)由上一級啟動(dòng)代碼引導(dǎo)進(jìn)入。大多數(shù)BootLoader都包含兩種不同的操作模式:啟動(dòng)加載(Bootloading)模式和下載(Downloading)模式,這種區(qū)別僅對于開發(fā)人員才有意義。但從最終用戶的角度看,BootLoader的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動(dòng)加載模式與下載工作模式的區(qū)別。(1)啟動(dòng)加載模式:這種模式也稱為自主(Autonomous)模式,即BootLoader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過程沒有用戶的介入。這種模式是BootLoader的正常工作模式。在嵌入式產(chǎn)品發(fā)布的時(shí)候,BootLoader顯然必須工作在這種模式下。(2)下載模式:在這種模式下,目標(biāo)機(jī)上的BootLoader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)上下載文件,比如下載應(yīng)用程序、數(shù)據(jù)文件、內(nèi)核映像等。從主機(jī)下載的文件通常首先被BootLoader保存到目標(biāo)機(jī)的RAM中,然后再被BootLoader寫到目標(biāo)機(jī)上的固態(tài)存儲(chǔ)設(shè)備中,BootLoader的這種模式通常在系統(tǒng)更新時(shí)使用。工作于這種模式下的BootLoader通常都會(huì)向它的終端用戶提供一個(gè)簡單的命令行接口,比如U-Boot、Blob、VIVI等。BootLoader是依賴于硬件實(shí)現(xiàn)的,特別是在嵌入式系統(tǒng)中。不同體系結(jié)構(gòu)需求的BootLoader是不同的,除了體系結(jié)構(gòu),BootLoader還依賴于具體的嵌入式板級設(shè)備的配置。也就是說,對于兩塊不同的嵌入式板而言,即使它們基于相同的CPU構(gòu)建,運(yùn)行在其中一塊電路板上的BootLoader未必能夠運(yùn)行在另一塊電路開發(fā)板上,要使之后的軟件系統(tǒng)能正常地運(yùn)行起來,就必須確保BootLoader能正確地從ROM中被讀取運(yùn)行,并且具備引導(dǎo)操作系統(tǒng)的能力,所以要對BootLoader進(jìn)行正確移植和修改。由上所述可知,BootLoader是嵌入式系統(tǒng)中重要的一部分,目前流行的BootLoader主要有:(1)U-BOOT。U-BOOT是德國DENX小組開發(fā)的用于多種嵌入式CPU的BootLoader程序,它可以運(yùn)行在基于PowerPC、ARM、MIPS等多種嵌入式開發(fā)板上。從http://U-BOOT./或ftp;//ftp.denx.de/pub/U-BOOT/站點(diǎn)都可以下載U-BOOT的源代碼。(2)VIVI。VIVI是由韓國MIZI公司開發(fā)的專門用于ARM產(chǎn)品線的一種BootLoader。因?yàn)閂IVI目前只支持使用串口和主機(jī)通信,所以必須使用一條串口電纜來連接目標(biāo)板和主機(jī)。VIVI的源代碼下載地址為http;///developer/S3C2410x/download/vivi.html。(3)Blob。Blob是BootLoaderObject的縮寫,是一款功能強(qiáng)大的BootLoader。其源碼在http;///projects/blob上可以獲取。Blob最初是由Jan-DerkBakker和ErikMouw兩人為一塊名為LART(LinuxAdvancedRadioTerminal)的開發(fā)板所寫,該板使用的處理器是StrongARMSA-1100,現(xiàn)在Blob已經(jīng)被成功地移植到許多基于ARM的CPU上。(4)RedBoot。RedBoot是一個(gè)專門為嵌入式系統(tǒng)定制的引導(dǎo)啟動(dòng)工具,最初由Redhat開發(fā),它是基于eCos(EmbeddedConfigurableOperatingSystem)的硬件抽象層,同時(shí)它繼承了eCos的高可靠性、簡潔性、可配置性和可移植性等特點(diǎn)。RedBoot集BootLoader、調(diào)試、Flash燒寫于一體,支持串口、網(wǎng)絡(luò)下載,執(zhí)行嵌入式應(yīng)用程序。既可以用在產(chǎn)品的開發(fā)階段(調(diào)試功能),也可以用在最終的產(chǎn)品上(Flash更新、網(wǎng)絡(luò)啟動(dòng))。RedBoot支持下載和調(diào)試應(yīng)用程序,開發(fā)板可以通過BOOTP/DHCP協(xié)議動(dòng)態(tài)配置IP地址,支持跨網(wǎng)段訪問。用戶可以通過tftp協(xié)議下載應(yīng)用程序和image,或者通過串口用x-modem/y-modem下載,在嵌入式系統(tǒng)應(yīng)用中非常廣泛。(5)ARMboot。ARMboot是一個(gè)以ARM或StrongARM為內(nèi)核CPU的嵌入式系統(tǒng)的BootLoader固件程序,該軟件的主要目標(biāo)是使新的平臺更容易被移植并且盡可能地發(fā)揮其強(qiáng)大性能。它只基于ARM固件,但是它支持多種類型的啟動(dòng),比如Flash,網(wǎng)絡(luò)下載通過bootp、dhcp、tftp等。它也是開源項(xiàng)目,可以從http;///projects/armboot網(wǎng)站獲得最新的ARMboot源碼和詳細(xì)資料,它在ARM處理器方面應(yīng)用非常廣泛。(6)DIY。DIY(DoItYouself),即自己制作。以上U-BOOT、VIVI、Blob、RedBoot和ARMboot等成熟工具移植起來簡單快捷,但它們都存在著一定的局限性。首先,它們是面向大部分硬件的工具,在功能上要滿足大部分硬件的需求。一般情況下,我們只需要與特定的開發(fā)板相關(guān)的實(shí)現(xiàn)代碼,其他型號開發(fā)板的實(shí)現(xiàn)代碼對它來說是沒有用的,所以通常它們的代碼量較大。其次,它們在使用上不夠靈活。比如,在這些工具上添加自己的特有功能相對比較困難,必須熟悉該代碼的組織關(guān)系,以及了解它的配置編譯等文件。用DIY的方式自己編寫針對目標(biāo)板的BootLoader不但代碼量短小,同時(shí)靈活性很大,最重要的是將來容易維護(hù)。因此,在實(shí)際嵌入式產(chǎn)品開發(fā)時(shí)大都選擇DIY的方式編寫B(tài)ootLoader。3.3U-BOOT的簡介U-BOOT的全稱為UniversalBootLoader,是遵循GPL(GNUGeneralPublicLicense)協(xié)議的開放源碼項(xiàng)目。該條款規(guī)定開發(fā)者必須開放源代碼,確保用戶可以自由地共享和修改軟件,目的是促進(jìn)軟件知識的自由傳播。不少U-BOOT源代碼就是相應(yīng)的Linux內(nèi)核源程序的簡化,尤其是一些設(shè)備的驅(qū)動(dòng)程序。U-BOOT不僅支持嵌入式Linux系統(tǒng)的引導(dǎo),還支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS等操作系統(tǒng),所以本設(shè)計(jì)打算選用此BootLoader。U-BOOT源代碼是由多個(gè)目錄組成的GNU項(xiàng)目,在不同的目錄中按功能分類存放了C語言的代碼文件,其主要目錄結(jié)構(gòu)如下:Board:U-BOOT所支持目標(biāo)開發(fā)板相關(guān)文件。主要包含SDRAM和Flash的驅(qū)動(dòng)程序;Common與處理器體系結(jié)構(gòu)無關(guān)的通用代碼,如內(nèi)存大小探測與故障檢測,在這里主要關(guān)注cmd_boot.c和cmd_bootm.c;Cpu:與處理器相關(guān)的文件,如ARM920t子目錄下含S3C2410的串口、IIC接口和中斷初始化等文件。系統(tǒng)啟動(dòng)的第一段匯編代碼start.S就包含在此目錄;Drivers:各種外設(shè)驅(qū)動(dòng)程序;Doc:U-BOOT的說明文檔;Include:頭文件目錄;Lib_XXX:處理器體系相關(guān)的文件,如lib_ppc,lib_arm目錄分別包含與PowerPC、體系結(jié)構(gòu)相關(guān)的文件;Net:與網(wǎng)絡(luò)功能相關(guān)的文件目錄,如bootp,nfs,tftp等網(wǎng)絡(luò)協(xié)議。U-BOOT支持多種CPU體系結(jié)構(gòu),但對于不同的CPU來說,整個(gè)啟動(dòng)流程是類似的。下面介紹以ARM920T為架構(gòu)的CPU啟動(dòng)過程。U-BOOT的啟動(dòng)可以分為兩個(gè)階段:第一階段用匯編語言實(shí)現(xiàn),負(fù)責(zé)初始化低層次的硬件,如CPU底層的寄存器和RAM等;第二階段用C語言實(shí)現(xiàn),負(fù)責(zé)初始化較高級的外圍硬件接口,如串口、USB、網(wǎng)卡等,另外,通過C語言可實(shí)現(xiàn)更高級的應(yīng)用,如命令行調(diào)試、網(wǎng)絡(luò)傳輸?shù)?。U-BOOT整個(gè)程序的入口點(diǎn)位于cpu/ARM920T/start.S中,它用ARM匯編語言編寫,它是ARM上電啟動(dòng)后執(zhí)行的第一段代碼,實(shí)現(xiàn)U-BOOT的第一階段啟動(dòng)。之后的步驟如圖3.3所示:start.Sstart.S定義程序入口定義程序入口設(shè)置異常向量設(shè)置異常向量初始化CPU底層部件初始化CPU底層部件搬移ROM的程序到RAM搬移ROM的程序到RAM程序轉(zhuǎn)移到RAM上執(zhí)行程序轉(zhuǎn)移到RAM上執(zhí)行圖3.3BootLoader啟動(dòng)步驟3.4U-BOOT的移植和修改步驟3.4.1U-BOOT由NandFlash啟動(dòng)概述U-BOOT支持從NORFlash啟動(dòng),本設(shè)計(jì)用的是NandFlash因?yàn)镹andFlash的價(jià)格相對便宜。為了解決NandFlash不能直接本地讀取數(shù)據(jù)的問題,本系統(tǒng)需要對U-BOOT進(jìn)行修改,使得啟動(dòng)代碼能被存儲(chǔ)在NandFlash中也能正常運(yùn)行。S3C2410本身也針對從NandFlash啟動(dòng)的方案采取了相應(yīng)的措施。它在NandFlash控制器端采用了4KB的內(nèi)部緩沖區(qū),CPU上電后會(huì)把NandFlash的前4KB代碼自動(dòng)轉(zhuǎn)移到內(nèi)部緩沖中執(zhí)行。通過OM【1:0】信號跳線可以選擇是否啟用該啟動(dòng)方式:OM【1:0】=00時(shí)處理器從NandFlash啟動(dòng);OM【1:0】=01時(shí)處理器從16位寬的rom啟動(dòng);OM【1:0】=10時(shí)處理器從32位寬的rom啟動(dòng);OM【1:0】=11時(shí)測試模式的rom啟動(dòng);當(dāng)使用NandFlash啟動(dòng)時(shí),4KB的內(nèi)部緩沖區(qū)會(huì)被映射到0x0地址,此地址存放了CPU上電后的第一條指令。在U-BOOT的Start.S中,要跳過之前介紹的“搬移ROM中的程序到RAM”那一步,然后插入自己修改的NAND啟動(dòng)代碼。本設(shè)計(jì)中,U-BOOT調(diào)試用到的硬件和功能主要有一個(gè)串口,DM9000E網(wǎng)卡支持tftp下載,工作頻率為200M的S3C2410處理器,JTAG口燒寫U-BOOT映像文件,1片4M*16位數(shù)據(jù)寬度的NandFlash地址范圍為0x01000000~0x01800000和1片32MB16位SDRAM位數(shù)據(jù)寬度的SDRAM地址范圍為0x30000000~0x32000000。Flash使用了2410處理器的BANK0單元。3.4.2U-BOOT基本配置移植步驟本設(shè)計(jì)采用U-BOOT1.1.4進(jìn)行修改移植,交叉編譯器是cross_2.95.3做法是在U-BOOT已經(jīng)支持的開發(fā)板中選擇一種和目標(biāo)板接近的并在其基礎(chǔ)上進(jìn)行修改,代碼修改的步驟如下:在U-BOOT1.1.4的根目錄的Makefile中加入my2410_config:unconfig,其中的參數(shù)意思arm:CPU的架構(gòu);ARM920t:CPU的類型;建立自己開發(fā)板所需目錄、文件配置文件。建立board/my2410目錄,拷貝board/smdk2410下的文件到board/my2410目錄,將smdk2410.c更名為my2410.c修改my2410目錄下的Makefile文件,將OBJS=smdk2410.oflash.o修改為OBJS=my2410.oflash.o3.建立配置文件cpinclude/configs/smdk2410.hinclude/configs/my2410.h(3)排除編譯器問趔。修改cpu/ARM920t/config.mk中的PLATFORM_CPPFLAGS+=$(callcc-option,-mapcs-32,-mabi=apcs-gnu)改為:cpu/ARM920t/config.mk中的PLATFORM_CPPFLAGS+=$(callcc-option,-mapcs-32,$(callcc-option,-mabi=apcs-gnu))(4)修改include/configs/my2410.h文件中的內(nèi)容#defineCFG_PROMPT“my2410”/*我自己U-BOOT的調(diào)試平臺名字*/#defineCONFIG_BOOTDELAY/*自動(dòng)啟動(dòng)時(shí)間為3秒*/#defineCONFIG_BOOTARGS“noinitrdroot=/dev/mtdblock/3init=linuxrcconsole=ttyS0”/*NandFlash第三分區(qū),串口0,Linux2.4內(nèi)核,也可以不設(shè),在移植后用NandFlash的命令再設(shè)置*/3.4.3U-BOOT對NandFlash命令的支持由于U-BOOT調(diào)試要用到一些NandFlash命令,如對設(shè)置一些參數(shù)保存要用到nandwrite對參數(shù)的保存到NandFlash中要用nandsave命令等,所以要在U-BOOT中加入一些命令。步驟如下:(1)在include/configs/my2410.h文件將CFG_CMD_NAND宏打開;(2)在include/linux/mtd/nand_ids.h加入K9F1208U0B的信息;(3)加入對SamsungK9F1208U0BNandFlash的基本宏定義;(4)在lib_arm/board.c中加入對NandFlash初始化函數(shù)externulongnand_probe(ulongphysadr);3.4.4啟動(dòng)代碼的移植S3C2410被配置成從NAND閃存啟動(dòng),上電后,S3C2410的NAND閃存控制器會(huì)自動(dòng)把NAND閃存中的前4K數(shù)據(jù)搬移到內(nèi)部RAM中,并把0X00000000設(shè)置為內(nèi)部RAM的起始地址,CPU從內(nèi)部RAM的0X00000000位置開始啟動(dòng)。因此要把最核心的啟動(dòng)程序放在NAND閃存的前4K中。由于NAND閃存控制器從NAND閃存中搬移到內(nèi)部RAM的代碼是有限的,所以,在啟動(dòng)代碼的前4K里,必須完成S3C2410的核心配置,并把啟動(dòng)代碼的剩余部分搬到RAM中運(yùn)行。在U-BOOT中,前4K完成的主要工作就是U0BOOT啟動(dòng)的第一個(gè)階段(stage1)。根據(jù)U-BOOT的執(zhí)行流程圖,可知要實(shí)現(xiàn)從NAND閃存中啟動(dòng)U-BOOT首先需要初始化NAND閃存,并從NAND閃存中把U-BOOT搬移到RAM中,最后需要讓U-BOOT支持,NAND閃存的命令操作。3.4.5NandFlash環(huán)境參數(shù)的設(shè)置U-BOOT默認(rèn)從NORFLASH啟動(dòng),此時(shí)環(huán)境參數(shù)可以存放在NORFLASH中,也可以存放在NANDFLASH中。在NORFLASH中時(shí),參數(shù)的存儲(chǔ)位置由CFG_ENV_ADDR決定。此外必須有CFG_ENV_IS_IN_FLASH、CFG_ENV_SIZE這兩個(gè)宏定義。如果U-BOOT從NANDFLASH啟動(dòng),由于從NANDFLASH啟動(dòng)時(shí)S3C2410內(nèi)部的4KSRAM被影射到Ngcso,故此時(shí)NORFLASH是無效,也不能對NORFLASH進(jìn)行操作。因此環(huán)境變量是不能存儲(chǔ)在NORFLASH上,此時(shí)只能將環(huán)境變量存儲(chǔ)到NANDFLASH中。這樣必須在my2410.h中做如下修改。/*#defineCFG_ENV_IS_IN_FLASH1*//*注釋掉此行,添加下面三行*/#defineCFG_ENV_IS_IN_NAND1#defineCFG_ENV_OFFSET0xf0000#defineCFG_ENV_SIZE0x10000由于u-BOOT默認(rèn)條件下是不傳遞環(huán)境參數(shù)到LINUX內(nèi)核的TAG區(qū)(默認(rèn)從0X30000100開始),為了能夠用U-BOOT引導(dǎo)LINUX內(nèi)核,必須定義以下配置,把信息傳入LINUX核心。#defineCONFIG_SETUP_MEMORY_TAGS#defineCONFIG_INITRD_TAG#defineCONFIG_CMDLINE_TAG3.5Linux內(nèi)核移植本設(shè)計(jì)采用的Linux內(nèi)核是MIZI公司的2.4.18內(nèi)核結(jié)合系統(tǒng)的硬件要求,需要對內(nèi)核的適當(dāng)配置,主要的修改包括了根目錄和arch/arm/boot等目錄下的Makefile分別針對NandFlash、LCD驅(qū)動(dòng)、USB主機(jī)驅(qū)動(dòng)、啟動(dòng)掛載devfs支持文件系統(tǒng)、Cramfs,Yaffs文件系統(tǒng)的支持以及聲音系統(tǒng)的支持進(jìn)行源代碼的修改。對內(nèi)核進(jìn)行配置就是對其硬件進(jìn)行裁剪,通過導(dǎo)入與S3C2410接近SMDK2410的默認(rèn)配置可以簡化其配置過程。S3C2410的默認(rèn)配置在kernal/arch/arm/defconfigs/smdk2410.config里面。先進(jìn)行手動(dòng)裁剪,再進(jìn)入圖形配置界面配置。3.5.1LCD驅(qū)動(dòng)分析和修改S3C2410本身具有LCD控制器接口,通過設(shè)置該部分的寄存器可以比較方便地對液晶顯示屏進(jìn)行控制,這樣也大大簡化了顯示驅(qū)動(dòng)程序的設(shè)計(jì)。Linux對LCD是以字符設(shè)備方式加以訪問和管理的,它把要顯示的數(shù)據(jù)一字節(jié)一字節(jié)地送往LCD控制器。3.5.2配置圖形手動(dòng)修改后,再終端輸入命令makemenuconfig進(jìn)入內(nèi)核配置畫面,選擇相關(guān)的選項(xiàng)之后保存退出。(1)makemenuconfig:該命令用來調(diào)用圖形化菜單式的配置內(nèi)核界面。這種配置方法比用命令行方式更有效率。配置對SCSI設(shè)備的支持。在Linux中,大多數(shù)USB驅(qū)動(dòng)程序會(huì)“鉤住”另外一個(gè)驅(qū)動(dòng)系統(tǒng)。經(jīng)過以上配置并編譯后,對于USB存儲(chǔ)設(shè)備來說,一些關(guān)鍵的驅(qū)動(dòng)模塊會(huì)被編譯進(jìn)內(nèi)核,如usbcore.o,usb-ohci.o和usb-storage.o。其usbcore.o是支持USB所需要的最基礎(chǔ)模塊;usb-ohci.o是主機(jī)協(xié)議模塊;usb-storage.o是存儲(chǔ)設(shè)備所需用到。在加載了以上模塊后,當(dāng)插入U(xiǎn)盤時(shí)系統(tǒng)中就會(huì)出現(xiàn)一個(gè)SCSI硬盤,通過正確地掛載操作則可以使用該U盤。(2)makedepend:此命令用于為Linux項(xiàng)目產(chǎn)生,depend文件。當(dāng)編譯一個(gè)龐大的項(xiàng)目時(shí),如果沒有depend文件,編譯器就無法判斷出文件之間的依賴關(guān)系,這樣會(huì)造成大量的重復(fù)編譯,甚至使編譯無法正常進(jìn)行。所以,在每次增加源代碼頭文件時(shí),都必須運(yùn)行一次“makedepend“以更新各目標(biāo)文件的依賴關(guān)系。這個(gè)命令只用于Linux2.4的內(nèi)核,Linux2.6的不需要。(3)makezImage:編譯器按照之前的配置選項(xiàng)生成Linux內(nèi)核的機(jī)器代碼映像,其中“zImage”是經(jīng)過壓縮并可以自解壓的代碼映像。(4)下載,用U-BOOT進(jìn)行下載。3.6文件系統(tǒng)的創(chuàng)建在嵌入式Linux中,文件系統(tǒng)可分為根文件系統(tǒng)和子文件系統(tǒng)。根文件系統(tǒng)包含基本的操作系統(tǒng)命令和維護(hù)工具,啟動(dòng)時(shí)需要根文件系統(tǒng)來掛載,通常在系統(tǒng)建立后無需作出改動(dòng),每次啟動(dòng)都會(huì)恢復(fù)到原始的狀態(tài),這樣有利于系統(tǒng)的穩(wěn)定性,即使用戶進(jìn)行了錯(cuò)誤操作也不至于對操作系統(tǒng)造成永久破壞;子文件系統(tǒng)通常是適合對嵌入式存儲(chǔ)介質(zhì)頻繁進(jìn)行讀寫操作的文件系統(tǒng),用于保存經(jīng)常需要修改的數(shù)據(jù)。常用的文件系統(tǒng)包括ROMfs,JFFS2,Yaffs,ETX2,NFS,Cramfs等。本設(shè)計(jì)用到的Cramfs(CompressedRAMFileSystem)作為根文件系統(tǒng),是為壓縮式文件系統(tǒng),特點(diǎn)是數(shù)據(jù)可經(jīng)過壓縮而保存在ROM中,經(jīng)過修改的數(shù)據(jù)在掉電或重啟后不會(huì)被保留,而是恢復(fù)到原始狀態(tài);并且在讀取數(shù)據(jù)時(shí)選擇性讀取,可大大節(jié)省內(nèi)存資源。本設(shè)計(jì)還用到y(tǒng)affs(YetAnotherFlashFileSystem)子文件系統(tǒng),它是一種日志結(jié)構(gòu)的文件系統(tǒng),專門為NandFlash設(shè)計(jì)的,其速度快、占用內(nèi)存少且易于移植,還為NandFlash供寫均衡和垃圾收集等底層操作,能有效地降低Flash出現(xiàn)壞塊的幾率。3.6.1創(chuàng)建根文件系統(tǒng)根文件系統(tǒng)是存放運(yùn)行、維護(hù)系統(tǒng)的Busybox、庫文件、配置文件和腳本等,也可以安裝各種軟件包。其中的Busybox用于提供shell命令集;配置文件用來初始化和布局文件系統(tǒng);庫文件為應(yīng)用程序和操作系統(tǒng)提供API函數(shù)接。Busybox將許多常用的UNIX命

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論