嵌入式總復習_第1頁
嵌入式總復習_第2頁
嵌入式總復習_第3頁
嵌入式總復習_第4頁
嵌入式總復習_第5頁
已閱讀5頁,還剩241頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1第1章嵌入式系統(tǒng)概述(重點掌握)2嵌入式計算機_發(fā)展歷史在電子計算機發(fā)展的初期,計算機一直是“供養(yǎng)”在特殊的機房中的大型、昂貴的專用設備,主要是實現(xiàn)一些特殊的數(shù)值計算。同時微處理器表現(xiàn)出的智能化水平引起了設備制造、機電控制等專業(yè)人士的興趣,要求將微型機嵌入到一個控制對象的體系中,實現(xiàn)對象體系的智能化控制。微處理器的問世極大的促進了控制領域的發(fā)展,復雜的控制系統(tǒng)最初只是由簡單的設備組成,以微處理器這樣的部件作為主要的控制和反饋器件,極大的提高了系統(tǒng)的可控性和智能化3嵌入式計算機_發(fā)展歷史經(jīng)過發(fā)展,到80年代初微處理器及微控制器各自已發(fā)展為一個龐大的家族,以Intel公司x86為主流的應用于個人計算機PC的微處理器格局已形成。為了區(qū)別于原有使用在PC的通用計算機,把嵌入到對象體系中、實現(xiàn)對象體系智能化控制的微控制器的計算機,稱作嵌入式計算機。4嵌入式計算機_基本概念隨著計算機技術對其它行業(yè)的廣泛滲透和與其它行業(yè)應用技術的相互結(jié)合,以應用為中心的分類方法變得似乎更加切合實際發(fā)展;也就是按計算機的嵌入式應用和非嵌入式應用將其分為通用計算機和嵌入式計算機。而通用計算機具有一般計算機的基本標準形態(tài),通過裝配不同的應用軟件,以基本雷同的面目出現(xiàn)并應用在社會的各個方面,其典型產(chǎn)品為PC;而非通用計算機的計算機-嵌入式計算機,則是非通用計算機形態(tài)的計算機應用它是以作為嵌入式系統(tǒng)的核心部件的形式隱藏在各種裝置、設備、產(chǎn)品和系統(tǒng)中。5嵌入式系統(tǒng)的概念

嵌入式系統(tǒng)是嵌入到對象體中的專用計算機系統(tǒng)以嵌入式計算機為核心的嵌入式系統(tǒng)是繼IT網(wǎng)絡技術之后,又一個新的技術發(fā)展方向。IEEE對嵌入式系統(tǒng)的定義為:嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機器和設備的裝置”(devicesusedtocontrol、monitor、orassisttheoperationofequipment、machineryorplants)這主要是從應用對象上加以定義,涵蓋了軟、硬件及輔助機械設備。6嵌入式系統(tǒng)的概念_國內(nèi)的定義什么是嵌入式系統(tǒng),目前國內(nèi)對嵌入式系統(tǒng)有多種定義。傳統(tǒng)的嵌入式系統(tǒng)定義是:嵌入式計算機系統(tǒng)是嵌入在其他設備中,起智能控制作用的專用計算機系統(tǒng)。

目前流行的嵌入式系統(tǒng)定義是:嵌入式系統(tǒng)是以應用為中心,以計算機技術為基礎,并且軟硬件可裁剪,適用于應用系統(tǒng)對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統(tǒng)相比較而言,國內(nèi)的定義更全面一些,體現(xiàn)了嵌入式系統(tǒng)“嵌入”、“專用性”、“計算機”的基本要素和特征。7嵌入式系統(tǒng)的特點由于嵌入式系統(tǒng)是應用于特定環(huán)境下,針對特定用途來設計的系統(tǒng),所以不同于通用計算機系統(tǒng)。同樣是計算機系統(tǒng),嵌入式系統(tǒng)是針對具體應用設計的“專用系統(tǒng)”。它的硬件和軟件都必須高效率地設計、“量體裁衣”、去除冗余,力爭在較少的資源上實現(xiàn)更高的性能。它與通用的計算機系統(tǒng)相比具有以下顯著特點:8嵌入式系統(tǒng)的特點

(嵌入式系統(tǒng)與PC之間的區(qū)別)嵌入式系統(tǒng)一般是專用系統(tǒng),而PC是通用計算平臺嵌入式系統(tǒng)的資源比PC少得多嵌入式系統(tǒng)軟件故障帶來的后果比PC機大得多嵌入式系統(tǒng)一般采用實時操作系統(tǒng)嵌入式系統(tǒng)大都有成本、功耗的要求嵌入式系統(tǒng)得到多種微處理體系的支持嵌入式系統(tǒng)需要專用的開發(fā)工具9嵌入式系統(tǒng)的分類按表現(xiàn)形式分(硬件范疇)芯片級嵌入(含程序或算法的處理器)模塊級嵌入(系統(tǒng)中的某個核心模塊)系統(tǒng)級嵌入按實時性要求分(軟件范疇):非實時系統(tǒng)(PDA)軟實時系統(tǒng)(消費類產(chǎn)品)硬實時系統(tǒng)(工業(yè)和軍工系統(tǒng))10嵌入式系統(tǒng)的組成結(jié)構嵌入式系統(tǒng)是“專用計算機應用系統(tǒng)”,它具有一般計算機組成的共性,也是由硬件和軟件組成;下圖完整的描述了嵌入式系統(tǒng)的軟、硬件各部分的組成結(jié)構。11

應用程序?qū)崟r操作系統(tǒng)(RTOS)輸入輸出接口處理器/ARM核MMU/CacheSOC/SOPCUSBGPIOIISLCDUART和IrDAADC/DACFPGA/CPLDDSP/浮點運算協(xié)處理器DMA電源管理圖典型的嵌入式系統(tǒng)組成人機交互接口LCD/觸摸屏、鍵盤、鼠標設備驅(qū)動程序、HAL、BSP文件系統(tǒng)/圖形用戶應用程序接口驅(qū)動層OS層應用層軟件硬件以太網(wǎng)看門狗及復位電路Timer/RTCCANFlashEEPROMSDRAMSRAM內(nèi)存12嵌入式系統(tǒng)的組成結(jié)構嵌入式系統(tǒng)的硬件是嵌入式系統(tǒng)軟件環(huán)境運行的基礎,它提供了嵌入式系統(tǒng)軟件運行的物理平臺和通信接口;嵌入式操作系統(tǒng)和嵌入式應用軟件則是整個系統(tǒng)的控制核心,控制整個系統(tǒng)運行、提供人機交互的信息等。由于嵌入式系統(tǒng)和實際應用對象密切相關,而實際應用非常繁雜,應用也日新月異,很難用一種構架或模型加以描述。13嵌入式系統(tǒng)的組成結(jié)構

_硬件基本結(jié)構介紹嵌入式系統(tǒng)的硬件架構是以嵌入式處理器為中心,配置存儲器、I/O設備、通信模塊以及電源等必要的輔助接口組成。嵌入式系統(tǒng)是“量身定做”的“專用計算機應用系統(tǒng)”,又不同于普通計算機組成,在實際應用中的嵌入式系統(tǒng)硬件配置非常精簡,除了微處理器和基本的外圍電路以外,其余的電路都可以根據(jù)需要和成本進行“裁剪”、“定制化”(Customize),非常經(jīng)濟、可靠。

14嵌入式系統(tǒng)的組成結(jié)構

_硬件基本結(jié)構介紹嵌入式系統(tǒng)硬件核心是嵌入式微處理器,有時為了提高系統(tǒng)的信息處理能力,常常外接DSP和DSP協(xié)處理器(也可內(nèi)部集成)完成高性能信號處理。隨著計算機技術、微電子技術、應用技術的不斷發(fā)展和納米芯片加工工藝技術的發(fā)展,以微處理器為核心的集成多種功能的SoC系統(tǒng)芯片已成為嵌入式系統(tǒng)的核心,在嵌入式系統(tǒng)設計中,要盡可能的選擇能滿足系統(tǒng)功能接口的SoC芯片,這些SoC集成了大量的外圍USB、UART、以太網(wǎng)、AD/DA、IIS(Inter—ICSound)等功能模塊。15嵌入式系統(tǒng)的組成結(jié)構

_硬件基本結(jié)構介紹可編程片上系統(tǒng)SOPC(SystemOnProgrammableChip)結(jié)合了SoC和PLD、FPGA各自的技術優(yōu)點,使得系統(tǒng)具有可編程的功能,是可編程邏輯器件在嵌入式應用中的完美體現(xiàn),極大的提高了系統(tǒng)的在線升級、換代能力。以SoC/SOPC為核心,可以用最少的外圍部件和連接部件構成一個應用系統(tǒng),滿足系統(tǒng)的功能需求,也是嵌入式系統(tǒng)發(fā)展的一個方向因此現(xiàn)代嵌入式設計是以處理器/SoC/SOPC為核心,完成系統(tǒng)設計的,其外圍接口包括存儲設備、通信接口設備、擴展設備接口和輔助的機電設備(電源、連接器、傳感器等)構成硬件系統(tǒng)。16嵌入式系統(tǒng)硬件嵌入式系統(tǒng)的硬件是以嵌入式處理器為核心,配置必要的外圍接口部件。在嵌入式系統(tǒng)設計中,盡可能的選擇能滿足系統(tǒng)功能接口的SoC/SOPC芯片,以最少的外圍部件構成一個應用系統(tǒng),滿足嵌入式系統(tǒng)的特殊需求。17嵌入式處理器

嵌入式處理器可以分為三類:

嵌入式微處理器(Microprocessor)嵌入式微控制器MCU(MicrocontrollerUnit)嵌入式DSP(DigitalSignalProcessor)18ARM公司介紹20世紀90年代初,半導體行業(yè)產(chǎn)業(yè)鏈形成設計業(yè)、制造業(yè)、封裝測試業(yè)三業(yè)分離的產(chǎn)業(yè)分工。臺積電、聯(lián)電等半導體代工廠崛起,一些fabless、chipless公司如雨后春筍般涌現(xiàn)出來。而英國先進RISC機器公司(AdvancedRISCMachines,簡稱ARM公司)作為fabless、chipless這一生產(chǎn)模式最為成功的典范,既不生產(chǎn)芯片,也不銷售芯片,而是設計出高效的IP(intellectualproperty)內(nèi)核,授權給各半導體公司使用;半導體公司在ARM技術的基礎上,根據(jù)自己公司的產(chǎn)品定位,添加自己的設計并推出芯片產(chǎn)品;最后由OEM客戶采用這些芯片來構建基于ARM技術的最終應用系統(tǒng)產(chǎn)品19ARM公司介紹ARM公司是一個全球領先的嵌入式微處理器IP核供應商;而自己從不介入芯片的生產(chǎn)銷售,既不生產(chǎn)芯片也不銷售芯片;它提供一些高性能、低功耗、低成本和高可靠性的RISC處理器核、外圍部件和系統(tǒng)級芯片應用解決、設計方案;ARM的微處理器核適用于便攜式通訊工具、手持式計算機、多媒體數(shù)字消費類產(chǎn)品和嵌入式系統(tǒng)解決方案;20ARM公司介紹ARM處理器是精簡指令集計算機(RISC)最初ARM是1983到1985年間在英國劍橋的AcornComputer公司開發(fā)的。它是第一個為商業(yè)用途開發(fā)的RISC微處理器,同后來的RISC體系結(jié)構有明顯的不同。1990年11月27日,Acorn公司正式改組為ARM計算機公司。蘋果公司出資150萬英鎊,芯片廠商VLSI出資25萬英鎊,Acorn本身則以150萬英鎊的知識產(chǎn)權和12名工程師入股。公司的辦公地點非常簡陋,就是一個谷倉。從那以后,ARM已被授權給世界各地的許多半導體制造廠。它已經(jīng)成為低功耗和追求成本的嵌入式應用的市場領導者。21ARM系列內(nèi)核介紹ARM處理器核當前有7個系列產(chǎn)品:ARM7ARM9ARM9EARM10E,SecurCoreARM11Cortex系列(A,R,M系列)Intel公司推出的:StrongARMXScale22ARM7性能特征23嵌入式操作系統(tǒng)

嵌入式操作系統(tǒng)是嵌入式應用軟件的基礎和開發(fā)平臺,它是一段嵌入在目標代碼中的軟件,用戶的其它應用程序都建立在操作系統(tǒng)之上。嵌入式操作系統(tǒng)大部分是實時操作系統(tǒng)RTOS,RTOS是一個可靠性和可信度很高的實時內(nèi)核,將CPU時間、中斷、I/O、定時器等資源都包裝起來,留給用戶一個標準的API,并根據(jù)各個任務的優(yōu)先級,合理地在不同任務之間分配CPU時間。為了滿足嵌入式系統(tǒng)的需要,嵌入式操作系統(tǒng)必須包括操作系統(tǒng)的一些最基本的功能,如中斷處理與進程調(diào)度,用戶可以通過API來使用操作系統(tǒng)。大多嵌入式系統(tǒng)應用在實時環(huán)境中,因此嵌入式操作系統(tǒng)跟實時(Real-Time)操作系統(tǒng)密切聯(lián)系在一起。24嵌入式實時操作系統(tǒng)RTOS嵌入在系統(tǒng)的目標代碼中,系統(tǒng)復位并執(zhí)行完BootLoader后執(zhí)行,用戶的其它應用程序都建立在RTOS之上。RTOS是一個標準的內(nèi)核,將CPU時間、中斷、I/O、定時器等資源都包裝起來,留給用戶一個標準的API接口。實時操作系統(tǒng)可以根據(jù)實際應用環(huán)境的要求對內(nèi)核進行剪裁和重新配置,組成可根據(jù)實際的不同應用領域而有所不同。但以下幾個重要組成部分是不太變化的:實時內(nèi)核、網(wǎng)絡組件、文件系統(tǒng)和圖形接口等。

嵌入式操作系統(tǒng)的種類繁多,但大體上可分為兩種——商用型和免費型。目前商用型的操作系統(tǒng)主要有VxWorks,WindowsCE,WindowsMobile,Psos、PalmOS,QNX等;25典型嵌入式操作系統(tǒng)介紹它們的優(yōu)點是功能穩(wěn)定、可靠,有完善的技術支持和售后服務,而且提供了如圖形用戶界面和網(wǎng)絡支持等高端嵌入式系統(tǒng)要求許多高級的功能;缺點是價格昂貴且源代碼封閉性,這大大限制了開發(fā)者的積極性。目前免費型的操作系統(tǒng)主要有Linux,μC/OS-II,Android等。它們在價格方面具有很大的優(yōu)勢。比如,嵌入式Linux操作系統(tǒng)以價格低廉、功能強大、易于移植而且程序源碼全部公開等優(yōu)點正在被廣泛采用,成為新興的力量。26典型嵌入式操作系統(tǒng)介紹μC/OS-II嵌入式操作系統(tǒng)內(nèi)核

μC/OS-II是一個可裁減的、源碼開放的、結(jié)構小巧、可剝奪型的實時多任務內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高、占用空間小、可移植性強、實時性能優(yōu)良和可擴展性強等特點。μC/OS-II中最多可以支持64個任務,分別對應優(yōu)先級0~63,其中0為最高優(yōu)先級。實時內(nèi)核在任何時候都是運行就緒了的最高優(yōu)先級的任務,是真正的實時操作系統(tǒng)。μC/OS-II最大程度上使用ANSIC語言開發(fā),現(xiàn)已成功移植到近40多種處理器體系上。27典型嵌入式操作系統(tǒng)介紹WinCE操作系統(tǒng)

MicrosoftWindowsCE是針對有限資源的平臺而設計的多線程、完整優(yōu)先權、多任務的操作系統(tǒng),但它不是一個硬實時操作系統(tǒng)。高度模塊化是WinCE的一個鮮為人知的特性,這一特性有利與它對從掌上電腦到專用的工業(yè)控制器的用戶電子設備進行定制。WinCE操作系統(tǒng)的基本內(nèi)核需要至少200K的ROM,它支持

Win32API子集、多種用戶界面硬件、多種的串行和網(wǎng)絡通訊技術、COM/OLE和其他的進程間通訊的先進方法。Microsoft公司為WindowsCE提供了PlatformBuilder和EmbeddedVisualStudio開發(fā)工具。28典型嵌入式操作系統(tǒng)介紹Linux操作系統(tǒng)

Linux類似于UNIX,是一種免費的、源代碼完全開放的、符合POSIX(PortableOperatingSystemInterfaceofUnix)標準規(guī)范的操作系統(tǒng)。

Linux的系統(tǒng)界面和編程接口與UNIX很相似,所以UNIX程序員可以很容易地從UNIX環(huán)境下轉(zhuǎn)移到Linux環(huán)境中來。Linux擁有現(xiàn)代操作系統(tǒng)所具有的內(nèi)容:真正的搶先式多任務處理、支持多用戶、內(nèi)存保護、虛擬內(nèi)存、支持對稱多處理機SMP(symmetricmultiprocessing)、符合POSIX標準、支持TCP/IP、支持絕大多數(shù)的32位和64位CPU。嵌入式Linux版本眾多,如支持硬實時的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)絡能力優(yōu)異以及對文件系統(tǒng)的支持等主要優(yōu)點。30嵌入式應用軟件開發(fā)

嵌入式應用軟件是實現(xiàn)系統(tǒng)各種功能的關鍵,好的應用軟件使得同樣的硬件平臺更好、更高效的完成系統(tǒng)功能,使系統(tǒng)具有更大的經(jīng)濟價值。嵌入式應用軟件是針對特定應用的、基于相應的硬件平臺,為完成用戶預期任務而設計的計算機軟件。用戶的任務有時間、精度的要求,同時嵌入式系統(tǒng)對于實現(xiàn)成本十分敏感;因此在滿足系統(tǒng)功能要求的前提下,就要最大限度的減少系統(tǒng)的成本,除了精簡每個硬件單元的成本外,還應該盡可能地減少嵌入式應用軟件的代碼量。這就要求嵌入式應用軟件不但要保證準確性、安全性、穩(wěn)定性以滿足應用要求,還要盡可能地優(yōu)化。31

嵌入式軟件開發(fā)環(huán)境嵌入式開發(fā)環(huán)境組成交叉開發(fā)環(huán)境模擬開發(fā)環(huán)境評估電路板32嵌入式開發(fā)環(huán)境組成交叉開發(fā)環(huán)境作為嵌入式系統(tǒng)應用的ARM處理器,其應用軟件的開發(fā)屬跨平臺開發(fā),因此需要一個交叉開發(fā)環(huán)境。交叉開發(fā)是指在一臺通用計算機上進行軟件的編輯編譯,然后下載到嵌入式設備中進行運行調(diào)試的開發(fā)方式。用來開發(fā)的通用計算機可以選用比較常見的PC機、工作站等,運行通用的Windows或Unix操作系統(tǒng)。開發(fā)計算機一般稱宿主機,嵌入式設備稱為目標機,在宿主機上編譯好的程序,下載到目標機上運行,交叉開發(fā)環(huán)境提供調(diào)試工具對目標機上運行的程序進行調(diào)試。33交叉開發(fā)環(huán)境一般由運行于宿主機上的交叉開發(fā)軟件(最少必須包含編譯調(diào)試模塊)、宿主機到目標機的調(diào)試通道組成。運行于宿主機上的交叉開發(fā)軟件最少必須包含編譯調(diào)試模塊,其編譯器為交叉編譯器。作為宿主機的一般為基于x86體系的桌上型計算機,而編譯出的代碼必須在ARM體系結(jié)構的目標機上運行,這就是所謂的交叉編譯了。在宿主機上編譯好目標代碼后,通過宿主機到目標機的調(diào)試通道將代碼下載到目標機,然后由運行于宿主機的調(diào)試軟件控制代碼在目標機上運行調(diào)試。為了方便調(diào)試開發(fā),交叉開發(fā)軟件一般為一個整合編輯、編譯匯編鏈接、調(diào)試、工程管理及函數(shù)庫等功能模塊的集成開發(fā)環(huán)境IDE(IntegratedDevelopmentEnvironment)。

34組成ARM交叉開發(fā)環(huán)境的宿主機到目標機的調(diào)試通道一般有以下三種:

基于JTAG的ICD(In-CircuitDebugger)。

Angel調(diào)試監(jiān)控軟件。

在線仿真器ICE(In-CircuitEmulator)。

35模擬開發(fā)環(huán)境在很多時候為保證項目進度,硬件和軟件開發(fā)往往同時進行,這時作為目標機的硬件環(huán)境還沒有建立起來,軟件的開發(fā)就需要一個模擬環(huán)境來進行調(diào)試。模擬開發(fā)環(huán)境建立在交叉開發(fā)環(huán)境基礎之上,是對交叉開發(fā)環(huán)境的補充。這時,除了宿主機和目標機之外,還需要提供一個在宿主機上模擬目標機的環(huán)境,使得開發(fā)好的程序直接在這個環(huán)境里運行調(diào)試。36模擬開發(fā)環(huán)境

模擬硬件環(huán)境是非常復雜的,由于指令集模擬器與真實的硬件環(huán)境相差很大,即使用戶使用指令集模擬器調(diào)試通過的程序也有可能無法在真實的硬件環(huán)境下運行,因此軟件模擬不可能完全代替真正的硬件環(huán)境,這種模擬調(diào)試只能作為一種初步調(diào)試,主要是用作用戶程序的模擬運行,用來檢查語法、程序的結(jié)構等簡單錯誤,用戶最終還必須在真實的硬件環(huán)境中實際運行調(diào)試,完成整個應用的開發(fā)。37評估電路板

評估電路板,也稱作開發(fā)板,一般用來作為開發(fā)者學習板、實驗板,可以作為應用目標板出來之前的軟件測試、硬件調(diào)試的電路板。尤其是對應用系統(tǒng)的功能沒有完全確定、初步進行嵌入式開發(fā)且沒有相關開發(fā)經(jīng)驗的非常重要。開發(fā)評估電路板并不是ARM應用開發(fā)必須的,對于有經(jīng)驗的工程師完全可以自行獨立設計自己的應用電路板和根據(jù)開發(fā)需要設計實驗板。好的評估電路板一般文檔齊全,對處理器的常用功能模塊和主流應用都有硬件實現(xiàn),并提供電路原理圖和相關開發(fā)例程與源代碼供用戶設計自己的應用目標板和應用程序作參考。選購合適于自己實際應用的開發(fā)板可以加快開發(fā)進度,可以減少自行設計開發(fā)的工作量。38嵌入式開發(fā)的考慮要素嵌入式系統(tǒng)是以實際應用為主要考慮對象的專用計算機系統(tǒng),嵌入式特點就是軟硬件可配置、功能可靠、成本低、體積小、功耗低、實時性強。因此嵌入式系統(tǒng)受功能和具體應用環(huán)境的約束,其開發(fā)流程就不同于一般的通用計算機系統(tǒng)。在嵌入式系統(tǒng)設計開發(fā)時必須考慮以下因素:

39

嵌入式開發(fā)的考慮要素

功能可靠實用、便于升級;

實時并發(fā)處理,及時響應;

體積符合要求,結(jié)構緊湊;

接口符合規(guī)范,易于操作;

配置精簡穩(wěn)定,維護便利;功耗管理嚴格,成本低廉。

40

Embest

EDUKIT-III

實驗教學系統(tǒng)第2章41一.

EmbestARM教學系統(tǒng)介紹EmbestARM教學系統(tǒng)包括EmbestIDE集成開發(fā)環(huán)境,EmbestJTAG仿真器,F(xiàn)lash編程器,EmbestEduKit-III開發(fā)板、各種連接線、電源適配器以及實驗指導書等?;緦嶒災P褪疽鈭D如下:42EduKit-III開發(fā)板介紹43EduKit-III開發(fā)板介紹·SD卡接口模塊·PCI擴展接口·10/100M以太網(wǎng)接口·蜂鳴器·8段數(shù)碼管·雙CAN總線模塊·CF卡接口模塊·步進電機模塊·直流電機模塊·IDE硬盤接口·CPLD模塊(ComplexProgrammableLogicDevice)·MICROPHONE輸入口·IIS音頻信號輸入口·ADC模數(shù)轉(zhuǎn)換模塊·SPI(Serial

Peripheralinterface)·高速硬件仿真器·GPRS模塊(選配)·GPS模塊(選配)·藍牙模塊(選配)·攝像頭模塊(選配)44EmbestIDE集成開發(fā)環(huán)境EmbestIDE是一套應用于嵌入式軟件開發(fā)的新一代集成開發(fā)環(huán)境。它提供高效明晰的圖形化的嵌入式應用軟件開發(fā)平臺,包括一整套完備的面向嵌入式系統(tǒng)的開發(fā)和調(diào)試工具:編輯器、編譯器、連接器、調(diào)試器、工程管理器等。EmbestIDE集成開發(fā)環(huán)境界面風格同MicrosoftVisualStudio,是一套良好的嵌入式軟件可視化開發(fā)環(huán)境。用戶可以很方便的在EmbestIDE集成開發(fā)環(huán)境中創(chuàng)建和打開工程,建立、打開和編輯文件,編譯、連接、運行、調(diào)試各種嵌入式應用程序。EmbestIDE開發(fā)環(huán)境界面如圖所示4546EmbestJTAG 仿真器JTAG仿真器也稱為JTAG調(diào)試器,是通過ARM芯片的JTAG邊界掃描口進行調(diào)試的設備。JTAG仿真器連接比較方便,通過現(xiàn)有的JTAG邊界掃描口與ARMCPU核通信,屬于完全非插入式(即不使用片上資源)調(diào)試,它無需目標存儲器,不占用目標系統(tǒng)的任何端口,而這些是駐留監(jiān)控軟件所必需的。另外,由于JTAG調(diào)試的目標程序是在目標板上執(zhí)行,仿真更接近于目標硬件,因此,許多接口問題,如高頻操作限制、AC和DC參數(shù)不匹配,電線長度的限制等被最小化了。使用集成開發(fā)環(huán)境配合JTAG仿真器進行開發(fā)是目前采用最多的一種調(diào)試方式。EmbestJTAG仿真器如下圖所示。47EmbestJTAG 仿真器48EmbestJTAG 仿真器目前分為三種類型,包括標準型(EmbestEmulatorforARM),增強型(EmbestPowerICEforARM)和通用型(EmbestUnetICEforARM),主要區(qū)別在于下載調(diào)試的速度不同。其中EmbestEmulatorforARM,EmbestPowerICEforARM根據(jù)采用打印機并口(LPTx)與主機通訊,即仿真器一端是一個DB25的接口,用于連接計算機的并行口,另外一端是20針的IDC插頭,用于連接目標板。EmbestUnetICEforARM 則可以使用USB接口或EthernetRJ45接口與主機通訊,分別使用USB線或交叉網(wǎng)線與主機USB或RJ45接口相連。EmbestJTAG仿真器面板上面都有三只指示燈,對當前的工作狀態(tài)做出指示。EmbestJTAG 仿真器49Flash 編程器當用戶程序編寫完之后,需要把程序生成的二進制執(zhí)行文件燒寫到開發(fā)板的Flash存儲器中觀察實際運行結(jié)果。英蓓特公司提供了一套完善的Flash編程器,用戶可以直接使用該編程器對開發(fā)板上的Flash進行讀寫(使用時需要配合前面提到的EmbestJTAG 仿真器)。其運行界面如圖2-4所示:50教學系統(tǒng)硬件及電路

EmbestEduKit-III 教學實驗平臺是一款功能強大的32 位的嵌入式開發(fā)板,里面采用了SAMSUNG公司的ARM7TDMI-S為內(nèi)核的處理S3C44B0X,同時可以兼容S3C2410,具有TAG調(diào)試等功能。板上提供了一些鍵盤、LED和串口等一些常用的功能模塊,并且具有IDE硬件接口,CF存儲卡接口、以太網(wǎng)接口和SD卡接口等等,對用戶在32位ARM嵌入式領域進行開發(fā)實驗非常方便。51S3C2410S3C2410是韓國三星公司的一款寄予ARM920T內(nèi)核的16/32位RISC嵌入式微處理器,主要面向手持設備以及高性價比,低功耗的應用。運行頻率可達203MHz。ARM920T核由ARM9TDMI,存儲管理單元(MMU)和高速緩存三部分組成。其中MMU可以管理虛擬內(nèi)存,高速緩存由獨立的16KB地址和16KB數(shù)據(jù)高速Cache組成。S3C2410的資源包括:1個LCD控制器(支持STN和TFT帶有觸摸屏的液晶顯示屏)SDRAM控制器3個通道的UART4個通道的DMA52S3C24104個具有PWM功能的計時器和一個內(nèi)部時鐘8通道的10位ADC觸摸屏接口IIS總線接口2個USB主機接口,1個USB接口設備2個SPI接口SD接口和MMC卡接口看門狗計數(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增強型仿真器PowerICE120KByte/S標準型仿真器Emulator25KByte/SEmbest仿真器592、開發(fā)流程60開發(fā)流程工程建立

源文件

編譯

調(diào)試

固化C語言程序*.c匯編源程序*.s鏈接腳本文件*.ld命令腳本文件*.CS存儲區(qū)映像文件*.map61嵌入式應用軟件開發(fā)的基本流程

嵌入式軟件開發(fā)流程圖鏈接器命令文件編譯預處理編譯器匯編器Archive工具鏈接器和定位器頭文件(*.h,*.hpp)可重定位目標文件庫文件(*.a,*.lib)頭文件(*.h,*.hpp)C/C++源代碼匯編源代碼源文件列表源文件列表源代碼編輯階段源文件編譯階段鏈接與重定位調(diào)試與下載階段重定位文件表(*.o,*.a)共享目標文件(*.o,*.a)可執(zhí)行映象(*.elf,*.coff)鏈接映射文件(*.map)設備程序員目標開發(fā)系統(tǒng)I/O

口實驗(重點掌握)實驗目的掌握S3C2410X芯片的I/O控制寄存器的配置;通過實驗掌握ARM芯片使用I/O口控制LED顯示;了解ARM芯片中復用I/O口的使用方法。實驗設備硬件:EmbestEduKit-III實驗平臺,EmbestARM標準/增強型仿真器套件,PC機。軟件:EmbestIDEforARM集成開發(fā)環(huán)境,Windows/XP。實驗內(nèi)容編寫程序,控制實驗平臺的發(fā)光二極管LED1,LED2,LED3,LED4,使它們有規(guī)律的點亮和熄滅,具體順序如下:LED1亮->LED2亮->LED3亮->LED4亮->LED1滅->LED2滅->LED3滅->LED4滅->全亮->全滅,如此反復。實驗原理S3C2410X芯片上共有117個多功能的輸入輸出管腳,他們分為8組I/O端口:一個23位的輸出端口(端口A);兩個11位的輸入/輸出端口(端口B、H);四個16位的輸入/輸出端口(端口C、D、E、G);一個8位的輸入/輸出端口(端口F);可以很容易的每組端口來滿足不同系統(tǒng)配置和設計的需要。運行程序之前必須對每個用到的管腳功能進行設置,如果某些管腳的復用功能沒有使用,可以先將該管腳設置為I/O口。1.S3C2410XI/O端口控制端口控制寄存器(GPACON-GPHCON)在S3C2410X中,大多數(shù)的管腳都復用,所以必須對每個管腳進行配置。端口控制寄存器定義了每個管腳的功能。如果GPF0-GPF7和GPG0-GPG7在掉電模式使用了弱上拉信號,這些端口必須在中斷模式配置。端口數(shù)據(jù)寄存器(GPADAT-GPHDAT)如果端口被配置成了輸出端口,可以向PnDAT的相應位寫數(shù)據(jù)。如果端口被配置成了輸入端口,可以從PnDAT的相應位讀出數(shù)據(jù)。端口上拉寄存器端口上拉寄存器(GPBUP-GPHUP)端口上拉寄存器控制了每個端口組的上拉電阻的允許/禁止。如果某一位0,相應的上拉電阻被允許,如果是1,相應的上拉電阻被禁止。如果端口的上拉電阻被允許,無論在哪種狀態(tài)(INPUT,OUTPUT,DATAn,EINTn等)下,上拉電阻都要起作用。1.S3C2410XI/O端口控制多狀態(tài)控制寄存器這個寄存器控制數(shù)據(jù)端口的上拉電阻,高阻態(tài),USBpad和CLKOUT選項。外部中斷控制寄存器(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,設置與該位相對應的引腳為功能端口,.置0,為輸出口端口E

(16位)如果端口E被配置為輸入端口,可以從引腳讀出相應外部輸入源輸入的數(shù)據(jù)。如果端口被配置為輸出端口,向寄存器寫的數(shù)據(jù)可以被送往相應的引腳。如果端口被配置為功能引腳,從該引腳讀出的數(shù)據(jù)不確定。置位GPEUP[15:0]的某一位允許相應引腳的上拉功能,否則禁止上拉功能。端口E

(16位)端口F

端口H3.電路設計GPF7GPF6GPF5GPF4如圖所示,LED1-4分別與GPF7-4相連,通過GPF7-4引腳的高低電平來控制發(fā)光二極管的亮與滅。當這幾個管腳輸出高電平的時候發(fā)光二極管熄滅,反之,發(fā)光二極管點亮。D1205->LED3D1207->LED1D1206->LED2D1204->LED4注意:學習機上的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");}串口通信實驗實驗目的了解S3C2410X處理器UART相關控制寄存器的使用。熟悉ARM處理器系統(tǒng)硬件電路中UART接口的設計方法。掌握ARM處理器串行通信的軟件編程方法。實驗設備硬件:EmbestEduKit-III實驗平臺,EmbestARM標準/增強型仿真器套件,PC機。軟件:EmbestIDEforARM集成開發(fā)環(huán)境,Windows/XP。實驗內(nèi)容編寫S3C2410X處理器的串口通信程序,監(jiān)視串行口UART0動作;將從UART0接收到的字符串回送顯示。串口通信實驗實驗原理1.S3C2410X串行通訊(UART)單元S3C2410XUART單元提供三個獨立的異步串行通信接口,皆可工作于中斷和DMA模式。使用系統(tǒng)時鐘最高波特率達230.4Kbps,如果使用外部設備提供的時鐘,可以達到更高的速率。每一個UART單元包含一個16字節(jié)的FIFO,用于數(shù)據(jù)的接收和發(fā)送。S3C2410XUART支持可編程波特率,紅外發(fā)送/接收,一個或兩個停止位,5bit/6bit/7bit/或8bit數(shù)據(jù)寬度和奇偶校驗。串口通信實驗2.波特率的產(chǎn)生波特率由一個專用的UART波特率分頻寄存器(UBRDIVn)控制,計算公式如下: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,當波特率為115200時,UBRDIVn=(int)(40000000/(115200x16))-1=(int)(21.7)-1=21-1=20串口通信實驗3.UART通信操作下面簡略介紹UART操作:發(fā)送數(shù)據(jù)幀是可編程的。一個數(shù)據(jù)幀包含一個起始位,5到8個數(shù)據(jù)位,一個可選的奇偶校驗位和1到2位停止位,停止位通過行控制寄存器ULCONn配置。與發(fā)送類似,接收幀也是可編程的。接收幀由一個起始位,5到8個數(shù)據(jù)位,一個可選的奇偶校驗和1到2位行控制寄存器ULCONn里的停止位組成。接收器還可以檢測溢出錯,奇偶校驗錯,幀錯誤和傳輸中斷,每一個錯誤均可以設置一個錯誤標志。溢出錯誤(Overrunerror)是指已接收到的數(shù)據(jù)在讀取之前被新接收的數(shù)據(jù)覆蓋。奇偶校驗錯是指接收器檢測到的校驗和與設置的不符。幀錯誤指沒有接收到有效的停止位。傳輸中斷表示接收數(shù)據(jù)RxDn保持邏輯0超過一幀的傳輸時間。在FIFO模式下,如果RxFIFO非空,而在3個字的傳輸時間內(nèi)沒有接收到數(shù)據(jù),則產(chǎn)生超時。

UART

控制寄存器

1)UART行控制寄存器ULCONn該寄存器的第6

位決定是否使用紅外模式,位5~3

決定校驗方式,位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復位清零TxFIFO;0:FIFO復位不清零TxFIFOUFCONn[1]=1:FIFO復位清零RxFIFO;0:FIFO復位不清零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ù),當然只有一個字節(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文件中有關于UART單元各寄存器的定義:UART

初始化代碼下面列出的兩個函數(shù),是我們本實驗用到的兩個主要函數(shù),包括UART初始化,字符的接收函數(shù),希望大家仔細閱讀,理解每一行的含義

這幾個函數(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;……下面是接收字符的實現(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ā)送字符的實現(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;//設置H口

switch(port)

{ case0: DisableIrq(BIT_UART0); rUFCON0=0x0; rUMCON0=0x0; rULCON0=(parity<<3)|(stop<<2)|(data); //parity:0-無較驗,4-奇較驗,5-偶較驗

//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;

初始化實現(xiàn)函數(shù)RS232

接口電路

本教學實驗平臺的電路中,UART0串口電路如圖所示,UART0只采用二根接線RXD0和TXD0,因此只能進行簡單的數(shù)據(jù)傳輸及接收功能。UART0采用MAX3232作為電平轉(zhuǎn)換器邏輯1(MARK)=-3V~-15V邏輯0(SPACE)=+3~+15V中斷實驗實驗目的通過實驗掌握ARM處理器的中斷方式和中斷處理。熟悉S3C2410X的中斷控制寄存器的使用;了解不同中斷觸發(fā)方式對中斷產(chǎn)生的影響;理解S3C2410X處理器的中斷響應過程;熟練掌握如何進行ARM處理器中斷處理的軟件編程方法。實驗設備硬件:EmbestEduKit-III實驗平臺,EmbestARM標準/增強型仿真器套件,PC機。軟件:EmbestIDEforARM集成開發(fā)環(huán)境,Windows/XP。實驗內(nèi)容編寫中斷處理程序,實現(xiàn):由UART0選擇輸入使用不同的中斷觸發(fā)方式,使能外部中斷Eint0,11;在不同的中斷觸發(fā)方式下,使用按鈕SB1202觸發(fā)EINT0,同時在超級終端的主窗中顯示外部中斷號;在不同的中斷觸發(fā)方式下,使用按鈕SB1203觸發(fā)EINT11,同時在超級終端的主窗口中顯示外部中斷號;中斷是指計算機在執(zhí)行程序的過程中,當出現(xiàn)異常情況或特殊請求時,計算機停止現(xiàn)行程序的運行,轉(zhuǎn)向?qū)@些異常情況或特殊請求的處理,處理結(jié)束后再返回現(xiàn)行程序的間斷處,繼續(xù)執(zhí)行原程序。實驗原理S3C2410的中斷控制器可以處理多達

56個中斷源的中斷請求。這些中斷源可以是來自片內(nèi)外設的中斷,比如

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)外設

UARTn中斷和外部中斷輸入

EINTn是邏輯或的關系,它們共用一條中斷請求線。中斷優(yōu)先級仲裁

若嵌入式系統(tǒng)中由多個中斷源,則這些中斷源必須要進行中斷優(yōu)先級的排列。所謂優(yōu)先級,指的以下兩層含義:·若有2個及2個以上的中斷源同時提出中斷請求,微處理器先響應哪個中斷源,后響應哪個中斷源?!と?個中斷源提出中斷請求,并得到響應后,又有1個中斷源提出中斷請求,后來的中斷源能否中斷前一個中斷源的中斷服務程序。S3C2410的中斷系統(tǒng)實際上,S3C2410的中斷系統(tǒng)分成兩級,一級是控制內(nèi)部外圍I/O端口或部件、或者芯片外部中斷引(EINTn)的中斷控制;另一級是ARM920T核的異常中斷控制,采用了固定向量中斷方式。S3C2410芯片中的中斷控制器可以支持56個中斷源提出的中斷請求

這些中斷源由芯片內(nèi)部的I/O端口或部件如DMA控制器、UART、IIC、RTC等,以及外部中斷引腳提供。在這些中斷源中,有些中斷,如串行接口UARTn中斷和外部中斷EINTn中斷對于中斷控制器來說都是共用的。當S3C2410芯片的內(nèi)部外圍I/O端口或部件提出中斷請求、或者芯片外部中斷引腳(EINTn)收到中斷請求時,中斷控制器經(jīng)過仲裁之后再請求ARM9核的FIQ或IRQ中斷。S3C2410的中斷系統(tǒng)邏輯圖S3C2410芯片中斷控制器支持的56個中斷源,由于其中有些中斷共用中斷請求信號線,因此,實際中斷請求信號有32個。這32個中斷請求的優(yōu)先級仲裁判決機制采用了中斷優(yōu)先級編碼判斷電路原理。其裁決邏輯由7個基本裁決器組成,其中6個一級裁決器和1個二級裁決器。S3C2410芯片的32個中斷請求信號,在系統(tǒng)復位初始狀態(tài)下,按照前圖中由上到下的順序,中斷優(yōu)先級由高到低排列,即EINT0中斷優(yōu)先級最高,INT_ADC中斷優(yōu)先級最低。S3C2410X中斷源(1)S3C2410X中斷源(2)中斷控制寄存器用S3C2410的中斷方式來控制I/O端口或部件操作時,除了要對I/O端口或部件的相應寄存器進行初始化設置外,還需對中斷控制器的5個控制寄存器進行初始化設置。這5個寄存器是:源未決(掛起)寄存器、中斷模式寄存器、屏蔽寄存器、優(yōu)先級寄存器、中斷未決(掛起)寄存器。

源未決(掛起)寄存器源未決寄存器(SRCPND)由32位構成,每一位與一個中斷請求信號相關聯(lián)。當某個中斷源請求中斷服務時,SRCPND寄存器的相應位被置為1,即首先在源未決寄存器中登記。因此,該寄存器記錄了哪個中斷源的請求在等待處理。注意:SRCPND寄存器的每一位由中斷源自動設置,而不管中斷屏蔽寄存器(INTMASK)中對應的位是否被屏蔽。此外,SRCPND寄存器也不受中斷控制器的優(yōu)先級邏輯影響。

源未決寄存器(SRCPND)當中斷源發(fā)出中斷請求的時候,就會置位源未決寄存器的相應位。反之,中斷的未決寄存器的值為0。SRCPND=SRCPND源未決寄存器(SRCPND)源未決寄存器(SRCPND)中斷模式寄存器(INTMOD)中斷模式寄存器INTMOD共有32位,每一位對應著一個中斷源,當中斷源的模式位設置為1時,對應的中斷會由ARM920T內(nèi)核以FIQ模式來處理。相反的,當模式位設置為0時,中斷會以IRQ模式來處理。中斷控制寄存器中只有一個中斷源可以被設置為FIQ模式,因此只能在緊急情況下使用FIQ。如果INTMOD寄存器把某個中斷設為FIQ模式,F(xiàn)IQ中斷不影響INTPND和INTOFFSET寄存器,因此,這兩個寄存器只對IRQ模式中斷有效。中斷模式寄存器(INTMOD)中斷模式寄存器(INTMOD)中斷屏蔽寄存器(INTMSK)寄存器有32位,分別對應一個中斷源。當中斷源的屏蔽位設置為1時,CPU不響應該中斷源的中斷請求,反之,等于0時CPU能響應該中斷源的中斷請求。中斷屏蔽寄存器(INTMSK)中斷屏蔽寄存器(INTMSK)中斷優(yōu)先權寄存器(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)先權寄存器(PRIORITY)中斷優(yōu)先權寄存器(PRIORITY)優(yōu)先級生成模塊中斷未決(掛起)寄存器(INTPND)INTPND寄存器是32位寄存器,寄存器中的每一位對應一個中斷源。只有未被屏蔽且具有最高優(yōu)先級、在源未決寄存器中等待處理的中斷請求可以把其對應的中斷未決位置1。因此,INTPND寄存器中只有一位可以設置為1,同時,中斷控制器產(chǎn)生IRQ信號給ARM920T核。在IRQ的中斷服務例程里,設計者可以讀取該寄存器,從而獲知哪個中斷源被處理。當INTPND寄存器的一個未決位被設置為1,只要ARM920T核內(nèi)部的狀態(tài)寄存器PSR中的I標志和F標志被清零,對應的中斷服務例程就可以開始執(zhí)行。INTPND寄存器是可讀寫的,在中斷服務例程里面必須清除中斷未決位。

在編程操作INTPND寄存器時,應注意以下兩點:·如果發(fā)生了FIQ模式的中斷,那么INTPND寄存器中相應的位將不會置1,因為INTPND寄存器只對IRQ模式下的中斷有效。

·清除INTPND寄存器的中斷未決位時要謹慎。因為,INTPND寄存器是通過寫數(shù)據(jù)位1而對未決位清零的。如果INTPND寄存器為1的位試圖通過寫數(shù)據(jù)位0來清除,那么INTPND和INTOFFSET寄存器在某些情況下可能會具有不可預料的值。因此,切記不要往INTPND寄存器中為1的位寫數(shù)據(jù)位0。清除INTPND寄存器的未決位最簡捷的方法就是將INTPND寄存器的值寫回到INTPND寄存器里。即:rINTPND=rINTPND;中斷未決寄存器(INTPND)中斷未決寄存器(INTPND)外部中斷控制寄存器EXTINTEXTINT0外部中斷控制寄存器EXTINT用來設置外部中斷的觸發(fā)模式,共有3個:EXTINT0(INT0—7),EXTINT1(INT8—15),EXTINT2(INT9—23).中斷編程模式S3C2410芯片的I/O端口或部件若采用中斷方式控制操作時,其編程的內(nèi)容實際上涉及四部分,既:·建立系統(tǒng)中斷向量表,并且設置ARM920T核的程序狀態(tài)寄存器CPSR中的F位和I位。一般情況下中斷均需使用數(shù)據(jù)棧,因此,還需建立用戶數(shù)據(jù)棧。這一部分內(nèi)容對應的程序指令,通常編寫在系統(tǒng)引導程序中·設置S3C2410芯片中56個中斷源的中斷向量。通常需要利用未決寄存器或地址偏移寄存器來計算,若中斷號還對應有子中斷(如中斷號為5時,對應EINT8_23),需求出子中斷的地址偏移。

·中斷控制初始化。主要是初始化S3C2410芯片內(nèi)部的中斷控制的寄存器。針對某個具體的中斷源,設置其中斷控制模式、中斷是否屏蔽、中斷優(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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論