微處理器的嵌入式系統(tǒng)研究論文_第1頁(yè)
微處理器的嵌入式系統(tǒng)研究論文_第2頁(yè)
微處理器的嵌入式系統(tǒng)研究論文_第3頁(yè)
微處理器的嵌入式系統(tǒng)研究論文_第4頁(yè)
微處理器的嵌入式系統(tǒng)研究論文_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1前言隨著電子技術(shù)和計(jì)算機(jī)技術(shù)的進(jìn)一步發(fā)展,嵌入式系統(tǒng)將起著越來(lái)越重要的作用,無(wú)論是民用還是軍用隨處都可以看見(jiàn)嵌入式系統(tǒng)的身影。在我國(guó),到目前為止,在嵌入式系統(tǒng)研究方面,比起世界先進(jìn)技術(shù),落后了很多,基本上沒(méi)多少核心技術(shù),先進(jìn)技術(shù)的知識(shí)產(chǎn)權(quán)都在國(guó)外。我國(guó)目前還沒(méi)有生產(chǎn)出可以在市場(chǎng)上競(jìng)爭(zhēng)的芯片,但是隨著國(guó)家的重視和投資,以及不斷吸收世界先進(jìn)技術(shù),在一些領(lǐng)域已經(jīng)能夠?qū)崿F(xiàn)國(guó)產(chǎn)化了。但是這離許多世界先進(jìn)技術(shù)還相差甚遠(yuǎn)。雖然現(xiàn)在經(jīng)濟(jì)全球化,但我們得到的只是一些落后的技術(shù)。因此必須培養(yǎng)自己的人才,研究核心技術(shù),掌握核心技術(shù)。本次畢業(yè)設(shè)計(jì)的題目正是“基于LPC2114微處理器的嵌入式系統(tǒng)研究”。本次設(shè)計(jì)涉及

2、到了嵌入式系統(tǒng)開(kāi)發(fā)的兩個(gè)重要模塊。包括硬件開(kāi)發(fā)和應(yīng)用程序開(kāi)發(fā)。旨在研究嵌入式系統(tǒng)的開(kāi)發(fā)流程,掌握嵌入式系統(tǒng)的基本開(kāi)發(fā)方法,以及掌握一些硬件和軟件的開(kāi)發(fā)和調(diào)試工具。顯然,本次設(shè)計(jì)的任務(wù)量是繁重的。再加上,以前我并沒(méi)有接觸過(guò)嵌入式系統(tǒng)這一領(lǐng)域。所以,對(duì)我來(lái)說(shuō),任務(wù)就更加繁重。但我相信,通過(guò)我的努力,一定可以完成本次設(shè)計(jì)的任務(wù)。并且為我以后的工作和學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。21 緒論1.1 嵌入式系統(tǒng)定義從應(yīng)用來(lái)看:嵌入式系統(tǒng)是計(jì)算機(jī)的一種應(yīng)用形式,通常是指嵌入到對(duì)象系統(tǒng)中的專(zhuān)用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)被定義為:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、能適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗

3、嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。從組成來(lái)看:把基于處理器(通用處理器和嵌入式處理器)的設(shè)備稱(chēng)為計(jì)算機(jī),把計(jì)算機(jī)分成兩大部分,即通用計(jì)算機(jī)和嵌入式計(jì)算機(jī)。嵌入式系統(tǒng)也稱(chēng)為嵌入式計(jì)算機(jī),因此嵌入式系統(tǒng)被定義為非通用計(jì)算機(jī)系統(tǒng),即專(zhuān)用計(jì)算機(jī)系統(tǒng)。1.2 嵌入式系統(tǒng)的組成一個(gè)典型的嵌入式系統(tǒng)主要由以下幾部分組成:(1 硬件系統(tǒng)硬件系統(tǒng)由嵌入式微處理器、外圍接口硬件設(shè)備組成。(2 嵌入式操作系統(tǒng)在嵌入式操作系統(tǒng)中,一般都要采用嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS ),RTOS 一般包括實(shí)時(shí)內(nèi)核(kernel )及用戶(hù)特定的板級(jí)支持包(BSP ),它介于硬件系統(tǒng)及上層軟件之間,為所有的上層軟件提供一個(gè)多任務(wù)的實(shí)時(shí)操作系

4、統(tǒng)環(huán)境及一整套API 。當(dāng)然,在一些簡(jiǎn)單的嵌入式應(yīng)用系統(tǒng)中,并沒(méi)有操作系統(tǒng)的支持。應(yīng)用程序直接對(duì)底層硬件進(jìn)行訪(fǎng)問(wèn)。(3 應(yīng)用軟件應(yīng)用軟件是針對(duì)特定的應(yīng)用需求開(kāi)發(fā)的軟件,完成嵌入式系統(tǒng)的主要功能。大部分嵌入式系統(tǒng)開(kāi)發(fā)人員選用的軟件開(kāi)發(fā)模式是先在PC 機(jī)上編寫(xiě)軟件,再進(jìn)行軟件的移植工作。1.3 嵌入式系統(tǒng)的應(yīng)用領(lǐng)域嵌入式系統(tǒng)廣泛地應(yīng)用在人們生活、工作的各個(gè)方面。如:(1)消費(fèi)類(lèi)電子產(chǎn)品。如機(jī)頂盒,個(gè)人移動(dòng)設(shè)備(PDA ),數(shù)碼音頻播放器(MP3),數(shù)碼相機(jī),視頻游戲播放器,IP 電話(huà)等等。(2)辦公自動(dòng)化產(chǎn)品。如激光打印機(jī),傳真機(jī),掃描儀,復(fù)印機(jī)和LCD 投影儀等。(3)控制系統(tǒng)與工業(yè)自動(dòng)化。如智

5、能控制設(shè)備,智能儀表、現(xiàn)場(chǎng)總線(xiàn)設(shè)備,數(shù)控機(jī)床,機(jī)器人等。(4)生物醫(yī)學(xué)系統(tǒng)。如X 光機(jī)的控制部件,EEG 和ECG 設(shè)備,CT ,超聲檢測(cè)設(shè)備,核磁共振設(shè)備等。(5)現(xiàn)場(chǎng)儀器。如測(cè)量溫度,濕度,電壓,電流的儀器。還有各種協(xié)議分析器,用于分析網(wǎng)絡(luò)協(xié)3議。還有數(shù)字示波器等。(6)網(wǎng)絡(luò)通信設(shè)備。調(diào)制解調(diào)器,數(shù)據(jù)通信基礎(chǔ)設(shè)備,IP 網(wǎng)上多媒體設(shè)備,網(wǎng)關(guān),路由器,加密解密設(shè)備,GPS 設(shè)備,交換機(jī),網(wǎng)絡(luò)接入盒等。(7)電信設(shè)備。電話(huà)交換機(jī),終端適配器TA ,ATM 交換機(jī),幀中繼和一些通信設(shè)備。1.4 嵌入式系統(tǒng)的發(fā)展歷史及趨勢(shì)嵌入式系統(tǒng)的出現(xiàn)至今已經(jīng)有30多年的歷史了,嵌入式技術(shù)也歷經(jīng)了幾個(gè)發(fā)展階段。

6、第一階段是以單芯片為核心的可編程控制器形式的系統(tǒng),同時(shí)具有與監(jiān)測(cè)、伺服、指示設(shè)備相配合的功能。第二階段是以嵌入式CPU 為基礎(chǔ)、以簡(jiǎn)單操作系統(tǒng)為核心的嵌入式系統(tǒng)。第三階段是以嵌入式操作系統(tǒng)為標(biāo)志的嵌入式系統(tǒng)。第四階段是以基于Internet 為標(biāo)志的嵌入式系統(tǒng),這是一個(gè)正在迅速發(fā)展的階段。就嵌入式系統(tǒng)的而言,其發(fā)展趨勢(shì)表現(xiàn)在如下幾個(gè)方面。(1)開(kāi)發(fā)平臺(tái)的完備性嵌入式系統(tǒng)的開(kāi)發(fā)是一項(xiàng)系統(tǒng)的工程,涉及到軟件,硬件,系統(tǒng)集成等諸多方面。有的嵌入式廠(chǎng)商不公僅提供處理器,還提供完備的開(kāi)發(fā)工具。其開(kāi)發(fā)工具包括硬件工具和軟件工具。(2)嵌入式系統(tǒng)的網(wǎng)絡(luò)化網(wǎng)絡(luò)化主要表現(xiàn)在在兩個(gè)方面,一方面是嵌入式處理器集成了

7、網(wǎng)絡(luò)接口,另一方面是嵌入式設(shè)備應(yīng)用于網(wǎng)絡(luò)環(huán)境中(3)系統(tǒng)的集成度的提高和性能指標(biāo)的提高。未來(lái)的嵌入式產(chǎn)品,是軟硬件高度集成的產(chǎn)品。這就要求設(shè)計(jì)者盡可能地提高系統(tǒng)的可靠性,降低系統(tǒng)的功耗,精簡(jiǎn)系統(tǒng)的內(nèi)核,降低成本,對(duì)操作系統(tǒng)進(jìn)行裁剪,用高效率的算法開(kāi)發(fā)應(yīng)用程序。(4)友好的人機(jī)界面大多數(shù)的嵌入式系統(tǒng)都與人進(jìn)行交互,所以友好的人機(jī)界面是開(kāi)發(fā)嵌入式系統(tǒng)的基本要求。隨著嵌入式技術(shù)的發(fā)展,新的人機(jī)界面不斷被開(kāi)發(fā)出來(lái),如手寫(xiě)輸入技術(shù),語(yǔ)音輸入/輸出技術(shù),圖像輸出技術(shù)。1.5 ARM概述ARM (Advanced RISC Machines)是微處理器行業(yè)的一家知名企業(yè),1991年ARM 公司成立于英國(guó)劍橋

8、。ARM 公司是專(zhuān)門(mén)從事基于RISC 技術(shù)芯片設(shè)計(jì)開(kāi)發(fā)的公司,作為知識(shí)產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)許可由合作公司生產(chǎn)各具特色的芯片,世界各大半導(dǎo)體生產(chǎn)商從ARM 公司購(gòu)買(mǎi)其設(shè)計(jì)的ARM 微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐罚瑥亩纬勺约旱腁RM 微處理器芯片進(jìn)入市場(chǎng)。目前,總共有30多家半導(dǎo)體公司與ARM 簽訂了硬件技術(shù)使用許可協(xié)議,4其中包括Intel 、IBM 、LG 半導(dǎo)體、NEC 、SONY 、菲利浦和國(guó)民半導(dǎo)體這樣的大公司,至于軟件系統(tǒng)的合伙人,則包括微軟、升陽(yáng)和MRI 等一系列知名公司?;贏RM 技術(shù)的微處理器應(yīng)用約占據(jù)了32位RISC 微處理

9、器75以上的市場(chǎng)份額,ARM 技術(shù)正在逐步滲入到我們生活的各個(gè)方面。ARM 架構(gòu)是面向低預(yù)算市場(chǎng)設(shè)計(jì)的第一款RISC 微處理器。到目前為止,ARM 微處理器及技術(shù)的應(yīng)用幾乎已經(jīng)深入到各個(gè)領(lǐng)域: 工業(yè)控制領(lǐng)域:作為32位的RISC 架構(gòu),基于ARM 核的微控制器芯片不斷占據(jù)了高端微控制器市場(chǎng)的大部分市場(chǎng)份額,同時(shí)也逐漸向低端微控制器應(yīng)用領(lǐng)域擴(kuò)展,ARM 微控制器的低功耗、高性?xún)r(jià)比,向傳統(tǒng)的8位/16位微控制器提出了挑戰(zhàn)。 無(wú)線(xiàn)通訊領(lǐng)域:目前已有超過(guò)85%的無(wú)線(xiàn)通訊設(shè)備采用了ARM 技術(shù), ARM以其高性能和低成本,在該領(lǐng)域的地位日益鞏固。 網(wǎng)絡(luò)應(yīng)用:隨著寬帶技術(shù)的推廣,采用ARM 技術(shù)的ADSL

10、 芯片正逐步獲得競(jìng)爭(zhēng)優(yōu)勢(shì)。此外,ARM 在語(yǔ)音及視頻處理上進(jìn)行了優(yōu)化,并獲得廣泛支持,也對(duì)DSP 的應(yīng)用領(lǐng)域提出了挑戰(zhàn)。 消費(fèi)類(lèi)電子產(chǎn)品:ARM 技術(shù)在目前流行的數(shù)字音頻播放器、數(shù)字機(jī)頂盒和游戲機(jī)中得到廣泛采用。 成像和安全產(chǎn)品:現(xiàn)在流行的數(shù)碼相機(jī)和打印機(jī)中絕大部分采用ARM 技術(shù)。手機(jī)中的32位SIM 智能卡也采用了ARM 技術(shù)。除此以外,ARM 微處理器及技術(shù)還應(yīng)用到許多不同的領(lǐng)域,并會(huì)在將來(lái)取得更加廣泛的應(yīng)用。 采用RISC 架構(gòu)的ARM 微處理器一般具有如下特點(diǎn): 體積小、低功耗、低成本、高性能; 支持Thumb (16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件; 大

11、量使用寄存器,指令執(zhí)行速度更快; 大多數(shù)數(shù)據(jù)操作都在寄存器中完成; 尋址方式靈活簡(jiǎn)單,執(zhí)行效率高; 指令長(zhǎng)度固定;ARM 微處理器目前包括下面幾個(gè)系列,以及其它廠(chǎng)商基于ARM 體系結(jié)構(gòu)的處理器,除了具有ARM 體系結(jié)構(gòu)的共同特點(diǎn)以外,每一個(gè)系列的ARM 微處理器都有各自的特點(diǎn)和應(yīng)用領(lǐng)域。 ARM7系列 ARM9系列 ARM9E系列 ARM10E系列 SecurCore系列5 Inter的Xscale Inter的StrongARM其中,ARM7、ARM9、ARM9E 和ARM10為4個(gè)通用處理器系列,每一個(gè)系列提供一套相對(duì)獨(dú)特的性能來(lái)滿(mǎn)足不同應(yīng)用領(lǐng)域的需求。SecurCore 系列專(zhuān)門(mén)為安全要

12、求較高的應(yīng)用而設(shè)計(jì)。ARM7微處理器系列:ARM7系列微處理器為低功耗的32位RISC 處理器,最適合用于對(duì)價(jià)位和功耗要求較高的消費(fèi)類(lèi)應(yīng)用。ARM7微處理器系列具有如下特點(diǎn): 具有嵌入式ICE RT 邏輯,調(diào)試開(kāi)發(fā)方便。 極低的功耗,適合對(duì)功耗要求較高的應(yīng)用,如便攜式產(chǎn)品。 能夠提供0.9MIPS/MHz的三級(jí)流水線(xiàn)結(jié)構(gòu)。 代碼密度高并兼容16位的Thumb 指令集。 對(duì)操作系統(tǒng)的支持廣泛,包括Windows CE、Linux 、Palm OS等。 指令系統(tǒng)與ARM9系列、ARM9E 系列和ARM10E 系列兼容,便于用戶(hù)的產(chǎn)品升級(jí)換代。 主頻最高可達(dá)130MIPS ,高速的運(yùn)算處理能力能勝任

13、絕大多數(shù)的復(fù)雜應(yīng)用。ARM7系列微處理器的主要應(yīng)用領(lǐng)域?yàn)椋汗I(yè)控制、Internet 設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備、移動(dòng)電話(huà)等多種多媒體和嵌入式應(yīng)用。ARM7系列微處理器包括如下幾種類(lèi)型的核:ARM7TDMI 、ARM7TDMI-S 、ARM720T 、ARM7EJ 。其中,ARM7TMDI 是目前使用最廣泛的32位嵌入式RISC 處理器,屬低端ARM 處理器核。TDMI 的基本含義為:T : 支持16位壓縮指令集Thumb ;D : 支持片上Debug ;M : 內(nèi)嵌硬件乘法器(Multiplier )I : 嵌入式ICE ,支持片上斷點(diǎn)和調(diào)試點(diǎn);ARM 處理器共有37個(gè)寄存器,被分為若干個(gè)組

14、(BANK ),這些寄存器包括: 31個(gè)通用寄存器,包括程序計(jì)數(shù)器(PC 指針),均為32位的寄存器。 6個(gè)狀態(tài)寄存器,用以標(biāo)識(shí)CPU 的工作狀態(tài)及程序的運(yùn)行狀態(tài),均為32位,目前只使用了其中的一部分。同時(shí),ARM 處理器又有7種不同的處理器模式,在每一種處理器模式下均有一組相應(yīng)的寄存器與之對(duì)應(yīng)。即在任意一種處理器模式下,可訪(fǎng)問(wèn)的寄存器包括15個(gè)通用寄存器(R0R14)、一至二個(gè)狀態(tài)寄存器和程序計(jì)數(shù)器。在所有的寄存器中,有些是在7種處理器模式下共用的同一個(gè)物理寄存器,而有些寄存器則是在不同的處理器模式下有不同的物理寄存器。ARM 微處理器的在較新的體系結(jié)構(gòu)中支持兩種指令集:ARM 指令集和Th

15、umb 指令集。其中,ARM6指令為32位的長(zhǎng)度,Thumb 指令為16位長(zhǎng)度。Thumb 指令集為ARM 指令集的功能子集,但與等價(jià)的ARM 代碼相比較,可節(jié)省3040以上的存儲(chǔ)空間,同時(shí)具備32位代碼的所有優(yōu)點(diǎn)。ARM 的設(shè)計(jì)實(shí)現(xiàn)了非常小但高性能的結(jié)構(gòu)。ARM 處理器結(jié)構(gòu)的簡(jiǎn)單使ARM 的內(nèi)核非常小,這樣使器件的功耗也非常低。ARM 是精簡(jiǎn)指令集計(jì)算機(jī)(RISC,因?yàn)樗闪朔浅5湫偷腞ISC 結(jié)構(gòu)特性: 一個(gè)大的、統(tǒng)一的寄存器文件; 加載存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)處理的操作只針對(duì)寄存器的內(nèi)容,而不直接對(duì)存儲(chǔ)器進(jìn)行操作; 簡(jiǎn)單的尋址模式,所有加載存儲(chǔ)的地址都只由寄存器的內(nèi)容和指令域決定; 統(tǒng)一和固定長(zhǎng)

16、度的指令域,簡(jiǎn)化了指令的譯碼。 每一條數(shù)據(jù)處理指令都對(duì)算術(shù)邏輯單元(ALU和移位器進(jìn)行控制,以實(shí)現(xiàn)對(duì)ALU 和移位器的最大利用; 地址自動(dòng)增加和自動(dòng)減少的尋址模式實(shí)現(xiàn)了程序循環(huán)的優(yōu)化; 多寄存器加載和存儲(chǔ)指令實(shí)現(xiàn)了最大數(shù)據(jù)吞吐量; 所有指令的條件執(zhí)行實(shí)現(xiàn)了最快速的代碼執(zhí)行。這些在基本RISC 結(jié)構(gòu)上增強(qiáng)的特性使ARM 處理器在高性能、低代碼規(guī)模、低功耗和小的硅片尺寸方面取得了良好的平衡。72 系統(tǒng)需求分析2.1 需求分析本次畢業(yè)設(shè)計(jì)的任務(wù)是基于LPC2114微處理器的嵌入式系統(tǒng)的開(kāi)發(fā),要求系統(tǒng)具有時(shí)鐘電路,電源電路,復(fù)位電路,鍵盤(pán)電路,I C 接口電路,JTAG 接口電路。CPU 模塊是系統(tǒng)中

17、最核心的部分,系統(tǒng)通過(guò)CPU 處理數(shù)據(jù),控制系統(tǒng)中的其他模塊,使其他模塊根據(jù)系統(tǒng)發(fā)出的指令工作并且使各個(gè)部分協(xié)調(diào)工作。CPU 要正常工作,最基本的就是配置相應(yīng)的時(shí)鐘電路和電源電路。CPU 通過(guò)時(shí)鐘信號(hào)的驅(qū)動(dòng),一步一步的控制程序執(zhí)行。電源模塊除了給CPU 提供電源外,同時(shí)給其它各功能模塊也供電。 通過(guò)外部輸入的5V 電壓,在系統(tǒng)的濾波以及電壓轉(zhuǎn)換芯片后,得到內(nèi)核及片內(nèi)外設(shè)所需的工作電壓1.8V 和I/O所需的工作電壓3.3V 。復(fù)位電路為系統(tǒng)提供復(fù)位信號(hào),以實(shí)現(xiàn)系統(tǒng)的初始化操作;當(dāng)系統(tǒng)程序運(yùn)行出錯(cuò)時(shí)或者操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為了擺脫困境,也需要復(fù)位信號(hào)將系統(tǒng)重新啟動(dòng)。鍵盤(pán)電路主要是通過(guò)按

18、鍵控制程序的執(zhí)行,有時(shí)也作為參數(shù)實(shí)現(xiàn)一些簡(jiǎn)單的數(shù)據(jù)輸入。 帶有I C 接口電路的器件可十分方便地用來(lái)將一個(gè)或多個(gè)微控制器及外圍器件構(gòu)成系統(tǒng)。 仿真器接口用來(lái)對(duì)程序進(jìn)行調(diào)試和固化。 2.2 系統(tǒng)總體設(shè)計(jì)根據(jù)要求設(shè)計(jì)的嵌入式系統(tǒng)的原理框圖如圖3.1所示: 22圖1 系統(tǒng)原理框圖8系統(tǒng)是通過(guò)模塊化的設(shè)計(jì)方式來(lái)實(shí)現(xiàn)各個(gè)功能的,系統(tǒng)框圖中包含了CPU 模塊、電源模塊、復(fù)位電路模塊、系統(tǒng)仿真模塊、鍵盤(pán)接口、I C 接口。293 系統(tǒng)硬件設(shè)計(jì)3.1 核心處理器LPC2114簡(jiǎn)介根據(jù)本系統(tǒng)的需求分析,從性能、功耗、價(jià)格等方面進(jìn)行考慮,我們發(fā)現(xiàn)飛利蒲的LPC2114已完全能滿(mǎn)足本系統(tǒng)的設(shè)計(jì)要求。所以我們采用LP

19、C2114作為核心處理器來(lái)進(jìn)行開(kāi)發(fā)。LPC2114 是基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的32位ARM7TDMI-S CPU ,并帶有128 KB 的高速Flash 存儲(chǔ)器,128位寬度的存儲(chǔ)器接口和獨(dú)特的加速結(jié)構(gòu),使32位代碼能夠在最大時(shí)鐘速率下運(yùn)行。對(duì)代碼有嚴(yán)格控制的應(yīng)用可使用16位Thumb 模式將代碼規(guī)模降低超過(guò)30,而性能損失卻很少。由于LPC2114具有非常小的尺寸和極低的功耗,它們非常適合于那些將小型化作為主要要求的應(yīng)用,例如存儲(chǔ)控制和POS 機(jī)。帶有寬范圍的串行通信接口、片內(nèi)多達(dá)64KB 的SRAM ,由于具有大的緩沖區(qū)和強(qiáng)大的處理器能力,它們非常適合于通信網(wǎng)關(guān)和協(xié)議轉(zhuǎn)換器、軟件調(diào)制解

20、調(diào)器、聲音識(shí)別以及低端的圖像處理。而多個(gè)32位定時(shí)器、PWM 輸出和32個(gè)GPIO ,使它們特別適用于工業(yè)控制和醫(yī)療系統(tǒng)。它的主要特性有:32位ARM7TDMI-S 核,超小LQFP64封裝。 16 KB片內(nèi)靜態(tài)RAM 。128KB 片內(nèi)Flash 程序存儲(chǔ)器,128位寬度接口/加速器可實(shí)現(xiàn)高達(dá)60 MHz工作頻率。 通過(guò)片內(nèi)boot 裝載程序?qū)崿F(xiàn)在系統(tǒng)編程(ISP )和在應(yīng)用編程(IAP )。512字節(jié)行編程時(shí)間為1ms 。單扇區(qū)或整片擦除時(shí)間為400ms 。Embedded ICE可實(shí)現(xiàn)斷點(diǎn)和觀(guān)察點(diǎn)。當(dāng)使用片內(nèi)RealMonitor 軟件對(duì)前臺(tái)任務(wù)進(jìn)行調(diào)試時(shí),中斷服務(wù)程序可繼續(xù)運(yùn)行。嵌入式

21、跟蹤宏單元(ETM )支持對(duì)執(zhí)行代碼進(jìn)行無(wú)干擾的高速實(shí)時(shí)跟蹤。 4路10位A/D轉(zhuǎn)換器,轉(zhuǎn)換時(shí)間低至2.44µs。2個(gè)32位定時(shí)器(帶4路捕獲和4路比較通道)、PWM 單元(6路輸出)、實(shí)時(shí)時(shí)鐘和看門(mén)狗。 多個(gè)串行接口,包括2個(gè)16C550工業(yè)標(biāo)準(zhǔn)UART 、高速I(mǎi) C 接口(400 kbit/s)和2個(gè)SPI 口。 通過(guò)片內(nèi)鎖相環(huán)(PLL )可實(shí)現(xiàn)最大為60MHz 的 CPU操作頻率。 向量中斷控制器??膳渲脙?yōu)先級(jí)和向量地址。多達(dá)46個(gè)通用I/O口(可承受5V 電壓),9個(gè)邊沿或電平觸發(fā)的外部中斷引腳。 片內(nèi)晶振頻率范圍:130 MHz。 2個(gè)低功耗模式:空閑和掉電。通過(guò)外部中斷將

22、處理器從掉電模式中喚醒。210可通過(guò)個(gè)別使能/禁止外部功能來(lái)優(yōu)化功耗。 雙電源 CPU操作電壓范圍:1.651.95 V(1.8 V± 0.15 VLPC2114要使用兩組電源,I/O口供電電源為3.3V ,內(nèi)核及片內(nèi)外設(shè)供電電源為1.8V ,所以系統(tǒng)設(shè)計(jì)為3.3V 應(yīng)用系統(tǒng)。系統(tǒng)電源電路如圖2所示: U5LT1085-12/TO220U6 LT1084-12/TO220圖2 系統(tǒng)電源模塊在系統(tǒng)中,復(fù)位電路主要完成系統(tǒng)上電復(fù)位和系統(tǒng)在運(yùn)行時(shí)用戶(hù)的按鍵復(fù)位功能。復(fù)位電路可由簡(jiǎn)單的RC 電路構(gòu)成,也可使用其他的相對(duì)較復(fù)雜,但功能更完善的電路。本系統(tǒng)采用簡(jiǎn)單的RC 復(fù)位電路,經(jīng)使用證明,其

23、復(fù)位邏輯是可靠的。復(fù)位電路如圖3所示:11 圖3 系統(tǒng)復(fù)位電路本系統(tǒng)采用的低電平復(fù)位。當(dāng)用戶(hù)按下SW1時(shí),C4兩端的電荷被瀉放掉,RESET 端輸出為低電平。從而達(dá)到復(fù)位的目的。在系統(tǒng)上電時(shí),電阻R1向電容C4充電,當(dāng)C1兩端的電壓未達(dá)到高電平的門(mén)限電壓時(shí),RESET 輸出為低電平,系統(tǒng)處于復(fù)位狀態(tài)。而當(dāng)C4兩端達(dá)到高電平的門(mén)限電壓時(shí),RESET 為高電平,系統(tǒng)進(jìn)入正常工作狀態(tài)。LPC2114可使用外部晶振或外部時(shí)鐘源,內(nèi)部PLL 電路可調(diào)整系統(tǒng)時(shí)鐘,使系統(tǒng)運(yùn)行速度更快(CPU最大操作時(shí)鐘為60MHz 。倘若不使用片內(nèi)PLL 功能及ISP 下載功能,則外部晶振頻率范圍是1MHz 30MHz ,

24、外部時(shí)鐘頻率范圍是1MHz 50MHz ;若使用了片內(nèi)PLL 功能或ISP 下載功能,則外部晶振頻率范圍是10MHz 25MHz ,外部時(shí)鐘頻率范圍是 10MHz 25MHz 。系統(tǒng)使用了外部11.0592MHz 晶振,電路如圖4所示XTAL1圖4 系統(tǒng)時(shí)鐘電路12通過(guò)JTAG 接口,可對(duì)芯片內(nèi)部的的所有部件進(jìn)行訪(fǎng)問(wèn),因而是開(kāi)發(fā)調(diào)試嵌入式系統(tǒng)的一種簡(jiǎn)潔高效的手段。目前JTAG 接口的連接有兩種標(biāo)準(zhǔn),即14針和20針。本系統(tǒng)采用的是20針的JTAG 仿真接口。標(biāo)準(zhǔn)的JTAG 接口是4線(xiàn):TMS 、TCK 、TDI 、TDO ,分別為測(cè)試模式選擇、測(cè)試時(shí)鐘、測(cè)試數(shù)據(jù)輸入和測(cè)試數(shù)據(jù)輸出。 圖4 系統(tǒng)

25、仿真電路LPC2114提供了32個(gè)可編程的I/O端口,用戶(hù)可將每個(gè)端口配置為輸入模式、輸出模式或特殊功能模式,由片內(nèi)的特殊功能寄存器控制。在該系統(tǒng)的設(shè)計(jì)中,采用通用I/O口動(dòng)態(tài)掃描的方式,外擴(kuò)4×4矩陣鍵盤(pán),鍵盤(pán)掃描的工作原理比較簡(jiǎn)單,在此不作詳述。 圖6 系統(tǒng)鍵盤(pán)電路213I C 總線(xiàn)是一種用于IC 器件之間連接的二線(xiàn)制總線(xiàn)。它通過(guò)SDA (串地?cái)?shù)據(jù)線(xiàn))及SCL (串行時(shí)鐘線(xiàn))兩線(xiàn)在連接到總線(xiàn)的器件之間傳送信息,并根據(jù)地址識(shí)別每個(gè)器件。LPC2114內(nèi)含一個(gè)I C 總線(xiàn)控制器,可方便地與各種帶有I C 接口的器件相連。在該系統(tǒng)中,外擴(kuò)一片AT24C01作為I C 存儲(chǔ)器。AT24C

26、01提供128字節(jié)的EEPROM 存儲(chǔ)空間,可用于存放少量在系統(tǒng)中掉電需要保存的數(shù)據(jù)。 2222U5圖7 IC 接口電路3.3 硬件開(kāi)發(fā)工具ORCAD9.2簡(jiǎn)介ORCAD9.2是一款功能強(qiáng)大的EDA (Electronic Design Automation 電子設(shè)計(jì)自動(dòng)化)工具。它主要有3大基本的功能。即Capture CIS,PSpice,Layout Plus。在設(shè)計(jì)過(guò)程中,我們用Capture CIS 進(jìn)行原理圖的繪制,用PSpice 進(jìn)行電路仿真與分析,用Layout Plus 進(jìn)行PCB 的設(shè)計(jì)。2144 嵌入式系統(tǒng)軟件開(kāi)發(fā)4.1 嵌入式系統(tǒng)軟件的組成嵌入式系統(tǒng)的軟件通常包括了以下

27、幾個(gè)部分: (1)初始化引導(dǎo)代碼初始化引導(dǎo)代碼是任何嵌入式系統(tǒng)上電復(fù)位后第一個(gè)執(zhí)行的代碼。 (2)板級(jí)支持包操作系統(tǒng)提供商為了解決硬件平臺(tái)的差異性,通常把操作系統(tǒng)的共性部分利用標(biāo)準(zhǔn)的C 語(yǔ)言實(shí)現(xiàn),把依賴(lài)于硬件的部分提供給用戶(hù)進(jìn)行編寫(xiě)代碼,操作系統(tǒng)規(guī)定了一個(gè)標(biāo)準(zhǔn)的規(guī)范,用戶(hù)編寫(xiě)的這些代碼為用戶(hù)的定制硬件和操作系統(tǒng)之間提供了一個(gè)接口和支持平臺(tái),這一部分代碼稱(chēng)為板級(jí)支持包。 (3)嵌入式操作系統(tǒng)操作系統(tǒng)是嵌入式系統(tǒng)的一個(gè)重要的組成部分,特別是對(duì)于復(fù)雜的嵌入式系統(tǒng)的開(kāi)發(fā)。嵌入式操作系統(tǒng)位于板級(jí)支持包和應(yīng)用軟件之間,應(yīng)用軟件開(kāi)發(fā)調(diào)用操作系統(tǒng)功能,操作系統(tǒng)的功能以API 的形式提供。 (4)網(wǎng)絡(luò)協(xié)議棧協(xié)議

28、棧對(duì)于具有網(wǎng)絡(luò)工能的嵌入式產(chǎn)品是必要的。目前嵌入式協(xié)議棧的提供有兩種方式。一種是獨(dú)立的第三方協(xié)議棧產(chǎn)品,一種是嵌入式操作系統(tǒng)的提供商提供的協(xié)議棧產(chǎn)品。 (5)應(yīng)用軟件嵌入式系統(tǒng)的應(yīng)用軟件一般需要自主開(kāi)發(fā),不同的嵌入式系統(tǒng)的應(yīng)用軟件各具特色功能。 (6)圖形用戶(hù)界面GUI對(duì)于大多數(shù)嵌入式系統(tǒng),圖形用戶(hù)界面是必需的。GUI 運(yùn)行在嵌入式操作系統(tǒng)之上,用戶(hù)開(kāi)發(fā)與用戶(hù)交互的應(yīng)用軟件通過(guò)GUI 的功能調(diào)用一實(shí)現(xiàn)。用戶(hù)應(yīng)用軟件高層用戶(hù)應(yīng)用軟件低層GUI協(xié)議設(shè)備驅(qū)動(dòng)文件系統(tǒng)嵌入式操作系統(tǒng)(OS )板級(jí)支持包(BSP )初始化引導(dǎo)代碼(Bootloader154.2 嵌入式系統(tǒng)軟件運(yùn)行流程 (1)從引導(dǎo)程序入

29、口開(kāi)始。(2)復(fù)位向量入口,此時(shí)中斷是禁止的。(3)設(shè)置處理器的工作模式,通常使用復(fù)位時(shí)的默認(rèn)模式。(4)設(shè)置RAM 和ROM 的工作參數(shù),包括DRAM 的刷新參數(shù)、地址空間分配等,至此嵌入式系統(tǒng)的處理器和存儲(chǔ)器子系統(tǒng)達(dá)到運(yùn)行狀態(tài)。(5)設(shè)置操作系統(tǒng)運(yùn)行所需要的數(shù)據(jù)段、堆??臻g等。(6)設(shè)置中斷向量,中斷向量的設(shè)置根據(jù)需要進(jìn)行,也可以在其他的時(shí)間設(shè)置,但是一定要在中斷允許之前完成。(7)操作系統(tǒng)的初始化。(8)進(jìn)入用戶(hù)的應(yīng)用。到這里開(kāi)始執(zhí)行用戶(hù)的應(yīng)用程序代碼。 4.3 LPC2114的啟動(dòng)代碼一般在32位ARM 應(yīng)用系統(tǒng)中,軟件大多數(shù)采用C 語(yǔ)言進(jìn)行編程,并且以嵌入式操作系統(tǒng)為開(kāi)發(fā)平臺(tái),這樣就

30、大大提高了開(kāi)發(fā)效率及軟件性能。為了能夠進(jìn)行系統(tǒng)初始化,采用一個(gè)匯編文件作為啟動(dòng)代碼是常用的做法,它可以實(shí)現(xiàn)堆棧初始化、中斷系統(tǒng)初始化、I/O初始化外圍初始化以及地址重映射等操作。(1文件的劃分可將啟動(dòng)代碼劃分為4個(gè)文件:Vectors.s 、Init.s 、Target.c 和Target.h 。Vectors.s 包含異常向量表堆棧初始化及中斷服務(wù)程序與C 程序的接口,可根據(jù)需要修改。Init.s 包含系統(tǒng)初始化代碼,并跳轉(zhuǎn)到ADS 提供的初始化代碼,一般無(wú)需改動(dòng)。而Target.s 和Target.h 包含目標(biāo)板特殊的代碼,包括異常處理程序和目標(biāo)板初始化程序,可根據(jù)程序的需要修改。這樣做的

31、目的是為了盡量減少匯編代碼,同時(shí)把不需要修改的代碼獨(dú)立出來(lái)以減少錯(cuò)誤改動(dòng)。 (2異常向量表異常是由內(nèi)部或外部源產(chǎn)生的,以引起處理器的一個(gè)事件。ARM 處理器核支持7種類(lèi)型的異常。異常出現(xiàn)后,CPU 強(qiáng)制從異常類(lèi)型對(duì)應(yīng)的固定存儲(chǔ)地址開(kāi)始執(zhí)行程序。這個(gè)固定的地址稱(chēng)為異常向量。異常向量表的代碼如程序1。這段代碼位于文件Vector.s 中。 程序1 異常向量表 VectorsLDR PC,ResetAddr (1 LDR PC,UndefinedAddr (2 LDR PC,SWI-Addr (316LDR PC,PrefetchAddr (4LDR PC,DataAbortAddr (5DCD O

32、xB9205f80 (6LDR PC,PC,#-Oxff0 (7LDR PC,FIQ-Addr (8ResetAddr DCD Reset (9UndefinedAddr DCD Undefined (10SWI-Addr DCD SoftwareInterrupt (11PrefetchAddr DCD PrefetchAbort (12DataAbortAddr DCD DataAbort (13Nouse DCD 0 (14IRQ-Addr DCD IRQ-Handler (15FIQ-Addr DCD FIQ-Handler (16向量從上到下依次為復(fù)位、未定義指令異常、軟件中斷、預(yù)取

33、指令中止、預(yù)取數(shù)據(jù)中止、保留的異常IRQ 和FIQ 。(3系統(tǒng)初始化代碼由于LPC2114微控制器的存儲(chǔ)系統(tǒng)比較簡(jiǎn)單 ,所以系統(tǒng)初始化代碼也比較簡(jiǎn)單。這段代碼位于文件Init.s 中。程序2 系統(tǒng)初始化代碼ResetBL InitStack (1)BL TargetResetInit (2)B _main (3)由文件Vector.s 程序清單可知,在芯片復(fù)位時(shí)程序會(huì)跳轉(zhuǎn)到標(biāo)號(hào)Reset 處。程序首先調(diào)用InitStack 初始化各種模式的堆棧, 然后調(diào)用TargetResetInit 對(duì)系統(tǒng)進(jìn)行基本的初始化,最后跳轉(zhuǎn)到ADS 提供的啟動(dòng)代碼main 。main 是ADS 提供的啟動(dòng)代碼起始位

34、置,它初始化庫(kù)并最終引導(dǎo)CPU 進(jìn)入mian 函數(shù)。(4初始化CPU 堆棧初始化CPU 堆棧InitStackMOV R0, LR ;設(shè)置管理模式堆棧17MSR CPSR_c, #0xd3LDR SP, StackSvc ;設(shè)置中斷模式堆棧MSR CPSR_c, #0xd2LDR SP, StackIrq ;設(shè)置快速中斷模式堆棧MSR CPSR_c, #0xd1LDR SP, StackFiq ;設(shè)置中止模式堆棧MSR CPSR_c, #0xd7LDR SP, StackAbt ;設(shè)置未定義模式堆棧MSR CPSR_c, #0xdbLDR SP, StackUnd ;設(shè)置系統(tǒng)模式堆棧MSR C

35、PSR_c, #0xdfLDR SP, StackUsrMOV PC, R0StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1 * 4StackSvc DCD SvcStackSpace + (SVC_STACK_LEGTH - 1 * 4StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH - 1 * 4StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1 * 4StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1

36、* 4StackUnd DCD UndtStackSpace +(UND_STACK_LEGTH - 1 * 4;/* 分配堆??臻g */AREA MyStacks, DATA, NOINIT, ALIGN=2UsrStackSpace SPACE USR_STACK_LEGTH * 4 ;用戶(hù)(系統(tǒng))模式堆??臻gSvcStackSpace SPACE SVC_STACK_LEGTH * 4 ;管理模式堆??臻gIrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ;中斷模式堆??臻gFiqStackSpace SPACE FIQ_STACK_LEGTH * 4 ;快速中

37、斷模式堆??臻gAbtStackSpace SPACE ABT_STACK_LEGTH * 4 ;中止義模式堆??臻gUndtStackSpace SPACE UND_STACK_LEGTH * 4 ;未定義模式堆棧因?yàn)槌绦蛐枰袚Q模式,而且程序退出時(shí)CPU 的模式已經(jīng)不再是管理模式而是系統(tǒng)模式,LR 已經(jīng)不再保存返回程序地址,所以程序首先把返回地址保持到R0中,同時(shí)使用R0返回。然后程序把處理器模式轉(zhuǎn)化為管理模式,并設(shè)置管理模式的堆棧指針。其中,變量StackSvc 保存著管理模式的堆棧指針的初始值,SvcStackSpace 是分配給管理模式的堆??臻g的開(kāi)始地址,而SVC18STACK LEG

38、TH 是用戶(hù)定義的常量,用于設(shè)置管理模式的堆??臻g的大小。程序使用同樣的方法設(shè)置IRQ 模式堆棧指針、FIQ 模式堆棧指針、中止模式堆棧指針、未定義模式堆棧指針和系統(tǒng)模式堆棧指針。設(shè)置CPU 堆棧大小的代碼見(jiàn)程序清單6,這部分代碼在文件Vectors 的開(kāi)始處,可以根據(jù)需要改變它。程序4 設(shè)置CPU 堆棧大小USR_STACK_LEGTH EQU 64SVC_STACK_LEGTH EQU 0FIQ_STACK_LEGTH EQU 16IRQ_STACK_LEGTH EQU 64ABT_STACK_LEGTH EQU 0UND_STACK_LEGTH EQU 0(5系統(tǒng)基本初始化為了使系統(tǒng)基本

39、能夠工作,必須在進(jìn)入main(函數(shù)前對(duì)系統(tǒng)進(jìn)行一些基本的初始化工作,這些工作TargetResetInit(完成。見(jiàn)程序5,這部分代碼在target.c 中定義,可根據(jù)需要修改。程序5 TargetResetInit函數(shù)void TargetResetInit(void/* 設(shè)置系統(tǒng)各部分時(shí)鐘 */PLLCON = 1;#if (Fcclk / 4 / Fpclk = 1VPBDIV = 0;#endif#if (Fcclk / 4 / Fpclk = 2VPBDIV = 2;#endif#if (Fcclk / 4 / Fpclk = 4VPBDIV = 1;#endif#if (Fcco

40、/ Fcclk = 2PLLCFG = (Fcclk / Fosc - 1 | (0 << 5;19#endif#if (Fcco / Fcclk = 4PLLCFG = (Fcclk / Fosc - 1 | (1 << 5;#endif#if (Fcco / Fcclk = 8PLLCFG = (Fcclk / Fosc - 1 | (2 << 5;#endif#if (Fcco / Fcclk = 16PLLCFG = (Fcclk / Fosc - 1 | (3 << 5;#endifPLLFEED = 0xaa;PLLFEED = 0x

41、55;while(PLLSTAT & (1 << 10 = 0;PLLCON = 3;PLLFEED = 0xaa;PLLFEED = 0x55; /* 設(shè)置存儲(chǔ)器加速模塊 */MAMCR = 2;#if Fcclk < 20000000MAMTIM = 1;#else#if Fcclk < 40000000MAMTIM = 2;#elseMAMTIM = 3;#endif#endif/* 初始化VIC */VICIntEnClr = 0xffffffff;VICVectAddr = 0;VICIntSelect = 0;20時(shí)鐘是芯片各部分正常工作的基礎(chǔ),雖然

42、時(shí)鐘可以在任何時(shí)候設(shè)置,但為了避免混亂,最好在進(jìn)入main(函數(shù)前設(shè)置。這段代碼使用友好的接口正確地設(shè)置系統(tǒng)各部分時(shí)鐘,設(shè)置方法是在系統(tǒng)配置文件config.h 中定義各部分的時(shí)鐘,見(jiàn)程序6。程序6 系統(tǒng)時(shí)鐘設(shè)置/*系統(tǒng)設(shè)置,F(xiàn)osc 、Fcclk 、Fcco 、Fpclk 必須定義*/#define Fosc 11059200 /晶振頻率,1025MHz#define Fcclk (Fosc*4 /系統(tǒng)頻率#define Fcco (Fcclk*4 /CCO頻率#define Fpclk (Fcclk/4 /VPB時(shí)鐘頻率編寫(xiě)好啟動(dòng)代碼,完成燒錄之后,下一步要做的工作就是操作系統(tǒng)的移植,本系

43、統(tǒng)我們采用的C/OS-實(shí)時(shí)操作系統(tǒng),下一節(jié),我們將對(duì)C/OS-進(jìn)行詳細(xì)介紹。4.4 C/OS-簡(jiǎn)介C/OS-讀作“micro C O S 2”,意為“微控制器操作系統(tǒng)版本2”。C/OS-是著名的、源碼公開(kāi)的內(nèi)核,可用于各類(lèi)8位、16位和32位單片機(jī)或DSP 。從C/OS算起,該內(nèi)核已有10余年的應(yīng)用史,在諸多領(lǐng)域得到廣泛應(yīng)用。C/OS-是一個(gè)完整的、可移植的、可固化的、可剪裁的占先式實(shí)時(shí)多任務(wù)內(nèi)核。C/OS-是用ANSI 的C 語(yǔ)言編寫(xiě)的,包含一小部分匯編代碼,使之可以供不同架構(gòu)的微處理器使用。至今,從8位到64位,C/OS-已在超過(guò)40種不同架構(gòu)的微處理器上運(yùn)行。C/OS-的特點(diǎn):(1)公開(kāi)

44、源代碼源代碼是公開(kāi)的。(2)可移植性(Portable )絕大部分C/OS-的源碼是用移植性很強(qiáng)的ANSI C寫(xiě)的。和微處理器硬件相關(guān)的那部分是用匯編語(yǔ)言寫(xiě)的。匯編語(yǔ)言寫(xiě)的部分已經(jīng)壓到最低限度,使得C/OS-便于移植到其他微處理器上。(3)可固化(ROMmable )C/OS-是為嵌入式應(yīng)用而設(shè)計(jì)的,這就意味著,只要有固化手段(C 編譯、連接、下載和固化),C/OS-可以嵌入到產(chǎn)品中成為產(chǎn)品的一部分。(4)可裁剪(Scalable )C/OS-使用條件編譯實(shí)現(xiàn)可剪裁。用戶(hù)程序可以只編譯自己需要的C/OS-的功能,而不編譯不需要的功能,以減少C/OS-對(duì)代碼空間和數(shù)據(jù)空間的占用。(5)占先式(P

45、reemptive )21C/OS-是完全占先式的實(shí)時(shí)內(nèi)核。這意味著C/OS-總是運(yùn)行就緒條件下優(yōu)先級(jí)最高的任務(wù)。大多數(shù)商業(yè)內(nèi)核也是占先式的,C/OS-在性能上和它們類(lèi)似。(6)多任務(wù)C/OS-可以管理64個(gè)任務(wù)。(7)可確定性絕大多數(shù)C/OS-的函數(shù)調(diào)用與服務(wù)的執(zhí)行時(shí)間具有可確定性。也就是說(shuō),用戶(hù)對(duì)C/OS的函數(shù)調(diào)用與服務(wù)的執(zhí)行時(shí)間是可知的。(8)任務(wù)棧C/OS-的每個(gè)任務(wù)有自己?jiǎn)为?dú)的??臻g。使用C/OS-的??臻g校驗(yàn)函數(shù),可以確定每個(gè)任務(wù)到底需要多少??臻g。(9)系統(tǒng)服務(wù)C/OS-提供很多系統(tǒng)服務(wù),例如郵箱、消息隊(duì)列、信號(hào)量、塊大小固定的內(nèi)存的申請(qǐng)與釋放和時(shí)間相關(guān)函數(shù)等。(10)中斷管理中

46、斷可以使正在執(zhí)行的任務(wù)暫時(shí)掛起。如果優(yōu)先級(jí)更高的任務(wù)被該中斷喚醒,則高優(yōu)先級(jí)的任務(wù)在中斷嵌套全部退出后立即執(zhí)行,中斷嵌套層數(shù)可達(dá)255層。(11)穩(wěn)定性與可靠性C/OS-是基于C/OS的,C/OS自1992年以來(lái)已經(jīng)有好幾百個(gè)商業(yè)應(yīng)用。其質(zhì)量已得到認(rèn)證,可以在任何應(yīng)用中使用。4.5 選擇C/OS-的原因在開(kāi)發(fā)嵌入式系統(tǒng)時(shí),一般選擇基于ARM 和C/OS-的嵌入式開(kāi)發(fā)平臺(tái),因?yàn)锳RM 微處理器具有處理速度快,超低功耗,價(jià)格低廉,應(yīng)用前景廣泛等優(yōu)點(diǎn)。(1)將C/OS-移植到ARM 系統(tǒng)之后,可以充分結(jié)合兩者的優(yōu)勢(shì)。如果一個(gè)程序在一個(gè)環(huán)境里能工作,我們經(jīng)常希望把它移植到另一個(gè)編譯系統(tǒng)、處理器或者操作

47、系統(tǒng)上,這就是移植技術(shù)。移植技術(shù)可以使一種特定的技術(shù)在更加廣泛的范圍使用,使軟件使用更加靈活,不局限于某一條件。C/OS-是由Jean J.Labrosse 先生編寫(xiě)的完整的可移植、固化、裁剪的占先式實(shí)時(shí)多任務(wù)內(nèi)核。C/OS-的源代碼完全開(kāi)放,這是其他商業(yè)實(shí)時(shí)內(nèi)核無(wú)法比擬的。(2)它是針對(duì)嵌入式應(yīng)用設(shè)計(jì)的,在設(shè)計(jì)之初就充分考慮了可移植性,它的大部分代碼都是用可移植性的ANSIC C編寫(xiě)的。(3)C/OS-可以移植到從8位到64位的不同類(lèi)型、不同規(guī)模的的嵌入式系統(tǒng),并能在大部分的8位、16位、32位,甚至64位的微處理器和DSP 上運(yùn)行。由于C/OS-是一個(gè)實(shí)時(shí)操作系統(tǒng),所以如22果將它嵌入到A

48、RM 處理器上,就能進(jìn)一步簡(jiǎn)化ARM 的開(kāi)發(fā)。鑒于本文篇幅所限,關(guān)于操作系統(tǒng)移植部分請(qǐng)讀者參閱相關(guān)資料。4.6 應(yīng)用程序開(kāi)發(fā)移植操作系統(tǒng)之后,就可以進(jìn)用應(yīng)用程序的開(kāi)發(fā)了。根據(jù)系統(tǒng)開(kāi)發(fā)要求以及系統(tǒng)硬件結(jié)構(gòu),編了如下程序: 鍵盤(pán)輸入控制程序; 中斷程序; 定時(shí)器控制程序:定時(shí)控制LED ;程序流程圖如圖8所示, 圖8 鍵盤(pán)輸入控制程序流程圖23GPIO 是一個(gè)雙向的I/O口,內(nèi)部無(wú)上拉電阻,所以用作鍵盤(pán)輸入時(shí),要加上上拉電阻。進(jìn)行GPIO 輸入時(shí),先要設(shè)置IODIR 使口線(xiàn)為輸入方式,然后讀取IOPIN 的值即可。程序是使用P0.25口為一位按鍵輸入,每一次有效按鍵即對(duì)LED4進(jìn)行取反控制。因?yàn)榘?/p>

49、鍵會(huì)出現(xiàn)抖動(dòng),如果不消除抖動(dòng),會(huì)出現(xiàn)誤認(rèn)抖動(dòng)為有鍵按下,所以必須去抖。因此,在程序當(dāng)中,編寫(xiě)了去抖動(dòng)程序。void WaitKay(void unit32 I;while(1 while(IOPIN&KEY1!=0; /等待KEY1鍵按下for(i=0;i<50000;i+; /延時(shí)去抖if(IOPIN&KEY1=0break;while(IOPIN&KEY1=0; /等待KEY1鍵放開(kāi)按鍵過(guò)程如圖9所示:無(wú)按鍵 鍵按下后 松開(kāi)后前沿抖動(dòng) 穩(wěn)定期圖9 按鍵過(guò)程 后沿抖動(dòng)LPC2114中斷管理是由向量中斷控制器(VIC操作的,向量中斷控制器具有32個(gè)中斷請(qǐng)求輸入,可

50、將它們?cè)O(shè)置為FIQ 、向量IRQ 和非向量IRQ ,通過(guò)編程不同外設(shè)的向量IRQ 中斷優(yōu)先級(jí),可以實(shí)現(xiàn)動(dòng)態(tài)分配調(diào)整。FIQ 中斷優(yōu)先級(jí)最高,向量IRQ 具有中等優(yōu)先級(jí),非向量IRQ 的優(yōu)先級(jí)最低。VIC 基本操作方法:設(shè)置IRQ/FIQ中斷,若是IRQ 中斷,則可以設(shè)置為向量中斷并分配中斷優(yōu)先級(jí),否則為非向量IRQ 。然后可以設(shè)置中斷允許,以及向量中斷對(duì)應(yīng)地址或非向量默認(rèn)地址。當(dāng)有中斷后,若是IRQ 中斷,則可以讀取向量地址寄存器,然后跳轉(zhuǎn)到相應(yīng)代碼。當(dāng)要退出中斷時(shí),對(duì)向量地址寄存器寫(xiě)0,通知VIC 中斷結(jié)束。當(dāng)發(fā)生中斷時(shí),處理器將會(huì)切換處理器模式,同時(shí)相關(guān)的寄存器也將會(huì)映射。24LPC211

51、4具有3個(gè)外部中斷輸入,這3個(gè)外部中斷屬電平中斷方式,可以用來(lái)喚醒掉電的處理器。 EXINT 寄存器為中斷標(biāo)志寄存器,低3位與外部中斷引腳EINT2、EINT1、EINT0對(duì)應(yīng),為1時(shí)表示外部中斷有效。可以通過(guò)軟件向其寫(xiě)入清零標(biāo)志。外部中斷將會(huì)連接到VIC ,使用向量中斷控制器進(jìn)行管理。EXTWAKE 寄存器外部中斷喚醒掉電的允許寄存器,為1時(shí)允許其喚醒掉電,否則不允許該中斷喚醒CPU 。在沒(méi)有時(shí)鐘源的情況下仍能工作的唯一功能是外部中斷EINT0、EINT1、EINT2,即只有他們能喚醒掉電的CPU 。使用中斷向量控制器的向量IRQ 功能,實(shí)現(xiàn)EINT0、EINT1中斷處理。首先把EINT0和

52、EINT1設(shè)置為向量IRQ 中斷,分配優(yōu)先級(jí)并使能向量,然后設(shè)置相關(guān)向量地址寄存器及中斷使能;當(dāng)有IRQ 中斷時(shí),VIC 會(huì)將中斷向量地址放入向量地址寄存器VICVectAddr ,使中斷處理能夠快速的找到相應(yīng)的向量,進(jìn)行IRQ 處理;在IRQ 處理過(guò)程中,IRQ 中斷默認(rèn)是被禁止的,如有需要可以設(shè)置IRQ 中斷允許,在處理完畢后寫(xiě)向量地址寄存器為0,通知VIC 中斷處理結(jié)束。中斷程序流程圖如圖10所示: 圖10 中斷程序流程圖25在主程序當(dāng)中,應(yīng)對(duì)外部中斷初始化,對(duì)各個(gè)要用到的中斷寄存器進(jìn)行設(shè)置。例如:VICIntSelect=Ox00000000; /設(shè)置所有通道為IRQ 中斷VICVec

53、tCntl0=Ox2e; /EINT0通道分配到IRQ Slot 0,即優(yōu)先級(jí)最高VICVectAddr0=(intIRQ_Eint0; /設(shè)置EINT0向量地址VICVectCntl1=Ox2F;VICVectAddr1=(intIRQ_Eint1;VICIntEnable=Ox0000C0000; /使能外部中斷標(biāo)志EXITINT=Ox07; /清除外部中斷標(biāo)志LPC2114具有兩個(gè)32位定時(shí)器,分別具有4路捕獲、4路比較匹配并輸出電路。定時(shí)器是增量計(jì)數(shù)的,但上溢時(shí)不會(huì)產(chǎn)生中斷標(biāo)志,而只能通過(guò)比較匹配或捕獲輸入產(chǎn)生中斷標(biāo)志。兩個(gè)定時(shí)器具有同樣的寄存器,只是地址不同而已。如圖11所示,32位

54、定時(shí)器TC 的計(jì)數(shù)頻率由pclk 經(jīng)過(guò)PR 進(jìn)行分頻控制得到,而定時(shí)器的啟動(dòng)/停止、計(jì)數(shù)復(fù)位有TCR 控制。當(dāng)有捕獲事件或比較匹配事件發(fā)生時(shí),IR 會(huì)設(shè)置相關(guān)中斷標(biāo)志(因?yàn)椴皇嵌〞r(shí)器溢出而產(chǎn)生中斷,所以圖中采用虛線(xiàn)連接),若已打開(kāi)中斷允許(VIC ), 則會(huì)產(chǎn)生中斷。當(dāng)然,預(yù)分頻控制器PR 只是控制分頻數(shù),而其對(duì)應(yīng)的分頻計(jì)數(shù)器是PC ,但用戶(hù)無(wú)需操作PC 寄存器。圖11 基本定時(shí)器的寄存器功能框圖如圖12所示,定時(shí)器比較匹配由控制寄存器MCR 進(jìn)行匹配操作設(shè)置。 26 圖12 定時(shí)器的比較匹配寄存器功能框圖寄存器則為4路比較匹配通道的比較值。當(dāng)比較匹配時(shí),將會(huì)按照MCR 設(shè)置的方法產(chǎn)生中斷或復(fù)

55、位TC 等,而且EMR 可以控制比較匹配輸出,可匹配輸出高電平、低電平以及電平翻轉(zhuǎn)等。如圖13所示,在定時(shí)器TC 運(yùn)行過(guò)程中,當(dāng)有捕獲觸發(fā)信號(hào)產(chǎn)生時(shí),捕獲電路將會(huì)立即把當(dāng)時(shí)的定時(shí)器指TC 復(fù)制到對(duì)應(yīng)觸發(fā)通道的捕獲寄存器中。捕獲可以設(shè)置為上升沿觸發(fā)、下降沿觸發(fā)或雙邊沿觸發(fā),并可設(shè)置為捕獲中斷,這些設(shè)置是通過(guò)CCR 完成的。圖13 定時(shí)器的捕獲寄存器功能框圖定時(shí)器基本操作方法如下:計(jì)算定時(shí)器的時(shí)鐘頻率,設(shè)置PR 寄存器進(jìn)行分頻操作;設(shè)置比較匹配通道的初值及其工作模式,若是使用捕獲功能,則設(shè)置捕獲方式; 若使用定時(shí)器的相關(guān)中斷,則設(shè)置VIC ,使能中斷; 設(shè)置TCR ,啟動(dòng)定時(shí)器。 定時(shí)器計(jì)數(shù)時(shí)鐘頻

56、率計(jì)算如下: 27計(jì)數(shù)時(shí)鐘頻率Fpclk/(N+1 其中:N 為PR 的值。 定時(shí)器定時(shí)控制應(yīng)用如下:采用11.059 2 MHz晶振,使用PLL,Fcclk Fosc ×411.059 2 MHz×444.236 8MHz,外圍時(shí)鐘使用復(fù)位默認(rèn)得Fpclk Fcclk/444.236 8 MHz/4=11.059 2 MHz,定時(shí)器進(jìn)行100分頻(即PR 99),實(shí)現(xiàn)0.5S 定時(shí),定時(shí)控制LED 點(diǎn)亮或熄滅。在程序中,必須初始化定時(shí)器,如果兩個(gè)定時(shí)器都用到,那么兩個(gè)都要初始化。下面是定時(shí)器0的一個(gè)初始化程序:void TargetInit(void /*初始化定時(shí)器0,實(shí)現(xiàn)0.5s 定時(shí)Fcclk=Fosc×4=11.059 2 MHz×444.0236 8MHz Fpclk=Fcclk/4=44.236 8 MHz/4=11.059 2 MHz */T0PR=99; /設(shè)置定時(shí)器分頻為100分頻,得110 592 Hz T0MCR=Ox03; /匹配通道0匹配

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論