![嵌入式總復(fù)習(xí)_第1頁](http://file4.renrendoc.com/view/9deeb61fba38e468ebaa984e2a53165f/9deeb61fba38e468ebaa984e2a53165f1.gif)
![嵌入式總復(fù)習(xí)_第2頁](http://file4.renrendoc.com/view/9deeb61fba38e468ebaa984e2a53165f/9deeb61fba38e468ebaa984e2a53165f2.gif)
![嵌入式總復(fù)習(xí)_第3頁](http://file4.renrendoc.com/view/9deeb61fba38e468ebaa984e2a53165f/9deeb61fba38e468ebaa984e2a53165f3.gif)
![嵌入式總復(fù)習(xí)_第4頁](http://file4.renrendoc.com/view/9deeb61fba38e468ebaa984e2a53165f/9deeb61fba38e468ebaa984e2a53165f4.gif)
![嵌入式總復(fù)習(xí)_第5頁](http://file4.renrendoc.com/view/9deeb61fba38e468ebaa984e2a53165f/9deeb61fba38e468ebaa984e2a53165f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1第1章嵌入式系統(tǒng)概述(重點(diǎn)掌握)2嵌入式計(jì)算機(jī)_發(fā)展歷史在電子計(jì)算機(jī)發(fā)展的初期,計(jì)算機(jī)一直是“供養(yǎng)”在特殊的機(jī)房中的大型、昂貴的專用設(shè)備,主要是實(shí)現(xiàn)一些特殊的數(shù)值計(jì)算。同時微處理器表現(xiàn)出的智能化水平引起了設(shè)備制造、機(jī)電控制等專業(yè)人士的興趣,要求將微型機(jī)嵌入到一個控制對象的體系中,實(shí)現(xiàn)對象體系的智能化控制。微處理器的問世極大的促進(jìn)了控制領(lǐng)域的發(fā)展,復(fù)雜的控制系統(tǒng)最初只是由簡單的設(shè)備組成,以微處理器這樣的部件作為主要的控制和反饋器件,極大的提高了系統(tǒng)的可控性和智能化3嵌入式計(jì)算機(jī)_發(fā)展歷史經(jīng)過發(fā)展,到80年代初微處理器及微控制器各自已發(fā)展為一個龐大的家族,以Intel公司x86為主流的應(yīng)用于個人計(jì)算機(jī)PC的微處理器格局已形成。為了區(qū)別于原有使用在PC的通用計(jì)算機(jī),把嵌入到對象體系中、實(shí)現(xiàn)對象體系智能化控制的微控制器的計(jì)算機(jī),稱作嵌入式計(jì)算機(jī)。4嵌入式計(jì)算機(jī)_基本概念隨著計(jì)算機(jī)技術(shù)對其它行業(yè)的廣泛滲透和與其它行業(yè)應(yīng)用技術(shù)的相互結(jié)合,以應(yīng)用為中心的分類方法變得似乎更加切合實(shí)際發(fā)展;也就是按計(jì)算機(jī)的嵌入式應(yīng)用和非嵌入式應(yīng)用將其分為通用計(jì)算機(jī)和嵌入式計(jì)算機(jī)。而通用計(jì)算機(jī)具有一般計(jì)算機(jī)的基本標(biāo)準(zhǔn)形態(tài),通過裝配不同的應(yīng)用軟件,以基本雷同的面目出現(xiàn)并應(yīng)用在社會的各個方面,其典型產(chǎn)品為PC;而非通用計(jì)算機(jī)的計(jì)算機(jī)-嵌入式計(jì)算機(jī),則是非通用計(jì)算機(jī)形態(tài)的計(jì)算機(jī)應(yīng)用它是以作為嵌入式系統(tǒng)的核心部件的形式隱藏在各種裝置、設(shè)備、產(chǎn)品和系統(tǒng)中。5嵌入式系統(tǒng)的概念
嵌入式系統(tǒng)是嵌入到對象體中的專用計(jì)算機(jī)系統(tǒng)以嵌入式計(jì)算機(jī)為核心的嵌入式系統(tǒng)是繼IT網(wǎng)絡(luò)技術(shù)之后,又一個新的技術(shù)發(fā)展方向。IEEE對嵌入式系統(tǒng)的定義為:嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置”(devicesusedtocontrol、monitor、orassisttheoperationofequipment、machineryorplants)這主要是從應(yīng)用對象上加以定義,涵蓋了軟、硬件及輔助機(jī)械設(shè)備。6嵌入式系統(tǒng)的概念_國內(nèi)的定義什么是嵌入式系統(tǒng),目前國內(nèi)對嵌入式系統(tǒng)有多種定義。傳統(tǒng)的嵌入式系統(tǒng)定義是:嵌入式計(jì)算機(jī)系統(tǒng)是嵌入在其他設(shè)備中,起智能控制作用的專用計(jì)算機(jī)系統(tǒng)。
目前流行的嵌入式系統(tǒng)定義是:嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)相比較而言,國內(nèi)的定義更全面一些,體現(xiàn)了嵌入式系統(tǒng)“嵌入”、“專用性”、“計(jì)算機(jī)”的基本要素和特征。7嵌入式系統(tǒng)的特點(diǎn)由于嵌入式系統(tǒng)是應(yīng)用于特定環(huán)境下,針對特定用途來設(shè)計(jì)的系統(tǒng),所以不同于通用計(jì)算機(jī)系統(tǒng)。同樣是計(jì)算機(jī)系統(tǒng),嵌入式系統(tǒng)是針對具體應(yīng)用設(shè)計(jì)的“專用系統(tǒng)”。它的硬件和軟件都必須高效率地設(shè)計(jì)、“量體裁衣”、去除冗余,力爭在較少的資源上實(shí)現(xiàn)更高的性能。它與通用的計(jì)算機(jī)系統(tǒng)相比具有以下顯著特點(diǎn):8嵌入式系統(tǒng)的特點(diǎn)
(嵌入式系統(tǒng)與PC之間的區(qū)別)嵌入式系統(tǒng)一般是專用系統(tǒng),而PC是通用計(jì)算平臺嵌入式系統(tǒng)的資源比PC少得多嵌入式系統(tǒng)軟件故障帶來的后果比PC機(jī)大得多嵌入式系統(tǒng)一般采用實(shí)時操作系統(tǒng)嵌入式系統(tǒng)大都有成本、功耗的要求嵌入式系統(tǒng)得到多種微處理體系的支持嵌入式系統(tǒng)需要專用的開發(fā)工具9嵌入式系統(tǒng)的分類按表現(xiàn)形式分(硬件范疇)芯片級嵌入(含程序或算法的處理器)模塊級嵌入(系統(tǒng)中的某個核心模塊)系統(tǒng)級嵌入按實(shí)時性要求分(軟件范疇):非實(shí)時系統(tǒng)(PDA)軟實(shí)時系統(tǒng)(消費(fèi)類產(chǎn)品)硬實(shí)時系統(tǒng)(工業(yè)和軍工系統(tǒng))10嵌入式系統(tǒng)的組成結(jié)構(gòu)嵌入式系統(tǒng)是“專用計(jì)算機(jī)應(yīng)用系統(tǒng)”,它具有一般計(jì)算機(jī)組成的共性,也是由硬件和軟件組成;下圖完整的描述了嵌入式系統(tǒng)的軟、硬件各部分的組成結(jié)構(gòu)。11
應(yīng)用程序?qū)崟r操作系統(tǒng)(RTOS)輸入輸出接口處理器/ARM核MMU/CacheSOC/SOPCUSBGPIOIISLCDUART和IrDAADC/DACFPGA/CPLDDSP/浮點(diǎn)運(yùn)算協(xié)處理器DMA電源管理圖典型的嵌入式系統(tǒng)組成人機(jī)交互接口LCD/觸摸屏、鍵盤、鼠標(biāo)設(shè)備驅(qū)動程序、HAL、BSP文件系統(tǒng)/圖形用戶應(yīng)用程序接口驅(qū)動層OS層應(yīng)用層軟件硬件以太網(wǎng)看門狗及復(fù)位電路Timer/RTCCANFlashEEPROMSDRAMSRAM內(nèi)存12嵌入式系統(tǒng)的組成結(jié)構(gòu)嵌入式系統(tǒng)的硬件是嵌入式系統(tǒng)軟件環(huán)境運(yùn)行的基礎(chǔ),它提供了嵌入式系統(tǒng)軟件運(yùn)行的物理平臺和通信接口;嵌入式操作系統(tǒng)和嵌入式應(yīng)用軟件則是整個系統(tǒng)的控制核心,控制整個系統(tǒng)運(yùn)行、提供人機(jī)交互的信息等。由于嵌入式系統(tǒng)和實(shí)際應(yīng)用對象密切相關(guān),而實(shí)際應(yīng)用非常繁雜,應(yīng)用也日新月異,很難用一種構(gòu)架或模型加以描述。13嵌入式系統(tǒng)的組成結(jié)構(gòu)
_硬件基本結(jié)構(gòu)介紹嵌入式系統(tǒng)的硬件架構(gòu)是以嵌入式處理器為中心,配置存儲器、I/O設(shè)備、通信模塊以及電源等必要的輔助接口組成。嵌入式系統(tǒng)是“量身定做”的“專用計(jì)算機(jī)應(yīng)用系統(tǒng)”,又不同于普通計(jì)算機(jī)組成,在實(shí)際應(yīng)用中的嵌入式系統(tǒng)硬件配置非常精簡,除了微處理器和基本的外圍電路以外,其余的電路都可以根據(jù)需要和成本進(jìn)行“裁剪”、“定制化”(Customize),非常經(jīng)濟(jì)、可靠。
14嵌入式系統(tǒng)的組成結(jié)構(gòu)
_硬件基本結(jié)構(gòu)介紹嵌入式系統(tǒng)硬件核心是嵌入式微處理器,有時為了提高系統(tǒng)的信息處理能力,常常外接DSP和DSP協(xié)處理器(也可內(nèi)部集成)完成高性能信號處理。隨著計(jì)算機(jī)技術(shù)、微電子技術(shù)、應(yīng)用技術(shù)的不斷發(fā)展和納米芯片加工工藝技術(shù)的發(fā)展,以微處理器為核心的集成多種功能的SoC系統(tǒng)芯片已成為嵌入式系統(tǒng)的核心,在嵌入式系統(tǒng)設(shè)計(jì)中,要盡可能的選擇能滿足系統(tǒng)功能接口的SoC芯片,這些SoC集成了大量的外圍USB、UART、以太網(wǎng)、AD/DA、IIS(Inter—ICSound)等功能模塊。15嵌入式系統(tǒng)的組成結(jié)構(gòu)
_硬件基本結(jié)構(gòu)介紹可編程片上系統(tǒng)SOPC(SystemOnProgrammableChip)結(jié)合了SoC和PLD、FPGA各自的技術(shù)優(yōu)點(diǎn),使得系統(tǒng)具有可編程的功能,是可編程邏輯器件在嵌入式應(yīng)用中的完美體現(xiàn),極大的提高了系統(tǒng)的在線升級、換代能力。以SoC/SOPC為核心,可以用最少的外圍部件和連接部件構(gòu)成一個應(yīng)用系統(tǒng),滿足系統(tǒng)的功能需求,也是嵌入式系統(tǒng)發(fā)展的一個方向因此現(xiàn)代嵌入式設(shè)計(jì)是以處理器/SoC/SOPC為核心,完成系統(tǒng)設(shè)計(jì)的,其外圍接口包括存儲設(shè)備、通信接口設(shè)備、擴(kuò)展設(shè)備接口和輔助的機(jī)電設(shè)備(電源、連接器、傳感器等)構(gòu)成硬件系統(tǒng)。16嵌入式系統(tǒng)硬件嵌入式系統(tǒng)的硬件是以嵌入式處理器為核心,配置必要的外圍接口部件。在嵌入式系統(tǒng)設(shè)計(jì)中,盡可能的選擇能滿足系統(tǒng)功能接口的SoC/SOPC芯片,以最少的外圍部件構(gòu)成一個應(yīng)用系統(tǒng),滿足嵌入式系統(tǒng)的特殊需求。17嵌入式處理器
嵌入式處理器可以分為三類:
嵌入式微處理器(Microprocessor)嵌入式微控制器MCU(MicrocontrollerUnit)嵌入式DSP(DigitalSignalProcessor)18ARM公司介紹20世紀(jì)90年代初,半導(dǎo)體行業(yè)產(chǎn)業(yè)鏈形成設(shè)計(jì)業(yè)、制造業(yè)、封裝測試業(yè)三業(yè)分離的產(chǎn)業(yè)分工。臺積電、聯(lián)電等半導(dǎo)體代工廠崛起,一些fabless、chipless公司如雨后春筍般涌現(xiàn)出來。而英國先進(jìn)RISC機(jī)器公司(AdvancedRISCMachines,簡稱ARM公司)作為fabless、chipless這一生產(chǎn)模式最為成功的典范,既不生產(chǎn)芯片,也不銷售芯片,而是設(shè)計(jì)出高效的IP(intellectualproperty)內(nèi)核,授權(quán)給各半導(dǎo)體公司使用;半導(dǎo)體公司在ARM技術(shù)的基礎(chǔ)上,根據(jù)自己公司的產(chǎn)品定位,添加自己的設(shè)計(jì)并推出芯片產(chǎn)品;最后由OEM客戶采用這些芯片來構(gòu)建基于ARM技術(shù)的最終應(yīng)用系統(tǒng)產(chǎn)品19ARM公司介紹ARM公司是一個全球領(lǐng)先的嵌入式微處理器IP核供應(yīng)商;而自己從不介入芯片的生產(chǎn)銷售,既不生產(chǎn)芯片也不銷售芯片;它提供一些高性能、低功耗、低成本和高可靠性的RISC處理器核、外圍部件和系統(tǒng)級芯片應(yīng)用解決、設(shè)計(jì)方案;ARM的微處理器核適用于便攜式通訊工具、手持式計(jì)算機(jī)、多媒體數(shù)字消費(fèi)類產(chǎn)品和嵌入式系統(tǒng)解決方案;20ARM公司介紹ARM處理器是精簡指令集計(jì)算機(jī)(RISC)最初ARM是1983到1985年間在英國劍橋的AcornComputer公司開發(fā)的。它是第一個為商業(yè)用途開發(fā)的RISC微處理器,同后來的RISC體系結(jié)構(gòu)有明顯的不同。1990年11月27日,Acorn公司正式改組為ARM計(jì)算機(jī)公司。蘋果公司出資150萬英鎊,芯片廠商VLSI出資25萬英鎊,Acorn本身則以150萬英鎊的知識產(chǎn)權(quán)和12名工程師入股。公司的辦公地點(diǎn)非常簡陋,就是一個谷倉。從那以后,ARM已被授權(quán)給世界各地的許多半導(dǎo)體制造廠。它已經(jīng)成為低功耗和追求成本的嵌入式應(yīng)用的市場領(lǐng)導(dǎo)者。21ARM系列內(nèi)核介紹ARM處理器核當(dāng)前有7個系列產(chǎn)品:ARM7ARM9ARM9EARM10E,SecurCoreARM11Cortex系列(A,R,M系列)Intel公司推出的:StrongARMXScale22ARM7性能特征23嵌入式操作系統(tǒng)
嵌入式操作系統(tǒng)是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺,它是一段嵌入在目標(biāo)代碼中的軟件,用戶的其它應(yīng)用程序都建立在操作系統(tǒng)之上。嵌入式操作系統(tǒng)大部分是實(shí)時操作系統(tǒng)RTOS,RTOS是一個可靠性和可信度很高的實(shí)時內(nèi)核,將CPU時間、中斷、I/O、定時器等資源都包裝起來,留給用戶一個標(biāo)準(zhǔn)的API,并根據(jù)各個任務(wù)的優(yōu)先級,合理地在不同任務(wù)之間分配CPU時間。為了滿足嵌入式系統(tǒng)的需要,嵌入式操作系統(tǒng)必須包括操作系統(tǒng)的一些最基本的功能,如中斷處理與進(jìn)程調(diào)度,用戶可以通過API來使用操作系統(tǒng)。大多嵌入式系統(tǒng)應(yīng)用在實(shí)時環(huán)境中,因此嵌入式操作系統(tǒng)跟實(shí)時(Real-Time)操作系統(tǒng)密切聯(lián)系在一起。24嵌入式實(shí)時操作系統(tǒng)RTOS嵌入在系統(tǒng)的目標(biāo)代碼中,系統(tǒng)復(fù)位并執(zhí)行完BootLoader后執(zhí)行,用戶的其它應(yīng)用程序都建立在RTOS之上。RTOS是一個標(biāo)準(zhǔn)的內(nèi)核,將CPU時間、中斷、I/O、定時器等資源都包裝起來,留給用戶一個標(biāo)準(zhǔn)的API接口。實(shí)時操作系統(tǒng)可以根據(jù)實(shí)際應(yīng)用環(huán)境的要求對內(nèi)核進(jìn)行剪裁和重新配置,組成可根據(jù)實(shí)際的不同應(yīng)用領(lǐng)域而有所不同。但以下幾個重要組成部分是不太變化的:實(shí)時內(nèi)核、網(wǎng)絡(luò)組件、文件系統(tǒng)和圖形接口等。
嵌入式操作系統(tǒng)的種類繁多,但大體上可分為兩種——商用型和免費(fèi)型。目前商用型的操作系統(tǒng)主要有VxWorks,WindowsCE,WindowsMobile,Psos、PalmOS,QNX等;25典型嵌入式操作系統(tǒng)介紹它們的優(yōu)點(diǎn)是功能穩(wěn)定、可靠,有完善的技術(shù)支持和售后服務(wù),而且提供了如圖形用戶界面和網(wǎng)絡(luò)支持等高端嵌入式系統(tǒng)要求許多高級的功能;缺點(diǎn)是價格昂貴且源代碼封閉性,這大大限制了開發(fā)者的積極性。目前免費(fèi)型的操作系統(tǒng)主要有Linux,μC/OS-II,Android等。它們在價格方面具有很大的優(yōu)勢。比如,嵌入式Linux操作系統(tǒng)以價格低廉、功能強(qiáng)大、易于移植而且程序源碼全部公開等優(yōu)點(diǎn)正在被廣泛采用,成為新興的力量。26典型嵌入式操作系統(tǒng)介紹μC/OS-II嵌入式操作系統(tǒng)內(nèi)核
μC/OS-II是一個可裁減的、源碼開放的、結(jié)構(gòu)小巧、可剝奪型的實(shí)時多任務(wù)內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高、占用空間小、可移植性強(qiáng)、實(shí)時性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn)。μC/OS-II中最多可以支持64個任務(wù),分別對應(yīng)優(yōu)先級0~63,其中0為最高優(yōu)先級。實(shí)時內(nèi)核在任何時候都是運(yùn)行就緒了的最高優(yōu)先級的任務(wù),是真正的實(shí)時操作系統(tǒng)。μC/OS-II最大程度上使用ANSIC語言開發(fā),現(xiàn)已成功移植到近40多種處理器體系上。27典型嵌入式操作系統(tǒng)介紹WinCE操作系統(tǒng)
MicrosoftWindowsCE是針對有限資源的平臺而設(shè)計(jì)的多線程、完整優(yōu)先權(quán)、多任務(wù)的操作系統(tǒng),但它不是一個硬實(shí)時操作系統(tǒng)。高度模塊化是WinCE的一個鮮為人知的特性,這一特性有利與它對從掌上電腦到專用的工業(yè)控制器的用戶電子設(shè)備進(jìn)行定制。WinCE操作系統(tǒng)的基本內(nèi)核需要至少200K的ROM,它支持
Win32API子集、多種用戶界面硬件、多種的串行和網(wǎng)絡(luò)通訊技術(shù)、COM/OLE和其他的進(jìn)程間通訊的先進(jìn)方法。Microsoft公司為WindowsCE提供了PlatformBuilder和EmbeddedVisualStudio開發(fā)工具。28典型嵌入式操作系統(tǒng)介紹Linux操作系統(tǒng)
Linux類似于UNIX,是一種免費(fèi)的、源代碼完全開放的、符合POSIX(PortableOperatingSystemInterfaceofUnix)標(biāo)準(zhǔn)規(guī)范的操作系統(tǒng)。
Linux的系統(tǒng)界面和編程接口與UNIX很相似,所以UNIX程序員可以很容易地從UNIX環(huán)境下轉(zhuǎn)移到Linux環(huán)境中來。Linux擁有現(xiàn)代操作系統(tǒng)所具有的內(nèi)容:真正的搶先式多任務(wù)處理、支持多用戶、內(nèi)存保護(hù)、虛擬內(nèi)存、支持對稱多處理機(jī)SMP(symmetricmultiprocessing)、符合POSIX標(biāo)準(zhǔn)、支持TCP/IP、支持絕大多數(shù)的32位和64位CPU。嵌入式Linux版本眾多,如支持硬實(shí)時的Linux-RT-Linux/RTAI、Embedix、BlueCatLinux和HardHatLinux等29典型嵌入式操作系統(tǒng)介紹μClinux
μClinux是針對無MMU(內(nèi)存管理單元)微處理器開發(fā)的,已經(jīng)被廣泛使用在ColdFire、ARM、MIPS、SPARC、SuperH等等沒有MMU的微處理器上。雖然μClinux的內(nèi)核要比原Linux2.0內(nèi)核小的多,但保留了Linux操作系統(tǒng)穩(wěn)定性好,網(wǎng)絡(luò)能力優(yōu)異以及對文件系統(tǒng)的支持等主要優(yōu)點(diǎn)。30嵌入式應(yīng)用軟件開發(fā)
嵌入式應(yīng)用軟件是實(shí)現(xiàn)系統(tǒng)各種功能的關(guān)鍵,好的應(yīng)用軟件使得同樣的硬件平臺更好、更高效的完成系統(tǒng)功能,使系統(tǒng)具有更大的經(jīng)濟(jì)價值。嵌入式應(yīng)用軟件是針對特定應(yīng)用的、基于相應(yīng)的硬件平臺,為完成用戶預(yù)期任務(wù)而設(shè)計(jì)的計(jì)算機(jī)軟件。用戶的任務(wù)有時間、精度的要求,同時嵌入式系統(tǒng)對于實(shí)現(xiàn)成本十分敏感;因此在滿足系統(tǒng)功能要求的前提下,就要最大限度的減少系統(tǒng)的成本,除了精簡每個硬件單元的成本外,還應(yīng)該盡可能地減少嵌入式應(yīng)用軟件的代碼量。這就要求嵌入式應(yīng)用軟件不但要保證準(zhǔn)確性、安全性、穩(wěn)定性以滿足應(yīng)用要求,還要盡可能地優(yōu)化。31
嵌入式軟件開發(fā)環(huán)境嵌入式開發(fā)環(huán)境組成交叉開發(fā)環(huán)境模擬開發(fā)環(huán)境評估電路板32嵌入式開發(fā)環(huán)境組成交叉開發(fā)環(huán)境作為嵌入式系統(tǒng)應(yīng)用的ARM處理器,其應(yīng)用軟件的開發(fā)屬跨平臺開發(fā),因此需要一個交叉開發(fā)環(huán)境。交叉開發(fā)是指在一臺通用計(jì)算機(jī)上進(jìn)行軟件的編輯編譯,然后下載到嵌入式設(shè)備中進(jìn)行運(yùn)行調(diào)試的開發(fā)方式。用來開發(fā)的通用計(jì)算機(jī)可以選用比較常見的PC機(jī)、工作站等,運(yùn)行通用的Windows或Unix操作系統(tǒng)。開發(fā)計(jì)算機(jī)一般稱宿主機(jī),嵌入式設(shè)備稱為目標(biāo)機(jī),在宿主機(jī)上編譯好的程序,下載到目標(biāo)機(jī)上運(yùn)行,交叉開發(fā)環(huán)境提供調(diào)試工具對目標(biāo)機(jī)上運(yùn)行的程序進(jìn)行調(diào)試。33交叉開發(fā)環(huán)境一般由運(yùn)行于宿主機(jī)上的交叉開發(fā)軟件(最少必須包含編譯調(diào)試模塊)、宿主機(jī)到目標(biāo)機(jī)的調(diào)試通道組成。運(yùn)行于宿主機(jī)上的交叉開發(fā)軟件最少必須包含編譯調(diào)試模塊,其編譯器為交叉編譯器。作為宿主機(jī)的一般為基于x86體系的桌上型計(jì)算機(jī),而編譯出的代碼必須在ARM體系結(jié)構(gòu)的目標(biāo)機(jī)上運(yùn)行,這就是所謂的交叉編譯了。在宿主機(jī)上編譯好目標(biāo)代碼后,通過宿主機(jī)到目標(biāo)機(jī)的調(diào)試通道將代碼下載到目標(biāo)機(jī),然后由運(yùn)行于宿主機(jī)的調(diào)試軟件控制代碼在目標(biāo)機(jī)上運(yùn)行調(diào)試。為了方便調(diào)試開發(fā),交叉開發(fā)軟件一般為一個整合編輯、編譯匯編鏈接、調(diào)試、工程管理及函數(shù)庫等功能模塊的集成開發(fā)環(huán)境IDE(IntegratedDevelopmentEnvironment)。
34組成ARM交叉開發(fā)環(huán)境的宿主機(jī)到目標(biāo)機(jī)的調(diào)試通道一般有以下三種:
基于JTAG的ICD(In-CircuitDebugger)。
Angel調(diào)試監(jiān)控軟件。
在線仿真器ICE(In-CircuitEmulator)。
35模擬開發(fā)環(huán)境在很多時候?yàn)楸WC項(xiàng)目進(jìn)度,硬件和軟件開發(fā)往往同時進(jìn)行,這時作為目標(biāo)機(jī)的硬件環(huán)境還沒有建立起來,軟件的開發(fā)就需要一個模擬環(huán)境來進(jìn)行調(diào)試。模擬開發(fā)環(huán)境建立在交叉開發(fā)環(huán)境基礎(chǔ)之上,是對交叉開發(fā)環(huán)境的補(bǔ)充。這時,除了宿主機(jī)和目標(biāo)機(jī)之外,還需要提供一個在宿主機(jī)上模擬目標(biāo)機(jī)的環(huán)境,使得開發(fā)好的程序直接在這個環(huán)境里運(yùn)行調(diào)試。36模擬開發(fā)環(huán)境
模擬硬件環(huán)境是非常復(fù)雜的,由于指令集模擬器與真實(shí)的硬件環(huán)境相差很大,即使用戶使用指令集模擬器調(diào)試通過的程序也有可能無法在真實(shí)的硬件環(huán)境下運(yùn)行,因此軟件模擬不可能完全代替真正的硬件環(huán)境,這種模擬調(diào)試只能作為一種初步調(diào)試,主要是用作用戶程序的模擬運(yùn)行,用來檢查語法、程序的結(jié)構(gòu)等簡單錯誤,用戶最終還必須在真實(shí)的硬件環(huán)境中實(shí)際運(yùn)行調(diào)試,完成整個應(yīng)用的開發(fā)。37評估電路板
評估電路板,也稱作開發(fā)板,一般用來作為開發(fā)者學(xué)習(xí)板、實(shí)驗(yàn)板,可以作為應(yīng)用目標(biāo)板出來之前的軟件測試、硬件調(diào)試的電路板。尤其是對應(yīng)用系統(tǒng)的功能沒有完全確定、初步進(jìn)行嵌入式開發(fā)且沒有相關(guān)開發(fā)經(jīng)驗(yàn)的非常重要。開發(fā)評估電路板并不是ARM應(yīng)用開發(fā)必須的,對于有經(jīng)驗(yàn)的工程師完全可以自行獨(dú)立設(shè)計(jì)自己的應(yīng)用電路板和根據(jù)開發(fā)需要設(shè)計(jì)實(shí)驗(yàn)板。好的評估電路板一般文檔齊全,對處理器的常用功能模塊和主流應(yīng)用都有硬件實(shí)現(xiàn),并提供電路原理圖和相關(guān)開發(fā)例程與源代碼供用戶設(shè)計(jì)自己的應(yīng)用目標(biāo)板和應(yīng)用程序作參考。選購合適于自己實(shí)際應(yīng)用的開發(fā)板可以加快開發(fā)進(jìn)度,可以減少自行設(shè)計(jì)開發(fā)的工作量。38嵌入式開發(fā)的考慮要素嵌入式系統(tǒng)是以實(shí)際應(yīng)用為主要考慮對象的專用計(jì)算機(jī)系統(tǒng),嵌入式特點(diǎn)就是軟硬件可配置、功能可靠、成本低、體積小、功耗低、實(shí)時性強(qiáng)。因此嵌入式系統(tǒng)受功能和具體應(yīng)用環(huán)境的約束,其開發(fā)流程就不同于一般的通用計(jì)算機(jī)系統(tǒng)。在嵌入式系統(tǒng)設(shè)計(jì)開發(fā)時必須考慮以下因素:
39
嵌入式開發(fā)的考慮要素
功能可靠實(shí)用、便于升級;
實(shí)時并發(fā)處理,及時響應(yīng);
體積符合要求,結(jié)構(gòu)緊湊;
接口符合規(guī)范,易于操作;
配置精簡穩(wěn)定,維護(hù)便利;功耗管理嚴(yán)格,成本低廉。
40
Embest
EDUKIT-III
實(shí)驗(yàn)教學(xué)系統(tǒng)第2章41一.
EmbestARM教學(xué)系統(tǒng)介紹EmbestARM教學(xué)系統(tǒng)包括EmbestIDE集成開發(fā)環(huán)境,EmbestJTAG仿真器,F(xiàn)lash編程器,EmbestEduKit-III開發(fā)板、各種連接線、電源適配器以及實(shí)驗(yàn)指導(dǎo)書等。基本實(shí)驗(yàn)?zāi)P褪疽鈭D如下:42EduKit-III開發(fā)板介紹43EduKit-III開發(fā)板介紹·SD卡接口模塊·PCI擴(kuò)展接口·10/100M以太網(wǎng)接口·蜂鳴器·8段數(shù)碼管·雙CAN總線模塊·CF卡接口模塊·步進(jìn)電機(jī)模塊·直流電機(jī)模塊·IDE硬盤接口·CPLD模塊(ComplexProgrammableLogicDevice)·MICROPHONE輸入口·IIS音頻信號輸入口·ADC模數(shù)轉(zhuǎn)換模塊·SPI(Serial
Peripheralinterface)·高速硬件仿真器·GPRS模塊(選配)·GPS模塊(選配)·藍(lán)牙模塊(選配)·攝像頭模塊(選配)44EmbestIDE集成開發(fā)環(huán)境EmbestIDE是一套應(yīng)用于嵌入式軟件開發(fā)的新一代集成開發(fā)環(huán)境。它提供高效明晰的圖形化的嵌入式應(yīng)用軟件開發(fā)平臺,包括一整套完備的面向嵌入式系統(tǒng)的開發(fā)和調(diào)試工具:編輯器、編譯器、連接器、調(diào)試器、工程管理器等。EmbestIDE集成開發(fā)環(huán)境界面風(fēng)格同MicrosoftVisualStudio,是一套良好的嵌入式軟件可視化開發(fā)環(huán)境。用戶可以很方便的在EmbestIDE集成開發(fā)環(huán)境中創(chuàng)建和打開工程,建立、打開和編輯文件,編譯、連接、運(yùn)行、調(diào)試各種嵌入式應(yīng)用程序。EmbestIDE開發(fā)環(huán)境界面如圖所示4546EmbestJTAG 仿真器JTAG仿真器也稱為JTAG調(diào)試器,是通過ARM芯片的JTAG邊界掃描口進(jìn)行調(diào)試的設(shè)備。JTAG仿真器連接比較方便,通過現(xiàn)有的JTAG邊界掃描口與ARMCPU核通信,屬于完全非插入式(即不使用片上資源)調(diào)試,它無需目標(biāo)存儲器,不占用目標(biāo)系統(tǒng)的任何端口,而這些是駐留監(jiān)控軟件所必需的。另外,由于JTAG調(diào)試的目標(biāo)程序是在目標(biāo)板上執(zhí)行,仿真更接近于目標(biāo)硬件,因此,許多接口問題,如高頻操作限制、AC和DC參數(shù)不匹配,電線長度的限制等被最小化了。使用集成開發(fā)環(huán)境配合JTAG仿真器進(jìn)行開發(fā)是目前采用最多的一種調(diào)試方式。EmbestJTAG仿真器如下圖所示。47EmbestJTAG 仿真器48EmbestJTAG 仿真器目前分為三種類型,包括標(biāo)準(zhǔn)型(EmbestEmulatorforARM),增強(qiáng)型(EmbestPowerICEforARM)和通用型(EmbestUnetICEforARM),主要區(qū)別在于下載調(diào)試的速度不同。其中EmbestEmulatorforARM,EmbestPowerICEforARM根據(jù)采用打印機(jī)并口(LPTx)與主機(jī)通訊,即仿真器一端是一個DB25的接口,用于連接計(jì)算機(jī)的并行口,另外一端是20針的IDC插頭,用于連接目標(biāo)板。EmbestUnetICEforARM 則可以使用USB接口或EthernetRJ45接口與主機(jī)通訊,分別使用USB線或交叉網(wǎng)線與主機(jī)USB或RJ45接口相連。EmbestJTAG仿真器面板上面都有三只指示燈,對當(dāng)前的工作狀態(tài)做出指示。EmbestJTAG 仿真器49Flash 編程器當(dāng)用戶程序編寫完之后,需要把程序生成的二進(jìn)制執(zhí)行文件燒寫到開發(fā)板的Flash存儲器中觀察實(shí)際運(yùn)行結(jié)果。英蓓特公司提供了一套完善的Flash編程器,用戶可以直接使用該編程器對開發(fā)板上的Flash進(jìn)行讀寫(使用時需要配合前面提到的EmbestJTAG 仿真器)。其運(yùn)行界面如圖2-4所示:50教學(xué)系統(tǒng)硬件及電路
EmbestEduKit-III 教學(xué)實(shí)驗(yàn)平臺是一款功能強(qiáng)大的32 位的嵌入式開發(fā)板,里面采用了SAMSUNG公司的ARM7TDMI-S為內(nèi)核的處理S3C44B0X,同時可以兼容S3C2410,具有TAG調(diào)試等功能。板上提供了一些鍵盤、LED和串口等一些常用的功能模塊,并且具有IDE硬件接口,CF存儲卡接口、以太網(wǎng)接口和SD卡接口等等,對用戶在32位ARM嵌入式領(lǐng)域進(jìn)行開發(fā)實(shí)驗(yàn)非常方便。51S3C2410S3C2410是韓國三星公司的一款寄予ARM920T內(nèi)核的16/32位RISC嵌入式微處理器,主要面向手持設(shè)備以及高性價比,低功耗的應(yīng)用。運(yùn)行頻率可達(dá)203MHz。ARM920T核由ARM9TDMI,存儲管理單元(MMU)和高速緩存三部分組成。其中MMU可以管理虛擬內(nèi)存,高速緩存由獨(dú)立的16KB地址和16KB數(shù)據(jù)高速Cache組成。S3C2410的資源包括:1個LCD控制器(支持STN和TFT帶有觸摸屏的液晶顯示屏)SDRAM控制器3個通道的UART4個通道的DMA52S3C24104個具有PWM功能的計(jì)時器和一個內(nèi)部時鐘8通道的10位ADC觸摸屏接口IIS總線接口2個USB主機(jī)接口,1個USB接口設(shè)備2個SPI接口SD接口和MMC卡接口看門狗計(jì)數(shù)器117個通用I/O口和24位外部中斷源8通道10位AD控制器53二.基于ARM核的嵌入式
開發(fā)環(huán)境介紹54主要內(nèi)容開發(fā)環(huán)境開發(fā)流程工程的建立與配置編寫軟件源文件軟件工程的編譯鏈接軟件調(diào)試可執(zhí)行文件固化551、開發(fā)環(huán)境56EmbestIDEARM開發(fā)板Embest仿真器EmbestIDE開發(fā)環(huán)境開發(fā)環(huán)境的組成PC57開發(fā)環(huán)境的連接58增強(qiáng)型仿真器PowerICE120KByte/S標(biāo)準(zhǔn)型仿真器Emulator25KByte/SEmbest仿真器592、開發(fā)流程60開發(fā)流程工程建立
源文件
編譯
調(diào)試
固化C語言程序*.c匯編源程序*.s鏈接腳本文件*.ld命令腳本文件*.CS存儲區(qū)映像文件*.map61嵌入式應(yīng)用軟件開發(fā)的基本流程
嵌入式軟件開發(fā)流程圖鏈接器命令文件編譯預(yù)處理編譯器匯編器Archive工具鏈接器和定位器頭文件(*.h,*.hpp)可重定位目標(biāo)文件庫文件(*.a,*.lib)頭文件(*.h,*.hpp)C/C++源代碼匯編源代碼源文件列表源文件列表源代碼編輯階段源文件編譯階段鏈接與重定位調(diào)試與下載階段重定位文件表(*.o,*.a)共享目標(biāo)文件(*.o,*.a)可執(zhí)行映象(*.elf,*.coff)鏈接映射文件(*.map)設(shè)備程序員目標(biāo)開發(fā)系統(tǒng)I/O
口實(shí)驗(yàn)(重點(diǎn)掌握)實(shí)驗(yàn)?zāi)康恼莆誗3C2410X芯片的I/O控制寄存器的配置;通過實(shí)驗(yàn)掌握ARM芯片使用I/O口控制LED顯示;了解ARM芯片中復(fù)用I/O口的使用方法。實(shí)驗(yàn)設(shè)備硬件:EmbestEduKit-III實(shí)驗(yàn)平臺,EmbestARM標(biāo)準(zhǔn)/增強(qiáng)型仿真器套件,PC機(jī)。軟件:EmbestIDEforARM集成開發(fā)環(huán)境,Windows/XP。實(shí)驗(yàn)內(nèi)容編寫程序,控制實(shí)驗(yàn)平臺的發(fā)光二極管LED1,LED2,LED3,LED4,使它們有規(guī)律的點(diǎn)亮和熄滅,具體順序如下:LED1亮->LED2亮->LED3亮->LED4亮->LED1滅->LED2滅->LED3滅->LED4滅->全亮->全滅,如此反復(fù)。實(shí)驗(yàn)原理S3C2410X芯片上共有117個多功能的輸入輸出管腳,他們分為8組I/O端口:一個23位的輸出端口(端口A);兩個11位的輸入/輸出端口(端口B、H);四個16位的輸入/輸出端口(端口C、D、E、G);一個8位的輸入/輸出端口(端口F);可以很容易的每組端口來滿足不同系統(tǒng)配置和設(shè)計(jì)的需要。運(yùn)行程序之前必須對每個用到的管腳功能進(jìn)行設(shè)置,如果某些管腳的復(fù)用功能沒有使用,可以先將該管腳設(shè)置為I/O口。1.S3C2410XI/O端口控制端口控制寄存器(GPACON-GPHCON)在S3C2410X中,大多數(shù)的管腳都復(fù)用,所以必須對每個管腳進(jìn)行配置。端口控制寄存器定義了每個管腳的功能。如果GPF0-GPF7和GPG0-GPG7在掉電模式使用了弱上拉信號,這些端口必須在中斷模式配置。端口數(shù)據(jù)寄存器(GPADAT-GPHDAT)如果端口被配置成了輸出端口,可以向PnDAT的相應(yīng)位寫數(shù)據(jù)。如果端口被配置成了輸入端口,可以從PnDAT的相應(yīng)位讀出數(shù)據(jù)。端口上拉寄存器端口上拉寄存器(GPBUP-GPHUP)端口上拉寄存器控制了每個端口組的上拉電阻的允許/禁止。如果某一位0,相應(yīng)的上拉電阻被允許,如果是1,相應(yīng)的上拉電阻被禁止。如果端口的上拉電阻被允許,無論在哪種狀態(tài)(INPUT,OUTPUT,DATAn,EINTn等)下,上拉電阻都要起作用。1.S3C2410XI/O端口控制多狀態(tài)控制寄存器這個寄存器控制數(shù)據(jù)端口的上拉電阻,高阻態(tài),USBpad和CLKOUT選項(xiàng)。外部中斷控制寄存器(EXTINTN)24個外部中斷有各種各樣的中斷請求信號,EXTINTN寄存器可以配置信號的類型為低電平觸發(fā),高電平觸發(fā),下降沿觸發(fā),上升沿觸發(fā),兩沿觸發(fā)中斷請求。8個外部中斷引腳有數(shù)字濾波器(參考數(shù)據(jù)手冊中的EINTFLTn)。只有16個外部中斷(EINT[15:0])用于喚醒cpu。掉電模式和I/O端口在掉電模式下仍然保持所有的GPIO的所有狀態(tài)值,。EINTMASK在掉電模式下也不能阻止喚醒cpu。如果EINTMASK屏蔽了EINT[15:4]的某一位,仍然可以喚醒cpu,但是SRCPND的EINT4_7位和EINT8_23位不能在cpu喚醒后馬上被置位。2.I/O端口控制寄存器I/O端口A控制寄存器I/O端口B控制寄存器…………I/O端口H控制寄存器以端口A,C,F(xiàn),H為例來說明端口A(23位).GPACON[22:0]中的某一位置1,設(shè)置與該位相對應(yīng)的引腳為功能端口,.置0,為輸出口端口E
(16位)如果端口E被配置為輸入端口,可以從引腳讀出相應(yīng)外部輸入源輸入的數(shù)據(jù)。如果端口被配置為輸出端口,向寄存器寫的數(shù)據(jù)可以被送往相應(yīng)的引腳。如果端口被配置為功能引腳,從該引腳讀出的數(shù)據(jù)不確定。置位GPEUP[15:0]的某一位允許相應(yīng)引腳的上拉功能,否則禁止上拉功能。端口E
(16位)端口F
端口H3.電路設(shè)計(jì)GPF7GPF6GPF5GPF4如圖所示,LED1-4分別與GPF7-4相連,通過GPF7-4引腳的高低電平來控制發(fā)光二極管的亮與滅。當(dāng)這幾個管腳輸出高電平的時候發(fā)光二極管熄滅,反之,發(fā)光二極管點(diǎn)亮。D1205->LED3D1207->LED1D1206->LED2D1204->LED4注意:學(xué)習(xí)機(jī)上的LED燈,并不是按順序布放的,編程時要注意程序分析(main.c,led_test.c)#include"2410lib.h"voidMain(intargc,char**argv){ sys_init();/*Initials3c2410'sClock,MMU,Interrupt,PortandUART*/ while(1) led_test();}voidled_on(void){ inti,nOut; nOut=0xF0; //11110000 rGPFDAT=nOut&0xd0;//0xd0=11010000,led3亮
for(i=0;i<100000;i++); rGPFDAT=nOut&0x50;//0x50=01010000,led3,led1亮
for(i=0;i<100000;i++); rGPFDAT=nOut&0x40;//0x40=01000000,led3,led1,led4亮
for(i=0;i<100000;i++); rGPFDAT=nOut&0x00;//0x00=00000000,都亮
for(i=0;i<100000;i++); rGPFDAT=nOut;}voidled_off(void){ inti,nOut; nOut=0; rGPFDAT=0; for(i=0;i<100000;i++); rGPFDAT=nOut|0x20;//0x20=00100000,led3滅
for(i=0;i<100000;i++); rGPFDAT|=nOut|0xa0;//0xa0=10100000,led1,led3滅
for(i=0;i<100000;i++); rGPFDAT|=nOut|0xb0;//0xb0=10110000,led1,led3,led4滅
for(i=0;i<100000;i++); rGPFDAT|=nOut|0xf0;//0xf0=11110000,都滅
for(i=0;i<100000;i++);}voidled_on_off(void){ inti; rGPFDAT=0; for(i=0;i<100000;i++); rGPFDAT=0xF0; for(i=0;i<100000;i++); }voidled_test(void){ rGPFCON=0x5500;//0101010100000000,PORTF7/6/5/4OUTPUT rGPFUP=0;//PULL-UPENABLE rGPBCON=rGPBCON&0xFFFFFC|1;//beepconfiguration //0xFC=11111100|1=11111101,B口的0位作輸出,接蜂鳴器
uart_printf("\nI/O(DiodeLed)TestExample\n"); rGPBDAT&=0xFFFFFE;//0xE=1110B,最后一位是低電平,發(fā)聲!
led_on(); led_off(); led_on_off(); rGPBDAT|=1;//最后一位是高電平,蜂鳴器停止發(fā)聲!
delay(1000); rGPFCON=0x55aa;//GPF1,GPF0=10:EINT1,EINT0,(2410lib.c) uart_printf("end.\n");}串口通信實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康牧私釹3C2410X處理器UART相關(guān)控制寄存器的使用。熟悉ARM處理器系統(tǒng)硬件電路中UART接口的設(shè)計(jì)方法。掌握ARM處理器串行通信的軟件編程方法。實(shí)驗(yàn)設(shè)備硬件:EmbestEduKit-III實(shí)驗(yàn)平臺,EmbestARM標(biāo)準(zhǔn)/增強(qiáng)型仿真器套件,PC機(jī)。軟件:EmbestIDEforARM集成開發(fā)環(huán)境,Windows/XP。實(shí)驗(yàn)內(nèi)容編寫S3C2410X處理器的串口通信程序,監(jiān)視串行口UART0動作;將從UART0接收到的字符串回送顯示。串口通信實(shí)驗(yàn)實(shí)驗(yàn)原理1.S3C2410X串行通訊(UART)單元S3C2410XUART單元提供三個獨(dú)立的異步串行通信接口,皆可工作于中斷和DMA模式。使用系統(tǒng)時鐘最高波特率達(dá)230.4Kbps,如果使用外部設(shè)備提供的時鐘,可以達(dá)到更高的速率。每一個UART單元包含一個16字節(jié)的FIFO,用于數(shù)據(jù)的接收和發(fā)送。S3C2410XUART支持可編程波特率,紅外發(fā)送/接收,一個或兩個停止位,5bit/6bit/7bit/或8bit數(shù)據(jù)寬度和奇偶校驗(yàn)。串口通信實(shí)驗(yàn)2.波特率的產(chǎn)生波特率由一個專用的UART波特率分頻寄存器(UBRDIVn)控制,計(jì)算公式如下:UBRDIVn=(int)(ULK/(bpsx16))–1或者UBRDIVn=(int)(PLK/(bpsx16))–1其中:時鐘選用 ULK(外部)還是PLK(內(nèi)部)由UART控制寄存器UCONn[10]的狀態(tài)決定。如果UCONn[10]=0,用PLK作為波特率發(fā)生,否則選用ULK做波特率發(fā)生。UBRDIVn的值必須在1到(216-1)之間。例如:ULK或者PLK等于40MHz,當(dāng)波特率為115200時,UBRDIVn=(int)(40000000/(115200x16))-1=(int)(21.7)-1=21-1=20串口通信實(shí)驗(yàn)3.UART通信操作下面簡略介紹UART操作:發(fā)送數(shù)據(jù)幀是可編程的。一個數(shù)據(jù)幀包含一個起始位,5到8個數(shù)據(jù)位,一個可選的奇偶校驗(yàn)位和1到2位停止位,停止位通過行控制寄存器ULCONn配置。與發(fā)送類似,接收幀也是可編程的。接收幀由一個起始位,5到8個數(shù)據(jù)位,一個可選的奇偶校驗(yàn)和1到2位行控制寄存器ULCONn里的停止位組成。接收器還可以檢測溢出錯,奇偶校驗(yàn)錯,幀錯誤和傳輸中斷,每一個錯誤均可以設(shè)置一個錯誤標(biāo)志。溢出錯誤(Overrunerror)是指已接收到的數(shù)據(jù)在讀取之前被新接收的數(shù)據(jù)覆蓋。奇偶校驗(yàn)錯是指接收器檢測到的校驗(yàn)和與設(shè)置的不符。幀錯誤指沒有接收到有效的停止位。傳輸中斷表示接收數(shù)據(jù)RxDn保持邏輯0超過一幀的傳輸時間。在FIFO模式下,如果RxFIFO非空,而在3個字的傳輸時間內(nèi)沒有接收到數(shù)據(jù),則產(chǎn)生超時。
UART
控制寄存器
1)UART行控制寄存器ULCONn該寄存器的第6
位決定是否使用紅外模式,位5~3
決定校驗(yàn)方式,位2
決定停止位長度,位1和0決定每幀的數(shù)據(jù)位數(shù)。2)UART控制寄存器UCONn該寄存器決定UART的各種模式。UCONn[10]=1:ULK做比特率發(fā)生;0:PLK做比特率發(fā)生。UCONn[9]=1:Tx中斷電平觸發(fā);0:Tx中斷脈沖觸發(fā)。UCONn[8]=1:Rx中斷電平觸發(fā);0:Rx中斷脈沖觸發(fā)。UCONn[7]=1:接收超時中斷允許;0:接收超時中斷不允許。UCONn[6]=1:產(chǎn)生接收錯誤中斷;0:不產(chǎn)生接收錯誤中斷。UCONn[5]=1:發(fā)送直接傳給接收方式(Loopback);0:正常模式。UCONn[4]=1:發(fā)送間斷信號;0:正常模式發(fā)送。UCONn[3:2]: 發(fā)送模式選擇00:不允許發(fā)送;01:中斷或查詢模式10:DMA0請求(UART0)DMA3請求(UART2)11:DMA1請求(UART1).UCONn[1:0]: 接收模式選擇00:不允許接收01:中斷或查詢模式10:DMA0請求(UART0)DMA3請求(UART2)11:DMA1請求(UART1)
(001001000101)B=0x2453)UARTFIFO控制寄存器UFCONnUFCONn[7:6] =00:TxFIFO寄存器中有0個字節(jié)就觸發(fā)中斷01:TxFIFO寄存器中有4個字節(jié)就觸發(fā)中斷10:TxFIFO寄存器中有8個字節(jié)就觸發(fā)中斷11:TxFIFO寄存器中有0個字節(jié)就觸發(fā)中斷UFCONn[5:4]=00:RxFIFO寄存器中有0個字節(jié)就觸發(fā)中斷01:RxFIFO寄存器中有4個字節(jié)就觸發(fā)中斷10:RxFIFO寄存器中有8個字節(jié)就觸發(fā)中斷11:RxFIFO寄存器中有0個字節(jié)就觸發(fā)中斷UFCONn[3]:保留。UFCONn[2]=1:FIFO復(fù)位清零TxFIFO;0:FIFO復(fù)位不清零TxFIFOUFCONn[1]=1:FIFO復(fù)位清零RxFIFO;0:FIFO復(fù)位不清零RxFIFOUFCONn[0]=1:允許FIFO功能;0:不允許FIFO功能4)UARTMODEM控制寄存器
UMCONn(n=0
或1)UMCONn[7:5]保留,必須全為0UMCONn[4]=1:允許使用AFC(自動流控)模式;0:不允許使用AFCUMCONn[3:1]保留,必須全為0UMCONn[0]=1:激活nRTS;0:不激活nRTS5)發(fā)送寄存器UTXH和接收寄存器URXH這兩個寄存器存放著發(fā)送和接收的數(shù)據(jù),當(dāng)然只有一個字節(jié)8位數(shù)據(jù)。需要注意的是在發(fā)生溢出錯誤的時候,接收的數(shù)據(jù)必須被讀出來,否則會引發(fā)下次溢出錯誤。6)波特率分頻寄存器UBRDIV。//UART0#definerULCON0(*(volatileunsigned*)0x50000000)//UART0Linecontrol#definerUCON0(*(volatileunsigned*)0x50000004)//UART0Control#definerUFCON0(*(volatileunsigned*)0x50000008)//UART0FIFOcontrol#definerUMCON0(*(volatileunsigned*)0x5000000c)//UART0Modemcontrol#definerUTRSTAT0(*(volatileunsigned*)0x50000010)//UART0Tx/Rxstatus#definerUERSTAT0(*(volatileunsigned*)0x50000014)//UART0Rxerrorstatus#definerUFSTAT0(*(volatileunsigned*)0x50000018)//UART0FIFOstatus#definerUMSTAT0(*(volatileunsigned*)0x5000001c)//UART0Modemstatus#definerUBRDIV0(*(volatileunsigned*)0x50000028)//UART0Baudratedivisor……#definerUTXH0(*(volatileunsignedchar*)0x50000023)//UART0TransmissionHold#definerURXH0(*(volatileunsignedchar*)0x50000027)//UART0Receivebuffer#definerUTXH1(*(volatileunsignedchar*)0x50004023)//UART1TransmissionHold#definerURXH1(*(volatileunsignedchar*)0x50004027)//UART1Receivebuffer#definerUTXH2(*(volatileunsignedchar*)0x50008023)//UART2TransmissionHold#definerURXH2(*(volatileunsignedchar*)0x50008027)//UART2Receivebuffer在2410addr.h文件中有關(guān)于UART單元各寄存器的定義:UART
初始化代碼下面列出的兩個函數(shù),是我們本實(shí)驗(yàn)用到的兩個主要函數(shù),包括UART初始化,字符的接收函數(shù),希望大家仔細(xì)閱讀,理解每一行的含義
這幾個函數(shù)可以在例程目錄下\common\include\2410lib.c文件內(nèi)找到。voiduart_init(intnMainClk,intnBaud,intnChannel){inti;if(nMainClk==0)nMainClk=PCLK;switch(nChannel){caseUART0: rUFCON0=0x0;//UARTchannel0FIFOcontrolregister,FIFOdisable rUMCON0=0x0;//UARTchaneel0MODEMcontrolregister,AFCdisable rULCON0=0x3;//Linecontrolregister:Normal,Noparity,1stop,8bits rUCON0=0x245; rUBRDIV0=((int)(nMainClk/16./nBaud+0.5)-1); //Baudratedivisiorregister0break;……下面是接收字符的實(shí)現(xiàn)函數(shù):
charuart_getch(void){if(f_nWhichUart==0){while(!(rUTRSTAT0&0x1));//ReceivedatareadyreturnRdURXH0();}elseif(f_nWhichUart==1){while(!(rUTRSTAT1&0x1));//ReceivedatareadyreturnRdURXH1();}elseif(f_nWhichUart==2){while(!(rUTRSTAT2&0x1));//ReceivedatareadyreturnRdURXH2();}}下面是發(fā)送字符的實(shí)現(xiàn)函數(shù):voidSendByte(intport,U8data){switch(port) { case0: while(!(rUTRSTAT0&0x4)); rUTXH0=data; break; case1: while(!(rUTRSTAT1&0x4)); rUTXH1=data; break; case2: while(!(rUTRSTAT2&0x4)); rUTXH2=data; break; default: break; }}voidScom_Init(intport,intparity,intstop,intdata,U32baud){ //Ports:GPH10GPH9GPH8GPH7GPH6GPH5GPH4GPH3GPH2GPH1GPH0//Signal:CLKOUT1CLKOUT0UCLKRXD2TXD2RXD1TXD1RXD0TXD0nRTS0nCTS0//Binary:10,1010,1010,1010,1010,1010 rGPHCON=0x2aaaaa;//設(shè)置H口
switch(port)
{ case0: DisableIrq(BIT_UART0); rUFCON0=0x0; rUMCON0=0x0; rULCON0=(parity<<3)|(stop<<2)|(data); //parity:0-無較驗(yàn),4-奇較驗(yàn),5-偶較驗(yàn)
//stop:0-1個停止位,1-2個停止位
//data:0-5位.1-6位,2-7位,3-8位
rUCON0=0x245; rUBRDIV0=((int)(PCLK/16./baud+0.5)-1); pISR_UART0=(U32)Scom0_ISR; rINTSUBMSK=rINTSUBMSK&(~(1<<0)); EnableIrq(BIT_UART0); break;
初始化實(shí)現(xiàn)函數(shù)RS232
接口電路
本教學(xué)實(shí)驗(yàn)平臺的電路中,UART0串口電路如圖所示,UART0只采用二根接線RXD0和TXD0,因此只能進(jìn)行簡單的數(shù)據(jù)傳輸及接收功能。UART0采用MAX3232作為電平轉(zhuǎn)換器邏輯1(MARK)=-3V~-15V邏輯0(SPACE)=+3~+15V中斷實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康耐ㄟ^實(shí)驗(yàn)掌握ARM處理器的中斷方式和中斷處理。熟悉S3C2410X的中斷控制寄存器的使用;了解不同中斷觸發(fā)方式對中斷產(chǎn)生的影響;理解S3C2410X處理器的中斷響應(yīng)過程;熟練掌握如何進(jìn)行ARM處理器中斷處理的軟件編程方法。實(shí)驗(yàn)設(shè)備硬件:EmbestEduKit-III實(shí)驗(yàn)平臺,EmbestARM標(biāo)準(zhǔn)/增強(qiáng)型仿真器套件,PC機(jī)。軟件:EmbestIDEforARM集成開發(fā)環(huán)境,Windows/XP。實(shí)驗(yàn)內(nèi)容編寫中斷處理程序,實(shí)現(xiàn):由UART0選擇輸入使用不同的中斷觸發(fā)方式,使能外部中斷Eint0,11;在不同的中斷觸發(fā)方式下,使用按鈕SB1202觸發(fā)EINT0,同時在超級終端的主窗中顯示外部中斷號;在不同的中斷觸發(fā)方式下,使用按鈕SB1203觸發(fā)EINT11,同時在超級終端的主窗口中顯示外部中斷號;中斷是指計(jì)算機(jī)在執(zhí)行程序的過程中,當(dāng)出現(xiàn)異常情況或特殊請求時,計(jì)算機(jī)停止現(xiàn)行程序的運(yùn)行,轉(zhuǎn)向?qū)@些異常情況或特殊請求的處理,處理結(jié)束后再返回現(xiàn)行程序的間斷處,繼續(xù)執(zhí)行原程序。實(shí)驗(yàn)原理S3C2410的中斷控制器可以處理多達(dá)
56個中斷源的中斷請求。這些中斷源可以是來自片內(nèi)外設(shè)的中斷,比如
DMA、UART、IIC等;也可以是處理器的外部中斷輸入引腳。在這些中斷源中,部分中斷源通過分支中斷控制器來申請使用中斷,這部分中斷源包括(11個):
INT_ADC//AD轉(zhuǎn)換中斷INT_TC//觸摸屏中斷
INT_ERR2UART2 收發(fā)錯誤中斷INT_TXD2UART2 發(fā)送中斷INT_RXD2UART2 接收中斷INT_ERR1UART1 收發(fā)錯誤中斷INT_TXD1UART1
發(fā)送中斷INT_RXD1UART1 接收中斷INT_ERR0UART0 收發(fā)錯誤中斷INT_TXD0UART0
發(fā)送中斷INT_RXD0UART0 接收中斷片內(nèi)外設(shè)
UARTn中斷和外部中斷輸入
EINTn是邏輯或的關(guān)系,它們共用一條中斷請求線。中斷優(yōu)先級仲裁
若嵌入式系統(tǒng)中由多個中斷源,則這些中斷源必須要進(jìn)行中斷優(yōu)先級的排列。所謂優(yōu)先級,指的以下兩層含義:·若有2個及2個以上的中斷源同時提出中斷請求,微處理器先響應(yīng)哪個中斷源,后響應(yīng)哪個中斷源?!と?個中斷源提出中斷請求,并得到響應(yīng)后,又有1個中斷源提出中斷請求,后來的中斷源能否中斷前一個中斷源的中斷服務(wù)程序。S3C2410的中斷系統(tǒng)實(shí)際上,S3C2410的中斷系統(tǒng)分成兩級,一級是控制內(nèi)部外圍I/O端口或部件、或者芯片外部中斷引(EINTn)的中斷控制;另一級是ARM920T核的異常中斷控制,采用了固定向量中斷方式。S3C2410芯片中的中斷控制器可以支持56個中斷源提出的中斷請求
這些中斷源由芯片內(nèi)部的I/O端口或部件如DMA控制器、UART、IIC、RTC等,以及外部中斷引腳提供。在這些中斷源中,有些中斷,如串行接口UARTn中斷和外部中斷EINTn中斷對于中斷控制器來說都是共用的。當(dāng)S3C2410芯片的內(nèi)部外圍I/O端口或部件提出中斷請求、或者芯片外部中斷引腳(EINTn)收到中斷請求時,中斷控制器經(jīng)過仲裁之后再請求ARM9核的FIQ或IRQ中斷。S3C2410的中斷系統(tǒng)邏輯圖S3C2410芯片中斷控制器支持的56個中斷源,由于其中有些中斷共用中斷請求信號線,因此,實(shí)際中斷請求信號有32個。這32個中斷請求的優(yōu)先級仲裁判決機(jī)制采用了中斷優(yōu)先級編碼判斷電路原理。其裁決邏輯由7個基本裁決器組成,其中6個一級裁決器和1個二級裁決器。S3C2410芯片的32個中斷請求信號,在系統(tǒng)復(fù)位初始狀態(tài)下,按照前圖中由上到下的順序,中斷優(yōu)先級由高到低排列,即EINT0中斷優(yōu)先級最高,INT_ADC中斷優(yōu)先級最低。S3C2410X中斷源(1)S3C2410X中斷源(2)中斷控制寄存器用S3C2410的中斷方式來控制I/O端口或部件操作時,除了要對I/O端口或部件的相應(yīng)寄存器進(jìn)行初始化設(shè)置外,還需對中斷控制器的5個控制寄存器進(jìn)行初始化設(shè)置。這5個寄存器是:源未決(掛起)寄存器、中斷模式寄存器、屏蔽寄存器、優(yōu)先級寄存器、中斷未決(掛起)寄存器。
源未決(掛起)寄存器源未決寄存器(SRCPND)由32位構(gòu)成,每一位與一個中斷請求信號相關(guān)聯(lián)。當(dāng)某個中斷源請求中斷服務(wù)時,SRCPND寄存器的相應(yīng)位被置為1,即首先在源未決寄存器中登記。因此,該寄存器記錄了哪個中斷源的請求在等待處理。注意:SRCPND寄存器的每一位由中斷源自動設(shè)置,而不管中斷屏蔽寄存器(INTMASK)中對應(yīng)的位是否被屏蔽。此外,SRCPND寄存器也不受中斷控制器的優(yōu)先級邏輯影響。
源未決寄存器(SRCPND)當(dāng)中斷源發(fā)出中斷請求的時候,就會置位源未決寄存器的相應(yīng)位。反之,中斷的未決寄存器的值為0。SRCPND=SRCPND源未決寄存器(SRCPND)源未決寄存器(SRCPND)中斷模式寄存器(INTMOD)中斷模式寄存器INTMOD共有32位,每一位對應(yīng)著一個中斷源,當(dāng)中斷源的模式位設(shè)置為1時,對應(yīng)的中斷會由ARM920T內(nèi)核以FIQ模式來處理。相反的,當(dāng)模式位設(shè)置為0時,中斷會以IRQ模式來處理。中斷控制寄存器中只有一個中斷源可以被設(shè)置為FIQ模式,因此只能在緊急情況下使用FIQ。如果INTMOD寄存器把某個中斷設(shè)為FIQ模式,F(xiàn)IQ中斷不影響INTPND和INTOFFSET寄存器,因此,這兩個寄存器只對IRQ模式中斷有效。中斷模式寄存器(INTMOD)中斷模式寄存器(INTMOD)中斷屏蔽寄存器(INTMSK)寄存器有32位,分別對應(yīng)一個中斷源。當(dāng)中斷源的屏蔽位設(shè)置為1時,CPU不響應(yīng)該中斷源的中斷請求,反之,等于0時CPU能響應(yīng)該中斷源的中斷請求。中斷屏蔽寄存器(INTMSK)中斷屏蔽寄存器(INTMSK)中斷優(yōu)先權(quán)寄存器(PRIORITY)S3C2410X中的優(yōu)先級產(chǎn)生模塊,包含7個單元,1個主單元和6個從單元。兩個從優(yōu)先級產(chǎn)生單元管理4個中斷源,四個從優(yōu)先級產(chǎn)生單元管理6個中斷源。主優(yōu)先級產(chǎn)生單元管理6個從單元。每一個從單元有4個可編程優(yōu)先級中斷源和2個固定優(yōu)先級中斷源。這4個中斷源的優(yōu)先級是由ARB_SEL和ARM_MODE決定的。另外2個固定優(yōu)先級中斷源在6個中斷源中的優(yōu)先級最低。中斷優(yōu)先權(quán)寄存器(PRIORITY)中斷優(yōu)先權(quán)寄存器(PRIORITY)優(yōu)先級生成模塊中斷未決(掛起)寄存器(INTPND)INTPND寄存器是32位寄存器,寄存器中的每一位對應(yīng)一個中斷源。只有未被屏蔽且具有最高優(yōu)先級、在源未決寄存器中等待處理的中斷請求可以把其對應(yīng)的中斷未決位置1。因此,INTPND寄存器中只有一位可以設(shè)置為1,同時,中斷控制器產(chǎn)生IRQ信號給ARM920T核。在IRQ的中斷服務(wù)例程里,設(shè)計(jì)者可以讀取該寄存器,從而獲知哪個中斷源被處理。當(dāng)INTPND寄存器的一個未決位被設(shè)置為1,只要ARM920T核內(nèi)部的狀態(tài)寄存器PSR中的I標(biāo)志和F標(biāo)志被清零,對應(yīng)的中斷服務(wù)例程就可以開始執(zhí)行。INTPND寄存器是可讀寫的,在中斷服務(wù)例程里面必須清除中斷未決位。
在編程操作INTPND寄存器時,應(yīng)注意以下兩點(diǎn):·如果發(fā)生了FIQ模式的中斷,那么INTPND寄存器中相應(yīng)的位將不會置1,因?yàn)镮NTPND寄存器只對IRQ模式下的中斷有效。
·清除INTPND寄存器的中斷未決位時要謹(jǐn)慎。因?yàn)?,INTPND寄存器是通過寫數(shù)據(jù)位1而對未決位清零的。如果INTPND寄存器為1的位試圖通過寫數(shù)據(jù)位0來清除,那么INTPND和INTOFFSET寄存器在某些情況下可能會具有不可預(yù)料的值。因此,切記不要往INTPND寄存器中為1的位寫數(shù)據(jù)位0。清除INTPND寄存器的未決位最簡捷的方法就是將INTPND寄存器的值寫回到INTPND寄存器里。即:rINTPND=rINTPND;中斷未決寄存器(INTPND)中斷未決寄存器(INTPND)外部中斷控制寄存器EXTINTEXTINT0外部中斷控制寄存器EXTINT用來設(shè)置外部中斷的觸發(fā)模式,共有3個:EXTINT0(INT0—7),EXTINT1(INT8—15),EXTINT2(INT9—23).中斷編程模式S3C2410芯片的I/O端口或部件若采用中斷方式控制操作時,其編程的內(nèi)容實(shí)際上涉及四部分,既:·建立系統(tǒng)中斷向量表,并且設(shè)置ARM920T核的程序狀態(tài)寄存器CPSR中的F位和I位。一般情況下中斷均需使用數(shù)據(jù)棧,因此,還需建立用戶數(shù)據(jù)棧。這一部分內(nèi)容對應(yīng)的程序指令,通常編寫在系統(tǒng)引導(dǎo)程序中·設(shè)置S3C2410芯片中56個中斷源的中斷向量。通常需要利用未決寄存器或地址偏移寄存器來計(jì)算,若中斷號還對應(yīng)有子中斷(如中斷號為5時,對應(yīng)EINT8_23),需求出子中斷的地址偏移。
·中斷控制初始化。主要是初始化S3C2410芯片內(nèi)部的中斷控制的寄存器。針對某個具體的中斷源,設(shè)置其中斷控制模式、中斷是否屏蔽、中斷優(yōu)先級等。中斷向量表:#definepISR_EINT0 (*(unsigned*)(_ISR_STARTADDRESS+0x20))#definepISR_EINT1 (*(unsigned*)(_ISR_STARTADDRESS+0x24))#definepISR_EINT2 (*(unsigned*)(_ISR_STARTADDRESS+0x28))#definepISR_EINT3 (*(unsigned*)(_ISR_STARTADDRESS+0x2c))#definepISR_EINT4_7 (*(unsigned*)(_ISR_STARTADDRESS+0x30))#definepISR_EINT8_23 (*(unsigned*)(_ISR_STARTADDRESS+0x34))#definepISR_BAT_FLT (*(unsigned*)(_ISR_STARTADDRESS+0x3c))#definepISR_TICK (*(unsigned*)(_ISR_STARTADDRESS+0x40))#definepISR_TIMER0 (*(unsigned*)(_ISR_STARTADDRESS+0x48))#definepISR_TIMER1 (*(unsigned*)(_ISR_STARTADDRESS+0x4c))#definepISR_TIMER2 (*(unsigned*)(_ISR_STARTADDRESS+0x50))#definepISR_TIMER3 (*(unsigned*)(_ISR_STARTADDRESS+0x54))
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公室房屋租賃合同范本
- 制作買賣合同范本
- 2025年度建筑模板工程承包及綠色建材應(yīng)用合同
- 加工輔料采購合同范本
- 勞務(wù)合同范本辦理流程
- 2025年度建筑工程施工材料供應(yīng)承包協(xié)議
- 2025年中國魚肝油市場供需預(yù)測及投資戰(zhàn)略研究咨詢報告
- 2025年度文化創(chuàng)意產(chǎn)業(yè)園區(qū)工裝設(shè)計(jì)施工一體化合同
- 2025年度智慧家居安裝勞務(wù)分包合同個人版
- 2025年度新能源汽車研發(fā)借款合同范本
- 55項(xiàng)臨床護(hù)理技術(shù)操作標(biāo)準(zhǔn)(49-55項(xiàng))
- 中國主要蜜源植物蜜源花期和分布知識
- 電化學(xué)免疫傳感器的應(yīng)用
- (2024年)面神經(jīng)炎課件完整版
- 數(shù)據(jù)中心基礎(chǔ)知識培訓(xùn)-2024鮮版
- 第4課+中古時期的亞洲(教學(xué)設(shè)計(jì))-【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- 保障性住房建設(shè)資金來源與運(yùn)作機(jī)制
- 金點(diǎn)子活動總結(jié)匯報
- 原料驗(yàn)收標(biāo)準(zhǔn)知識培訓(xùn)課件
- 江蘇春節(jié)風(fēng)俗 南京夫子廟、鹽水鴨與昆曲
- Unit4MyfamilyStorytime(課件)人教新起點(diǎn)英語三年級下冊
評論
0/150
提交評論