版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
..嵌入式系統(tǒng)開發(fā)習題11.什么是嵌入式系統(tǒng)?有何特點?答:嵌入式系統(tǒng)的概念有很多種,在嵌入式系統(tǒng)領(lǐng)域中比較認同的嵌入式系統(tǒng)的概念是:嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)的特點:=1\*GB2⑴嵌入式系統(tǒng)是將先進的計算機技術(shù)、半導(dǎo)體技術(shù)以及電子技術(shù)與各個行業(yè)的具體應(yīng)用相結(jié)合的產(chǎn)物,這一點就決定了它必然是一個技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識集成系統(tǒng)。=2\*GB2⑵系統(tǒng)內(nèi)核小。由于嵌入式系統(tǒng)一般是應(yīng)用于小型電子裝置中,系統(tǒng)資源相對有限,所以內(nèi)核較之傳統(tǒng)的操作系統(tǒng)要小得多。=3\*GB2⑶專用性強。=4\*GB2⑷系統(tǒng)精簡。=5\*GB2⑸系統(tǒng)軟件〔OS要求具有高實時性。=6\*GB2⑹嵌入式軟件開發(fā)要走向標準化,需要使用多任務(wù)的操作系統(tǒng)。=7\*GB2⑺嵌入式系統(tǒng)本身并不具備在其上進行進一步開發(fā)的能力。2.嵌入式系統(tǒng)可以分為幾層?每一層各完成哪些功能?答:嵌入式系統(tǒng)由硬件層、中間層、軟件層和功能層組成。硬件層:以嵌入式微處理器為核心,存儲器用以存儲數(shù)據(jù)和執(zhí)行代碼,相關(guān)的設(shè)備接口和I/O接口,這些組成了一個嵌入式系統(tǒng)的基礎(chǔ),實現(xiàn)邏輯運算,算術(shù)運算等。中間層:將系統(tǒng)上層軟件和底層硬件進行分離,封裝成標準的接口,在上層軟件開發(fā)人員無需知道底層硬件的具體情況,完成的任務(wù)是底層硬件的初始化、數(shù)據(jù)的輸入/輸出操作、硬件的配置等功能。軟件層:主要由RTOS、文件系統(tǒng)、圖形用戶接口、網(wǎng)絡(luò)系統(tǒng)和通用的組件模塊組成,是軟件開發(fā)的基礎(chǔ)。功能層:用來完成被控對象的控制功能。3.嵌入式系統(tǒng)中硬件抽象層有什么特點?答:硬件抽象層是介于硬件層與軟件層之間的中間層,它將系統(tǒng)上層軟件與底層硬件分離開來,具有以下兩個特點:=1\*GB2⑴硬件相關(guān)性:因為嵌入式實時系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性,而作為上層軟件與硬件平臺之間的接口,硬件抽象層需要為操作系統(tǒng)提供操作和控制具體硬件的方法。=2\*GB2⑵操作系統(tǒng)相關(guān)性:不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu),因此,不同的操作系統(tǒng)具有特定的硬件接口形式。4.簡述嵌入式處理器的硬件組成?答:隨著集成電路集成度的不斷提高,嵌入式系統(tǒng)板級的硬件電路模塊也越來越多的集成到芯片內(nèi)部,目前處理器芯片內(nèi)部的電路模塊組成如下:=1\*GB2⑴處理器內(nèi)核,以CPU為核心,有的還包含MMU〔存儲器管理單元、Cache〔高速緩存、ICE〔在線仿真等電路模塊。=2\*GB2⑵DSP/協(xié)處理器,對于多媒體處理的處理器,內(nèi)部一般有DSP〔數(shù)字信號處理、浮點運算、圖像加速等協(xié)處理器。=3\*GB2⑶RAM/ROM,在單片機處理器中,處理器芯片內(nèi)部一般集成了ROM〔只讀存儲器和RAM〔可讀可寫存儲器。=4\*GB2⑷處理器內(nèi)部控制電路,如PLL〔鎖相環(huán)、復(fù)位、DMA〔直接存儲器存取、中斷控制器、低功耗控制、看門狗等電路。=5\*GB2⑸芯片內(nèi)部接口電路,如GPIO〔通用輸入、輸出接口、I2C〔雙向兩線制的串行總線接口、IIS〔音頻總線接口、SPI〔串行外設(shè)接口、USB〔通用串行總線接口、LCD〔液晶顯示接口、ADC/DAC〔模數(shù)/數(shù)模轉(zhuǎn)換、UART〔通用異步收發(fā)器、IrDA〔紅外接口、CAN〔控制器局域網(wǎng)絡(luò)總線接口、以太網(wǎng)接口、Timer/RTC〔定時器/計數(shù)器接口等電路模塊。5.嵌入式處理器分那幾類?它們有何特點?答:=1\*GB2⑴嵌入式微處理器。特點:處理能力強,具有較高的性能,價格也相應(yīng)較高。=2\*GB2⑵嵌入式微控制器。特點:主要用于嵌入式體統(tǒng)工業(yè)的主流,跟嵌入式微處理器相比,微控制器的最大特點是單片化,體積大大減小,從而使功耗和成本下降,可靠性提高。并且價格低廉,功能優(yōu)良,擁有的品種和數(shù)量最多。=3\*GB2⑶嵌入式DSP處理器。特點:DSP處理器是專門用于信號處理方面的處理器,在系統(tǒng)結(jié)構(gòu)和指令算法方面進行了特殊設(shè)計,具有很高的編譯效率和指令的執(zhí)行速度。=4\*GB2⑷SoC片上系統(tǒng)。特點:=1\*GB3①實現(xiàn)了軟硬件無縫結(jié)合,直接在處理器片內(nèi)嵌入操作系統(tǒng)的代碼模塊=2\*GB3②具有極高的綜合性,在一個硅片內(nèi)部運用VHDL等硬件描述語言,實現(xiàn)一個復(fù)雜的系統(tǒng)=3\*GB3③絕大部分系統(tǒng)構(gòu)件在系統(tǒng)內(nèi)部,系統(tǒng)簡潔,減少了系統(tǒng)的體積和功耗,提高了系統(tǒng)的可靠性跟設(shè)計生產(chǎn)效率。6.分析目前市場上常用的幾種嵌入式處理器,說明不同嵌入式處理器的各自特點?答:目前市場上常用的嵌入式處理器有MCS51單片機,ARM處理器,MIPS處理器,PowerPC處理器,MC68000處理器,X86處理器等。MCS51的特點是,8位CPU,片內(nèi)振蕩器,4KBROM ,128KBRAM,21個特殊功能寄存器,32根I/O總線,片外可尋找范圍分別為64KB的外部程序和數(shù)據(jù),兩個16位的定時/計數(shù)器,一個全雙工串口接口,中斷結(jié)構(gòu)分為兩級優(yōu)先級,5個中斷源,適于按位邏輯運算的處理器。ARM處理器的特點是,體積小,功耗低,成本低,高性能,支持16/32位雙指令集,在全球有眾多合作伙伴。MIPS處理器的特點是,高性能,高檔次的處理器,有32位和64位的處理器,簡化硬件設(shè)計,強調(diào)軟硬件協(xié)同提高性能。PowerPC處理器特點,具有優(yōu)異的性能,低能量消耗,低散熱量。MC68000處理器,是一個16/32位的CISC處理器,采用32位總線和寄存器,這個結(jié)構(gòu)對之后的32為產(chǎn)品保持兼容。X86處理器的特點,可變指令長度的CISC處理器,允許不對齊訪問存儲器。7.舉例說明嵌入式處理器的性能指標?并分析對嵌入式系統(tǒng)的影響?答:性能指標主要有主頻,處理器字長,數(shù)據(jù)通路速度,運算速度,高速緩存和處理器的系統(tǒng)架構(gòu)。主頻,執(zhí)行每條指令的時鐘周期數(shù)一定,主頻越高單位時間內(nèi)執(zhí)行的指令越多。處理器字長,處理器內(nèi)部數(shù)據(jù)運算的基本位數(shù),反映的是計算精度,以及單次處理數(shù)據(jù)的總長度;數(shù)據(jù)通路速度,讀取指令數(shù)據(jù)傳輸計算數(shù)據(jù)的速度越高,處理器性能越好。運算速度,用MIPS〔每秒執(zhí)行多少百萬條指令表示,MIPS越大,說明運算速度越快;高速緩存,突破主存訪問速度的瓶頸,提高處理器的綜合性能。8.簡述你對嵌入式操作系統(tǒng)的認識,分析嵌入式操作系統(tǒng)有哪些特點?答:嵌入式操作系統(tǒng)EOS是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)〔包括軟硬件系統(tǒng)極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形界面、標準化瀏覽器等。EOS是相對于一般操作系統(tǒng)而言的,它除具備了一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機制、中斷處理、文件功能等之外,還有以下特點:=1\*GB2⑴可裝卸性,開放性、可伸縮性的體系結(jié)構(gòu)。=2\*GB2⑵強實時性,EOS實時性一般較強,可用于各種控制系統(tǒng)中。=3\*GB2⑶統(tǒng)一的接口,提供各種設(shè)備驅(qū)動接口。=4\*GB2⑷操作方便、簡單,提供友好的圖形GUI,追求易學易用。=5\*GB2⑸提供強大的網(wǎng)絡(luò)功能,支持TCP/IP協(xié)議及其他協(xié)議,提供TCP/UDP/IP/PPP協(xié)議支持及統(tǒng)一的MAC訪問層接口,為各種移動計算設(shè)備預(yù)留接口。=6\*GB2⑹強穩(wěn)定性,弱交互性。=7\*GB2⑺固化代碼。=8\*GB2⑻更好地硬件適應(yīng)性,也就是良好的移植性。9.試分析實時操作系統(tǒng)中可搶占型和不可搶占型有何區(qū)別?并舉例說明。答:實時操作系統(tǒng)可分為可搶占型和不可搶占型兩類。對于基于優(yōu)先級的系統(tǒng)而言,可搶占型的實時操作系統(tǒng)是指內(nèi)核可以搶占正在運行任務(wù)的CPU使用權(quán)并將使用權(quán)交給進入就緒態(tài)的優(yōu)先級更高的任務(wù),是內(nèi)核搶了CPU讓別的任務(wù)運行。不可搶占型實時操作系統(tǒng)使用某種算法以決定讓某個任務(wù)運行后,就把CPU的控制權(quán)完全交給該任務(wù),直到它主動將CPU控制權(quán)還回來。比如嵌入式操作系統(tǒng)uC/OS,可以根據(jù)優(yōu)先級進行搶占使用CPU,優(yōu)先級高的任務(wù)可以比優(yōu)先級低的任務(wù)優(yōu)先使用CPU。10.簡述嵌入式系統(tǒng)的開發(fā)過程?答:嵌入式系統(tǒng)的開發(fā)過程可以分為需求分析、建立開發(fā)環(huán)境、體系結(jié)構(gòu)設(shè)計、軟件/硬件設(shè)計、系統(tǒng)集成和系統(tǒng)優(yōu)化與測試6個階段。如果設(shè)計的流程是從需求分析開始,然后是建立開發(fā)環(huán)境,依次進行,最后是系統(tǒng)優(yōu)化與測試,那么就叫做自上而下的設(shè)計流程;反之就叫做自下而上的設(shè)計流程。所有的嵌入式系統(tǒng)設(shè)計不可避免的設(shè)計這六個階段,更重要的是找到一個好的設(shè)計方法,目前一種比較好的設(shè)計方法是采用計算機輔助設(shè)計工具。11.簡述在線仿真器ICE和在線調(diào)試器ICD有何區(qū)別?答:在線仿真器ICE是一種模擬CPU的設(shè)備,能執(zhí)行CPU的全部動作。采用該方式調(diào)試時,利用仿真頭代替目標板上的CPU,可以完全仿真CPU的行為。在線調(diào)試器ICD是將CPU的調(diào)試功能的引腳引出來,讓外部的硬件直接連接到這些引腳上去監(jiān)控整個CPU的動作。12.試分析嵌入式系統(tǒng)測試中的純軟件測試過程,舉例說明實現(xiàn)方法。答:純軟件測試過程是指用工具采用軟件打點技術(shù),在被測試代碼中加入一些函數(shù),這些函數(shù)用來完成數(shù)據(jù)的生成,并將數(shù)據(jù)送往目標機系統(tǒng)的共享內(nèi)存中,同時,在目標機系統(tǒng)中運行一個與處理任務(wù),用于完成這些數(shù)據(jù)的預(yù)處理,然后將處理過的數(shù)據(jù)通過目標機的串口,網(wǎng)口或者USB口送往宿主機測試平臺。舉例,可以在程序中間插入函數(shù),讀出當前所有寄存器內(nèi)容,發(fā)送至目標機系統(tǒng),測試者可以根據(jù)這些數(shù)據(jù)了解系統(tǒng)執(zhí)行情況。習題2按照ARM處理器的命名規(guī)則,說明ARM7TDMI中T、D、M、I的含義。答:T:支持16位的Thumb指令集;D:支持JTAG片上調(diào)試;M:支持長乘法操作〔64位結(jié)果的ARM指令,包含快速乘法器;I:帶有嵌入式追蹤宏單元ETM〔EmbeddedTraceMacro,用來設(shè)置斷點和觀察點。什么是哈佛結(jié)構(gòu)?與普林斯頓結(jié)構(gòu)有何區(qū)別?答:哈佛結(jié)構(gòu)是一種將程序中指令和數(shù)據(jù)分開存儲的存儲器結(jié)構(gòu)。即哈佛結(jié)構(gòu)中程序存儲器和數(shù)據(jù)存儲器是兩個獨立的存儲器,每個存儲器獨立編址、獨立訪問。普林斯頓結(jié)構(gòu)〔馮·諾伊曼結(jié)構(gòu)是一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的存儲器結(jié)構(gòu)。程序指令存儲地址和數(shù)據(jù)存儲地址指向同一個存儲器的不同物理位置。這便是。這便是兩種結(jié)構(gòu)的區(qū)別。什么是RSIC?什么是CSIC?簡述他們的特點與差別。答:RSIC是精簡指令集計算機,CISC是復(fù)雜指令集計算機。兩者的區(qū)別在于不同的CPU設(shè)計理念和方法。對于CISC:=1\*GB2⑴在CSIC結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻率相差懸殊。有80%的指令只在20%的運行時間內(nèi)才會用到。=2\*GB2⑵CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來了計算機體系結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時間和成本,而且還容易造成設(shè)計錯誤。=3\*GB2⑶在CISC結(jié)構(gòu)指令系統(tǒng)中,由于各條指令的功能不均衡性,不利于采用先進的計算機體系結(jié)構(gòu)技術(shù)來提高系統(tǒng)的性能。對于RISC:=1\*GB2⑴簡化指令集,只保留常用的基本指令;=2\*GB2⑵設(shè)計大量的通用存儲器,減少訪存的次數(shù);=3\*GB2⑶采用裝載/保存結(jié)構(gòu),支持流水線技術(shù),使每個周期時間相等;=4\*GB2⑷采用簡單的指令格式、規(guī)整的指令字長和簡單的尋址方式;=5\*GB2⑸單機器周期指令,即大多數(shù)的指令都可以在一個機器周期內(nèi)完成,并且允許處理器在同一時間內(nèi)執(zhí)行一系列的指令。ARM7處理器是幾級流水線?在ARM7處理器中,"PC指向的是下一條要執(zhí)行的指令",這句話對嗎?為什么?答:ARM7處理器采用三級流水線。"PC指向的是下一條要執(zhí)行的指令",這句話不對。在ARM處理器中將PC程序計數(shù)器定義到R15寄存器,無論處理器處于何種狀態(tài),PC總是指向"正在取值"指令的地址,一般來說,人們習慣性的約定將"正在執(zhí)行的指令作為參考點",成為當前第一條指令,那么PC總是指向隨后的第三條指令,或者說PC總是指向當前正在執(zhí)行的指令地址再加上2條指令的地址,即指向正在執(zhí)行指令的下下一條指令,而不是指向下一條要執(zhí)行的指令。簡述ARM處理器中在線仿真器模塊EmbeddedICE-RT的作用。答:ARM處理器中的在線仿真器模塊EmbeddedICE-RT,一般還帶有嵌入式宏跟蹤單元模塊ETM,實現(xiàn)ARM處理器的在線調(diào)試和運行過程的跟蹤功能;并且具有諸多ICE功能,例如實時尋址、斷點、單步、對ARMCPU的完全控制、對ASIC系統(tǒng)其余部分的訪問,以及對主機顯示器外設(shè)訪問、鍵盤輸入和磁盤存儲。ARM處理器的工作狀態(tài)分為哪二種?ARM處理器又是怎么定義和標志的?答:ARM處理器的工作狀態(tài)分為ARM狀態(tài)和Thumb狀態(tài),這兩種狀態(tài)有程序狀態(tài)字CPSR中T標志位確定,為0時處理器工作在ARM狀態(tài),為1時處理器工作在Thumb狀態(tài)。ARM7TDMI支持哪幾種指令集,各有什么特點?答:ARM7TDMI處理器內(nèi)核包含2套指令系統(tǒng),分別為ARM指令集和Thumb指令集,兩種指令集的特點是:ARM指令集:處理器執(zhí)行32位字對齊方式的ARM指令,每條ARM指令長度為32位,指令的功能強大。Thumb指令集:處理器執(zhí)行16位字對齊方式的Thumb指令,每條Thumb指令長度為16位,是ARM指令功能的子集。ARM7處理器有哪些工作模式?如何實現(xiàn)不同模式之間的切換?舉例說明。答:ARM處理器供支持7種工作模式,分別為:用戶模式〔usr;快速中斷模式〔fiq;外部中斷模式〔irq;管理模式〔svc;數(shù)據(jù)訪問終止模式〔abt;系統(tǒng)模式〔sys;未定義指令中止模式〔und。在7中模式中,除用戶模式外,其他的6種模式稱為特權(quán)模式,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。特權(quán)模式下通過修改當前程序狀態(tài)寄存器CPSR中控制位M[4:0]的值,來改變處理器的運行模式。例如MSRCPSR_c,#〔NoInt|SVC32Mode//從系統(tǒng)模式切換到管理模式MSRCPSR_c,#〔NoInt|SYS32Mode//從管理模式切換到系統(tǒng)模式描述ARM7處理器的內(nèi)部寄存器結(jié)構(gòu),并分別說明快速中斷FIQ有何特點?答:ARM7微處理器共有37個32位寄存器,其中31個為通用寄存器,6個為狀態(tài)寄存器。37個寄存器定義如下:=1\*GB2⑴31個通用寄存器:R0~R15、R8_fiq、R9_fiq、R10_fiq、R11_fiq、R12_fiq、R13_fiq、R14_fiq、R13_svc、R14_svc、R13_abt、R14_abt、R13_und、R14_und、R13_irq、R14_irq。=2\*GB2⑵6個狀態(tài)寄存器:CPSR、SPSR_abt、SPSR_svc、SPSR_irq、SPSR_fiq、SPSR_und。快速中斷FIQ,適用于對一個突發(fā)事件的快速響應(yīng),在ARM狀態(tài)中,快中斷有8個專用的寄存器,可以縮短狀態(tài)切換時需要的時間。當CPSR中相應(yīng)的F位清零,快速中斷被使能。什么是中斷延時?在實時系統(tǒng)中如何計算中斷延時時間?答:中斷延時是系統(tǒng)響應(yīng)一個中斷所需要的時間,即從外部中斷請求信號發(fā)出到執(zhí)行對應(yīng)的中斷服務(wù)程序ISR的第1條指令所需要的時間。FIQ的中斷延時計算,當FIQ使能時,最壞的延時包括:Tsyncmax:請求通過同步器的最長時間,為兩個處理器周期。Tldm:最長執(zhí)行時間,最長為20個周期。Texc:數(shù)據(jù)中止異常進入時間,為三個周期。Tfiq:FIQ進入時間,為兩個周期總的延時可為27個周期。在內(nèi)存的數(shù)據(jù)存儲過程中,什么是"字對齊"和"半字對齊"?答:在內(nèi)存數(shù)據(jù)存儲過程中,一般分為小端存儲格式和大端存儲格式。下面以小端存儲格式為例來說明字對齊和半字對齊:在小端存儲格式中,對于地址為A的字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序為A,A+1,A+2,A+3;對于地址為A的半字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序為A,A+1。簡述程序計數(shù)器〔PC在處理器工作中的作用。答:在ARM處理器中將PC程序計數(shù)器定義到R15寄存器,無論處理器處于何種狀態(tài),PC總是指向"正在取值"指令的地址。簡述ARM處理器中的返回鏈接寄存器〔LR在處理器工作中的作用。答:鏈接寄存器LR用于保存子程序返回地址或者異常處理程序的返回地址,LR寄存器一共有6個,其中子程序的返回地址使用一個R14,每種異常模式各自有一個專用的LR寄存器用于保存異常處理程序的返回地址,它們分別為R14_fiq、R14_svc、R14_abt、R14_und、R14_irq。分別簡述ARM處理器中的CPSR、SPSR在處理器工作中的作用。答:ARM內(nèi)核包含1個CPSR和5個僅供異常處理模式使用的SPSR。由于所有模式全部共享一個程序狀態(tài)寄存器CPSR,因此處理器所有的狀態(tài)全部都保存在CPSR中,也就是ARM內(nèi)核是通過CPSR來監(jiān)視和控制內(nèi)部操作的。每種異常模式都有一個對應(yīng)的程序狀態(tài)保存寄存器SPSR,用于保存任務(wù)在異常發(fā)生之前的CPSR狀態(tài)的當前值。結(jié)合CPSR的結(jié)構(gòu),說明程序狀態(tài)字中各個bit位的作用。答:=1\*GB2⑴條件代碼標志〔共計4bit含義如下:N:運算結(jié)果的最高位反映在該標志位。對于有符號二進制補碼,結(jié)果為負數(shù)時N=1,結(jié)果為正數(shù)或零時N=0;Z:指令結(jié)果為0時Z=1〔通常表示比較結(jié)果"相等",否則Z=0;C:當進行加法運算,最高位產(chǎn)生進位時C=1,否則C=0。當進行減法運算<包括CMP指令>,最高位產(chǎn)生借位時C=0,否則C=1。V:當進行加法/減法運算,并且發(fā)生有符號溢出時V=1,否則V=0,其它指令V不變。=2\*GB2⑵CPSR的最低8位為控制位,控制了處理器的工作方式。當發(fā)生異常時,這些位被硬件改變。當處理器處于一個特權(quán)模式時,可用軟件操作這些位。它們分別是:中斷禁止位包括I和F位:當I位置位時,IRQ中斷被禁止;當F位置位時,FIQ中斷被禁止。T位反映了處理器的當前狀態(tài):當位T=1時,處理器正在Thumb狀態(tài)下運行;當位T=0時,處理器正在ARM狀態(tài)下運行。模式位包括M[4:0]共計5bit,這些位決定處理器的操作模式簡述ARM7TDMI內(nèi)部有哪些寄存器及特點。答:ARM7微處理器共有37個32位寄存器,其中31個為通用寄存器,6個為狀態(tài)寄存器。37個寄存器定義如下:=1\*GB2⑴31個通用寄存器:R0~R15、R8_fiq、R9_fiq、R10_fiq、R11_fiq、R12_fiq、R13_fiq、R14_fiq、R13_svc、R14_svc、R13_abt、R14_abt、R13_und、R14_und、R13_irq、R14_irq。=2\*GB2⑵6個狀態(tài)寄存器:CPSR、SPSR_abt、SPSR_svc、SPSR_irq、SPSR_fiq、SPSR_und。特點:在ARM狀態(tài)中,R0~R7是通用寄存器,是不分組寄存器;R8~R14,SPSR根據(jù)模式進行分組的寄存器;R15是程序計數(shù)器,不進行分組;CPSR是狀態(tài)寄存器,不進行分組。什么是ARM處理器的異常?ARM處理器中有哪幾種異常?答:在ARM中,異常是一些事件,這些事件能導(dǎo)致正常的程序執(zhí)行流程被暫時地停止,而進入到該事件對應(yīng)的處理器異常模式并對該事件進行處理。ARM中定義了復(fù)位、未定義指令、SWI〔軟中斷、預(yù)取指終止、預(yù)取數(shù)終止、irq以及fiq等7種異常,與之對應(yīng)地ARM7處理器有5種異常模式。分別簡述ARM7的IRQ、FIQ異常處理過程,說明其異常向量地址。答:IRQ異常的處理流程如下:=1\*GB2⑴進入IRQ異常模式。程序運行在用戶模式下,當一個IRQ異常中斷發(fā)生時,內(nèi)核切換到"中斷模式",并自動的做如下處理。=1\*GB3①將異常處理程序的返回地址保存到異常模式下的R14<R14_irq>中。=2\*GB3②用戶模式的CPSR將被保存到中斷異常模式SPSR_irq中。=3\*GB3③修改CPSR,將I置1,禁止新的IRQ中斷產(chǎn)生,但不改變F值,不限制FIQ中斷發(fā)生,清零T標志位,進入ARM狀態(tài),修改模式位,設(shè)置為IRQ模式。=4\*GB3④將IRQ異常中斷入口向量地址0x00000018送入PC。=5\*GB3⑤在IRQ模式下,用戶模式的R13和R14將不能操作,而R13_irq和R14_irq可以操作,即R13_irq保存IRQ模式下的地址指針,R14_irq保存了"IRQ中斷返回地址+4"。=2\*GB2⑵退出IRQ異常模式。中斷服務(wù)程序執(zhí)行完畢后,使用一條指令將返回地址送入PC,即可實現(xiàn)IRQ中斷返回,在返回過程中處理器會自動將SPSR_irq中的內(nèi)容復(fù)制到CPSR,恢復(fù)中斷前的處理器狀態(tài)。FIQ異常進入與退出的流程與IRQ類似,其異常入口地址是0x0000001C。ARM7處理器對哪些異常可以進行屏蔽?如何屏蔽或允許?答:FIQ和IRQ可以被屏蔽。將CPSR的標志位I和F分別置位對應(yīng)著IRQ和FIQ中斷被禁止,清零這些位又可以將其使能。說明CPSR中T位的作用,ARM7處理器如何切換狀態(tài)?答:CPSR中T標志位為0時處理器工作在ARM狀態(tài),為1時處理器工作在Thumb狀態(tài)。由于ARM采用字對齊或者半字對齊的存儲模式,這意味著地址的最低一個比特位就不會在尋址過程中使用到。故,使用地址的最低位進行區(qū)分,以何種模式取值和執(zhí)行指令,當?shù)刂返匚粸?時,置CPSR的T位為1,反之,置位為0。大端存儲模式和小端存儲模式的含義是什么?畫出在0x2000單元中存儲0x87654321數(shù)據(jù)的大端存儲模式和小端存儲模式。答:大端存儲模式:在大端存儲格式中,對于地址為A的字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序為A+3,A+2,A+1,A;對于地址為A的半字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序為A+1,A。即數(shù)據(jù)的低字節(jié)存放在高地址中的順序進行存儲。小端存儲模式:在小端存儲格式中,對于地址為A的字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序為A,A+1,A+2,A+3;對于地址為A的半字單元,其中字節(jié)的低位字節(jié)到高位字節(jié)地址順序為A,A+1。即數(shù)據(jù)的高字節(jié)存放在高地址中的順序進行存儲。0x210x430x650x870x210x430x650x870x210x430x650x870x20030x20000x20000x2003上圖中,左側(cè)為大端存儲模式,右側(cè)為小端存儲模式。習題3ARM7TDMI支持哪幾種指令集,各有什么特點?答:支持ARM指令集和Thumb指令集,各自特點是ARM指令集的指令是32位,執(zhí)行效率高、功能全,每條指令可以根據(jù)條件執(zhí)行,但是代碼密度低。Thumb指令集指令是16位,在功能上是ARM指令集的子集,功能并沒有降低。ARM指令的尋址方式有幾種?并指出下列指令中的尋址方式。答:ARM指令的尋址方式有8種,分別為立即尋址、寄存器尋址、寄存器移位尋址、寄存器間接尋址、基址變址尋址、相對尋址、多寄存器尋址、堆棧尋址。⑴SUBR0,R1,R2 寄存器尋址⑵LDRR0,[R2]寄存器間接尋址⑶MVNR0,#0x0F2 立即尋址 ⑷LDMIAR0,{R1-R5}多寄存器尋址⑸STRR2,[R4,#0x02]! 基址變址尋址⑹LDRR1,[R2,R3]基址變址尋址⑺MOVR1,R1,ROR#2 寄存器移位尋址 ⑻LDRR1,[R3],#0x04基址變址尋址簡述ARM指令集中第2個操作數(shù)〔operand2的三種形式。答:⑴常數(shù)表達方式。該常數(shù)必須對應(yīng)8位位圖,即常數(shù)是由一個8位的常數(shù)循環(huán)右移偶數(shù)位得到。例如:MOVR2,#100; ⑵寄存器方式。Operand2是Rm寄存器方式,在寄存器方式下操作數(shù)即位寄存器中的數(shù)值。例如:SUBR0,R1,R2;⑶寄存器移位方式。Rm,shift表示將寄存器的移位結(jié)果作為操作數(shù),但Rm值保持不變。例如:MOVR0,R1,RRX;將R1帶擴展的循環(huán)右移1位,存入R0中。指出下列指令是否正確,若不正確請說明原因。⑴MOVSR1,101 不正確,立即尋址方式應(yīng)該是#101⑵MVNR1,#0x10F正確⑶STMDAR11,{R2-R8}!不正確,不能同時存儲在R2和R8中 ⑷ADDR0!,R2,#4正確⑸LDRR4,[R5]!不正確,LDR是存儲到單個寄存器的加載指令,而這個是兩個存儲器都進行存儲,應(yīng)該為 LDRR4,[R5]⑹MRSPC,CPSR不正確MRS是將CPSR傳送到通用寄存器中,但這里的通用寄存器不包括R15,即PC⑺LDMFDSR0!,{R5-R8,R2}正確⑻ADDR3,[R3],R7不正確,ADD指令不能訪問存儲器<9>LDRR11,[R15,R8]!正確<10>BXSR0正確何謂ARM指令的條件碼?默認的條件碼是什么?舉例說明ARM指令的條件碼對指令執(zhí)行的影響。答:所謂的ARM指令的"條件執(zhí)行"是指在指令碼中含有本條指令的執(zhí)行條件,當CPSR中的條件碼標志滿足時,處理器執(zhí)行本條指令,否則本條指令不執(zhí)行。默認是無條件執(zhí)行。比如執(zhí)行指令"ANDEQR2,R1,R3"時,如果CPSR中的Z=1時,執(zhí)行R2=R1&R3,否則不執(zhí)行該指令。解釋"滿堆棧"、"空堆棧"、"遞增堆棧"和"遞減堆棧"?ARM指令系統(tǒng)中是如何支持的?答:滿堆棧:堆棧指針SP指向最后壓入的堆棧有效數(shù)據(jù)項??斩褩#憾褩V羔楽P指向下一個待壓入數(shù)據(jù)的空位置。遞增堆棧:向高地址方向生長。遞減堆棧:向低地址方向生長。=1\*GB2⑴滿遞增:堆棧向上增長,SP指向內(nèi)含有效數(shù)據(jù)項的最高棧單元。指令如LDMFA、STMFA等;=2\*GB2⑵空遞增:堆棧向上增長,SP指向堆棧上的第一個空位置。指令如LDMEA、STMEA等;=3\*GB2⑶滿遞減:堆棧向下增長,SP指向內(nèi)含有效數(shù)據(jù)項的最低棧單元。指令如LDMFD、STMFD等;=4\*GB2⑷空遞減:堆棧向下增長,SP指向堆棧下的第一個空位置。指令如LDMED、STMED等。試說明MOV指令、LDR加載指令和LDR偽指令三者的區(qū)別。答:MOV指令是在寄存器間進行數(shù)據(jù)傳送,影響標志位。LDR指令是將存儲器中的數(shù)據(jù)按給定地址加載到寄存器中,不影響標志位。LDR偽指令是可以在一個立即數(shù)前面加等號,把一個地址寫入某寄存器。解釋B指令、BL指令與BX指令的功能差別,并舉例說明其使用方法。答:B指令是分支指令,BL指令是帶鏈接的分支指令,BX是帶狀態(tài)切換的分支指令。對于B指令"BWAITA"指跳轉(zhuǎn)至標號WAITA處開始執(zhí)行,B指令的跳轉(zhuǎn)范圍為±32M,對于BL指令,實現(xiàn)程序跳轉(zhuǎn),并保持PC到鏈寄存器LR中,跳轉(zhuǎn)范圍±32M,舉例"BLDELAY"完成的跳轉(zhuǎn)至標號DELAY處執(zhí)行,并把PC-4存入LR。BX指令,帶狀態(tài)切換的跳轉(zhuǎn),比如"BXR0"表示跳轉(zhuǎn)R0指定的地址開始執(zhí)行,并查看R0[0]位的值,如果是1,對CPSR的T位置位,解釋目標程序為Thumb指令,如果是0,對CPSR的T位清零,解釋目標程序為ARM指令。分析下列兩段程序片斷的功能,試用類C語言寫出其等價功能。程序片斷2:CMP R0,#10 程序片斷2:CMP R0,#10 CMPNER1,#20ADDNE R0,R0,R1〔2if<<R0!=10>&&<R1!=20>>RO=R0+R1;〔2if<<R0!=10>&&<R1!=20>>RO=R0+R1;if<R0>R1>R0++;elseR1++;使用ARM匯編指令的條件執(zhí)行功能,試用匯編語言實現(xiàn)下列兩條C代碼語句。⑴ if<x==y> a=b+c;⑴ if<x==y> a=b+c;elsea=b–c;⑵ if<x==y>&&<a==b>c=c*2+b;〔2〔2LDRR0,xLDRR1,yLDRR2,aLDRR3,bLDRR4,cCMPR0,R1CMPEQR2,R3,MULEQR4,R4,#2ADDR4,R4,R3STRc,R4LDRR0,xLDRR1,yLDRR0,xLDRR1,yLDRR2,bLDRR3,cCMPR0,R1ADDEQR4,R2,R3SUBNER4,R2,R3STRa,R4下列代碼段是實現(xiàn)開IRQ中斷和關(guān)IRQ中斷功能,試補齊空白處內(nèi)容。⑵ MRS⑵ MRSR1,CPSRORRR1,R1,#0x80MSRCPSR_c,R1⑴ MRSR0,CPSRBICR1,R0,0x80MSRCPSR_c,R1如果ARM處理器中各寄存器及存儲單元參數(shù)如下圖所示,試寫出執(zhí)行下列指令后,各寄存器及存儲單元中內(nèi)容變化情況。⑴STMIA R13!,{R0-R3} ⑵LDMDB R13, {R0-R3}<2>, R0←[R13],R1<2>, R0←[R13],R1←R1+4;R1←[R13],R1←R1+4;R2←[R13],R1←R1+4;R3←[R13],R1←R1+4;<1>, [R13]←R0[R13+4]←R1[R13+8]←R2[R13+12]←R3習題4什么是計算機語言?一般可以分為哪幾種?各自的優(yōu)缺點?答:計算機語言是計算機可以識別、理解的語言。計算機語言分為三類:機器語言,匯編語言和高級語言。機器語言〔MachineLanguage是由0和1二進制代碼表示和存儲的指令與數(shù)據(jù)。它的特點是能被機器直接識別與執(zhí)行;程序所占內(nèi)存空間較少。其缺點是難認、難記、難編、易錯。匯編語言是一種面向物理層操作的計算機語言。不同的處理器類型,具有不同的匯編語言。使用匯編語言編寫程序能夠直接利用硬件系統(tǒng)的特性〔如寄存器、標志、中斷系統(tǒng)等,可直接對位、字節(jié)、字寄存器或存儲單元、I/O端口進行處理,同時也能直接使用CPU指令系統(tǒng)提供的各種尋址方式,編制出高質(zhì)量的程序,這樣的程序不但占用內(nèi)存空間少,而且執(zhí)行速度快。缺點:由于匯編語言不直接支持復(fù)雜的抽象數(shù)據(jù)類型,在描述目標系統(tǒng)模型時,需要程序員自己組織各種抽象數(shù)據(jù)類型的存儲方式,使得匯編語言程序設(shè)計較高級語言困難的多,需要較多的軟件開發(fā)時間,也增加了程序設(shè)計過程中出錯的可能性,程序維護也麻煩。高級語言〔HighLevelLanguage是脫離具體機器〔即獨立于機器的通用語言,不依賴于特定計算機的結(jié)構(gòu)與指令系統(tǒng)。與目標系統(tǒng)的數(shù)學模型之間有著良好的對應(yīng)關(guān)系,可在各種機器上通用,具有很好的通用性和可移植性。缺點:處理器是不能直接執(zhí)行這種用高級語言編寫的源程序,需要先將它翻譯成對應(yīng)的目標程序〔即機器語言程序,才能運行。簡述ARM匯編語言上機操作過程。答:=1\*GB2⑴設(shè)計、編輯匯編語言源程序;=2\*GB2⑵匯編、連接、下載到目標系統(tǒng);=3\*GB2⑶調(diào)試運行;簡述編寫一個匯編語言源程序的基本步驟。答:⑴分析目標系統(tǒng),建立數(shù)學模型,確定算法⑵根據(jù)算法設(shè)計流程圖⑶合理分配寄存器,存儲空間和外設(shè)資源⑷根據(jù)流程圖編寫源程序⑸上機調(diào)試程序⑹形成文檔循環(huán)程序設(shè)計中,循環(huán)的基本結(jié)構(gòu)有幾種?其循環(huán)控制方法有幾種?各自的應(yīng)用特點?答:循環(huán)程序的基本結(jié)構(gòu):⑴初始化部分:建立循環(huán)初始值。⑵循環(huán)體:是循環(huán)程序的主體部分。⑶修改部分:為執(zhí)行下一次循環(huán)而修改某些參數(shù)。⑷控制部分:通過判斷循環(huán)結(jié)束條件是否成立,決定是否繼續(xù)執(zhí)行循環(huán)。⑸結(jié)束處理部分:對循環(huán)結(jié)束進行適當處理,如存儲結(jié)果和打印輸出等。循環(huán)程序設(shè)計中一個重要環(huán)節(jié)就是如何控制循環(huán)次數(shù)。循環(huán)控制方法:⑴用計數(shù)控制循環(huán)。特點:循環(huán)比較次數(shù)是已知的,因此可以用計數(shù)器控制循環(huán)。⑵用條件控制循環(huán)。有些情況無法確定循環(huán)次數(shù),但循環(huán)結(jié)束的條件是已知的,這時可通過循環(huán)測試結(jié)束條件是否滿足的方法,條件滿足結(jié)束循環(huán),否則繼續(xù)循環(huán)。匯編子程序傳遞參數(shù)有哪幾種方式?答:⑴寄存器傳遞參數(shù)方式⑵存儲區(qū)域傳遞參數(shù)方式⑶堆棧傳遞參數(shù)方式C語言和ARM匯編語言進行程序編制時常用的開發(fā)方法有哪些?答:使用C語言和ARM7匯編語言進行程序編制時常用的開發(fā)方法:混合編程和交叉編程。簡述APCS規(guī)則。答:⑴寄存器使用規(guī)則。ARM處理器寄存器組中的{R0-R11}用來保存局部變量;{R12-R15}用于系統(tǒng)專用:R12用于子程序內(nèi)部調(diào)用的片段寄存器;R13當前模式的堆棧指針;R14鏈接寄存器,保存子程序的返回地址;R15用作程序計數(shù)器。其中,由于{R4-R11}用來保存局部變量,對于遵守APCS規(guī)則的函數(shù),在進入該函數(shù)的時候,程序員必須注意保存{R4-R11}中會被函數(shù)使用的寄存器,當返回時,再返回它們的值。⑵堆棧使用規(guī)則。APCS規(guī)則中的堆棧為FD類型,也就是滿遞減堆棧,并且堆棧的操作是8字節(jié)對齊的,所以需要在匯編程序中用偽指令PRESERVE8來告訴連接器,本程序使用的堆棧是字節(jié)對齊的。⑶參數(shù)傳遞規(guī)則。ARM7處理器寄存器組中{R0-R3}用于程序間的參數(shù)傳遞,其中R0傳遞第一個參數(shù),R1傳遞第二個參數(shù),以此類推;如果參數(shù)數(shù)目超過4個,那么必須使用堆棧進行傳遞。實現(xiàn)將某個寄存器中的字數(shù)據(jù)拆分成4組字節(jié)數(shù)據(jù)的功能。答:不妨設(shè)數(shù)據(jù)在R0中,拆成的數(shù)據(jù)存放在R1~R4中,程序代碼如下。MOVR1,R0MOVR1,R0ANDR1,R1,#0xFF;MOVR2,R0,LSR0x08ANDR2,R2,#0xFFMOVR3,R0,LSR#0x08ANDR3,R3,#0xFFMOVR4,R0,LSR0x08ANDR4,R4,#0xFF程序執(zhí)行完之后,四組字節(jié)的數(shù)據(jù)存放在R1~R4的低八位,高24為清零實現(xiàn)統(tǒng)計任意字符串包含的字符個數(shù)的功能。〔約定:字符串以0為結(jié)束標志答:LDRR0,string;將一個字符串的地址放到R0中。LDRR0,string;將一個字符串的地址放到R0中。MOVR1,0;將字符串結(jié)束符放R1中MOVR3,0;將統(tǒng)計長度的放入R3中LDRR2,[R0];將字符串的第一個字符放入R2count:CMPR2,R1;將R2中內(nèi)容與結(jié)束符0進行比較BEQnext;如果相等,說明比較結(jié)束ADDR3,R3,#1;如果不等長度值加1LDRR2,[R0+#1];講下一個字節(jié)裝入R2Bcount;分支結(jié)構(gòu),返回至比較處,繼續(xù)比較。next: ;跳出這個算法的標號實現(xiàn)10個64位有符號數(shù)的相加運算。答:不妨假設(shè)這10個64位數(shù)緊密排列存儲在存儲器中,每個64位數(shù)占用8個字節(jié)的內(nèi)存空間,按小端模式存放,首地址為sp不妨假設(shè)這10個64位數(shù)緊密排列存儲在存儲器中,每個64位數(shù)占用8個字節(jié)的內(nèi)存空間,按小端模式存放,首地址為spLDRR0,SP;LDRR1,[R0];LDRR2,[R0,#-4];MOVR3,#9;count:CMPR3,#0;BEQnext;LDRR4,[R0,#-8];ADCR1,R1,R4;LDRR5,[R0,#-12];ADDR2,R2,R5;SUBR0,R0,#8;SUBR3,R3,#1CLRC;next:目標達到,10個數(shù)相加的結(jié)果高32位放在R1中,低32位放在R2中。實現(xiàn)如下功能:已知BUF1中有N1個按從小到大順序排列的互不相等的字符號數(shù),BUF2中有N2個從小到大順序排列的互不相等的字符號數(shù),將BUF1和BUF2中的數(shù)合并到BUF3中,并按從小到大順序排列且互不相等。AREACOPY,CODE,READONLYENTRYAREACOPY,CODE,READONLYENTRYCODE32startLDRBR2,=BUF1LDRBR3,=BUF2LDRBR3,=BUF2LDRBR4,=BUF3LDRR5,=N1LDRR6,=N2ADDR5,R5,R6MOVR1,#0BLLOOPstopMOVR0,#0x18LDRR1,=0x20026SWI0x123456LOOPCMPR5,R1BEQstopLDRBR0,[R2]LDRBR6,[R3]CMPR0,R6BLSCOPY1BHICOPY2COPY1LDRBR0,[R2],#1STRBR0,[R4],#1ADDR1,R1,#1CMPR0,#0BEQLOOPCOPY2LDRBR0,[R3],#1STRBR0,[R3],#1ADDR1,R1,#1CMPR0,#0BEQLOOPAREACOPYDATA,DATA,READWRITEBUF1DCB"whosspeaking",0BUF2DCB"thisis",0BUF3DCB"A",N1DCD8N2DCD6習題5什么是存儲器映射?簡述LPC2000系列處理器中各種資源是如何映射的?答:將物理存儲器分配到邏輯地址的過程稱為存儲器映射。LPC2000系列處理器中的存儲器映射空間范圍為:0x00000000-0xFFFFFFFF,起始地址依次為:FLASH—0x00000000,SRAM—0x40000000,BOOTBLOCK—0x7FFFE000,外部存儲器0x80000000,VPB〔低速外設(shè)地址—0xE0000000,AHB—0xF0000000.什么是重映射?試分析重映射的原理與實現(xiàn)機制。答:存儲器重映射:將已經(jīng)映射過的存儲器再次映射的過程稱為存儲器重映射,它使同一物理存儲單元映射多個不同的邏輯地址。原理:此時運用了異常向量表重映射技術(shù),就是將BootBlock的0x7FFFE000~0x7FFFE03F,片內(nèi)SRAM的0x40000000~0x4000003F及片外存儲器的0x80000000~0x8000003F向量表分別重映射到0x0000~0x003F地址空間。實現(xiàn)機制:使用存儲器映射控制機制來改變0x0000~0x003F區(qū)間的中斷向量映射關(guān)系,比如LPC2000提供了一個存儲映射控制寄存器MEMMAP,可以被讀寫,低兩位為00、01、10、11時分別重映射BootBlock、片內(nèi)Flash、片內(nèi)SRAM和片外存儲器。什么是中斷?敘述中斷處理過程。答:計算機在執(zhí)行正常程序過程中,當出現(xiàn)某種異常事件或某種外部請求時,處理器就暫停執(zhí)行當前的程序,而轉(zhuǎn)去執(zhí)行對異常事件或某種外部請求的處理操作。當處理完畢后,CPU再返回到被暫停執(zhí)行的程序,繼續(xù)執(zhí)行,這個過程稱為中斷。中斷處理過程一般包括五個步驟:中斷請求,中斷響應(yīng),斷點保護,中斷處理和中斷返回。ARM7的中斷類型有哪些?哪種方式最快?當有多個中斷源同時向CPU發(fā)出中斷申請時,CPU依據(jù)什么來進行響應(yīng)中斷?答:根據(jù)中斷源的不同,中斷可以分為硬件中斷和軟件中斷。有三類:非向量IRQ中斷,向量IRQ中斷,FIQ中斷。它們的優(yōu)先級依次升高。所以FIQ中斷的處理速度最快。當多個中斷源同時向CPU發(fā)出中斷申請時,CPU只能按一定的次序處理相應(yīng)和處理,這個響應(yīng)的次序稱為中斷優(yōu)先級。處理原則為:⑴不同優(yōu)先級的多個中斷源同時發(fā)出中斷請求,按優(yōu)先級由高到低依次處理。⑵低優(yōu)先級中斷正在處理,出現(xiàn)高優(yōu)先級請求,應(yīng)轉(zhuǎn)去處理高優(yōu)先級請求,服務(wù)結(jié)束后再返回原優(yōu)先級較低的中斷服務(wù)程序繼續(xù)執(zhí)行。⑶高優(yōu)先級中斷正在處理,出現(xiàn)低優(yōu)先級請求,可暫不響應(yīng)。⑷中斷處理時,出現(xiàn)同級別請求,應(yīng)在當前中斷處理結(jié)束以后再處理新的請求。LPC2000系列有那些降低功耗的方法?簡述空閑模式和掉電模式的區(qū)別。答:降低功耗的方法有空閑模式和掉電模式。除了采用這兩種模式外,還允許程序?qū)δ硞€外設(shè)進行關(guān)閉控制,可以獨立的關(guān)閉應(yīng)用中不需要的外設(shè),這樣進一步降低功耗??臻e模式和掉電模式的區(qū)別:在空閑模式下,處理器停止執(zhí)行指令,此時處理器,存儲器,內(nèi)部總線以及相關(guān)的控制器不再消耗功率,但整個系統(tǒng)的時鐘仍然有效,外設(shè)也能在空閑模式下繼續(xù)工作,并可產(chǎn)生中斷使處理器恢復(fù)運行。然而在掉電模式下,振蕩器關(guān)閉,這樣芯片內(nèi)部沒有任何時鐘。處理器狀態(tài)和寄存器,外設(shè)寄存器,內(nèi)部SRAM值以及引腳的邏輯電平在掉電模式下被保持。簡述LPC2000系列中PLL的工作原理,說明系統(tǒng)時鐘的配置過程。答:PLL接受的輸入時鐘頻率范圍為10~25MHz,PLL的輸出時鐘信號是由電流控制振蕩器〔CCO分頻得到的,CCO的振蕩頻率由"相位頻率檢測"部件控制,該部件會比較輸出時鐘信號和CCO經(jīng)過M分頻后信號的相位和頻率,并根據(jù)誤差輸出不同的電流值以控制CCO的振蕩頻率,CCO的輸出頻率經(jīng)過M分頻后再送給"相位頻率檢測"部件檢測以控制CCO的振蕩頻率,經(jīng)過反復(fù)拉鋸調(diào)節(jié)過程,能夠使得"相位頻率檢測"部件的兩路輸入信號頻率和相位逐步接近,漸漸穩(wěn)定到預(yù)期的頻率值上。這種反復(fù)拉鋸調(diào)節(jié)過程稱為PLL鎖定過程,輸出頻率穩(wěn)定后即"鎖定"成功。其配置過程:1.選擇處理器的操作頻率,選擇振蕩器的頻率,計算M值和P值;2.配置PLLCON使能但不連接的PLL的模式,根據(jù)P和M的值配置PLLCFG寄存器,發(fā)送PLL饋送序列,然后等待PLL鎖定或中斷;3.連接PLL,發(fā)送PLL饋送序列。簡述LPC2000系列芯片內(nèi)部向量中斷控制器〔VIC的功能特點,如果定時器0作為一個向量中斷源,需要對VIC進行哪些配置?簡述向量處理過程。答:向量中斷控制器〔VIC負責管理芯片的中斷源,最多可管理32個中斷輸入請求,16個向量IRQ中斷和1個非向量中斷,16個優(yōu)先級可動態(tài)分配給中斷請求,可產(chǎn)生軟中斷。VIC為每一個中斷分配中斷通道號,通道號就是每一種中斷源的唯一標識,中斷到來時,根據(jù)VIC通道號就能確定中斷源。1.配置中斷選擇寄存器VICIntSelect,中斷通道4分配為IRQ中斷;2.配置寄存器VICVectAddr0,確定定時器0中斷的服務(wù)程序地址;3.配置寄存器VICVectCntl0,向量IRQ通道0控制寄存器位分配位數(shù)值;4.配置中斷時能寄存器,使能中斷。FIQ、IRQ有什么不同?向量IRQ和非向量IRQ有什么不同?答:快速中斷請求FIQ要求具有最高優(yōu)先級。向量IRQ具有中等優(yōu)先級,該級別可分配32個請求中的16個,32個請求中的任意一個都可分配到16個向量IRQslot中的任意一個,其中slot〔具有最高優(yōu)先級,而slot15則為最低優(yōu)先級。非向量IRQ的優(yōu)先級最低。習題6簡述LPC2000系列芯片的引腳設(shè)置寄存器PINSEL0、PINSEL1、PINSEL2的具體功能。答:這三個寄存器的主要功能是實現(xiàn)對引腳的功能選擇。具體來說PINSEL0和PINSEL1可以配置P0口<P0.0~P0.31>的功能,PINSEL2寄存器用來配置P1.0~P1.16引腳的功能。PINSELx的連個比特位可配置一個引腳的功能,比如以PINSEL[1:0]兩個比特位的00、01、10可以配置P0.0為GPIO、TxD<UART0>、PWM1,11保留。簡要描述LPC2000系列芯片內(nèi)部GPIO的功能特點?舉例說明GPIO輸入和輸出的應(yīng)用。答:GPIO<GeneralPurposeInput/Outputports,通用輸入輸出接口>是用于二進制數(shù)據(jù)的輸入和輸出。芯片的某個引腳通過MUX1功能選擇,對應(yīng)PINSELx寄存器選擇器功能。如果選擇該引腳為GPIO那,再經(jīng)MUX2中的IOxDIR對應(yīng)位選擇控制管腳的輸入和輸出方向,GPIO管腳為輸入時通過IOxPIN寄存器讀入,GPIO為輸出時通過IOxSET和IOxCLR寄存器控制輸出,實現(xiàn)對對應(yīng)GPIO管腳的控制。當引腳設(shè)置為GPIO輸出模式時,使用IOxSET寄存器設(shè)置其從引腳輸出高電平,向某位寫入1是對應(yīng)引腳輸出高電平,寫入0無效;使用IOxCLR寄存器設(shè)置從引腳輸出低電平,向某位寫入0是對應(yīng)引腳輸出低電平。GPIO輸入用于向ARM核中讀入數(shù)據(jù),GPIO輸出用于輸出數(shù)據(jù)。LPC2000系列芯片外部中斷有幾種觸發(fā)方式?[例6.7]中外部中斷修改為EINT1,P0.5輸出控制LED,試編程實現(xiàn)。答:外部中斷有兩類四種觸發(fā)方式:邊沿觸發(fā)〔上升沿觸發(fā)或者下降沿觸發(fā),電平觸發(fā)〔高電平觸發(fā)或低電平觸發(fā)。編程實現(xiàn)的代碼如下:#include"config.h"#include"config.h"#difineLED1<<5//設(shè)置P0.5控制LED,高電平LED點亮void__irqURQ_Eint1<void>{uint32i;i=IO0SET;//讀取LED控制值if<<i&LED>==0>IO0SET=LED;//點亮LEDelseIO0CLR=LED;//熄滅LEDWHILE<<EXTINT&0x02>!=0>//等待EINT1恢復(fù)為高電平{EXTINT=0x02;//清除EINT1中斷標志}VICVectAddr=0;//向量中斷結(jié)束}intmain<void>{PINSEL0=0x000000C0;//設(shè)置P0.3為EINT0 IO0DIR=LED;//設(shè)置P0.5引腳為輸出EXTMODE=0x00;//設(shè)置EINT1為電平觸發(fā)EXTPOLAR=0x00;//極性寄存器-低電平有效IO0CLR=LED;//設(shè)置LED初態(tài)為熄滅VICIntSelect=0x00000000;//設(shè)置中斷類型為IRQ中斷VICDefVECAddr=<int>IRQ_Eint1;//裝載中斷服務(wù)程序地址EXTINT=0x02;//清除EINT1中斷標志VICIntEnable=1<<15//使能EINT1while<1>;//等待中斷return0;}簡述LPC2000系列芯片內(nèi)部定時器的內(nèi)部由哪些模塊構(gòu)成?各模塊完成功能是什么?答:定時器內(nèi)部由三部分組成:分頻與計數(shù)模塊、匹配控制模塊和捕獲控制模塊。分頻計數(shù)模塊:屬于基本模塊,提供每個定時器捕獲匹配的基本時鐘,屬于定時器的公共部分,可對外部接入時鐘進行預(yù)分頻。匹配控制模塊:比較器隨時進行MR0~MR3與TC的匹配,當TC計數(shù)值與某一MRx的預(yù)置值相等時即執(zhí)行MCR編程的功能。捕獲控制模塊:外部觸發(fā)捕獲時,將當前TC值裝在如CRx中。采用匹配中斷輸出產(chǎn)生周期為1秒的方波。答:#include"config.h"#include"config.h"intmain<void>{PINSEL0=PINSEL0&<~<3<<10>>|<2<<10>;T0CTCR=0x00;T0TC=0;T0PR=199;T0MCR=0x02<<3;T0MR1=Fpclk/200;T0EMR|=0xC2;T0TCR=0x01;while<1>;return0;}通過一個定時器中斷控制多個輸出接口控制LED燈分別以0.1S、0.5S和1S頻率同時閃爍,假設(shè)這三種燈分別連接P0.1、P0.2和P0.3,試編程實現(xiàn)上述功能。答:程序如下:#include"config.h"#include"config.h"#defineled11<<1//p0.1控制led1,低電平點亮#defineled21<<2//p0.2控制led2,低電平點亮#defineled31<<3//p0.3控制led3,低電平點亮void__irqIRQ_Time1<void>{if<<IO0SET&led1>==0>IO0SET=IO0SET|led1;//關(guān)閉led1elseIO0CLR=IO0CLR&led1;//點亮led1T0IR=T0IR|0x01;//清除MR0中斷標志位VICVectAddr=VICVectAddr&0x00//通知VIC中斷處理結(jié)束}void__irqIRQ_Time2<void>void__irqIRQ_Time2<void>{if<<IO0SET&led2>==0>IO0SET=IO0SET|led2;//關(guān)閉led2elseIO0CLR=IO0CLR&led2;//點亮led2T0IR=T0IR|0x02;//清除MR1中斷標志位VICVectAddr=VICVectAddr&0x00//通知VIC中斷處理結(jié)束}void__irqIRQ_Time3<void>{if<<IO0SET&led3>==0>IO0SET=IO0SET|led3;//關(guān)閉led.3elseIO0CLR=IO0CLR&led3;//點亮led3T0IR=T0IR|0x04;//清除MR2中斷標志位VICVectAddr=VICVectAddr&0x00//通知VIC中斷處理結(jié)束}intmain<void>{PINSEL0=0x00000000;//設(shè)置引腳為GPIOIO0DIR=IO0DIR&led1;//設(shè)置led1控制口輸出IO0DIR=IO0DIR&led2;//設(shè)置led2控制口輸出IO0DIR=IO0DIR&led3;//設(shè)置led3控制口輸出IRQEnable<>;//IRQ中斷使能T0TC=0;//定時器設(shè)置為0T0PR=0;//時鐘不分頻T0MCR=0x01B3;//設(shè)置T0MR1,T0MR1,T0MR2匹配后復(fù)位T0TC,并產(chǎn)生中斷T0MR0=Fpclk/10;//0.1s定時T0MR1=Fpclk/2;//0.5s定時T0MR2=Fpclk;//1s定時T0TCR=0x01;//啟動定時器VICIntSelect=0x00;//設(shè)置所有中斷通道為IRQ中斷VICVectCntl0=0x20|0x04;//設(shè)置定時器0中斷通道分配最高優(yōu)先級VICVectAddr0=<uint32>IRQ_Time1;//進入MR0中斷VICIntEnable=1<<0x04;//使能定時器0中斷VICVectAddr0=<uint32>IRQ_Time2;//進入MR1中斷VICIntEnable=1<<0x04;//使能定時器0中斷VICVectAddr0=<uint32>IRQ_Time3;//進入MR2中斷VICIntEnable=1<<0x04;//使能定時器0中斷while<1>;//等待中斷return0;}簡述串行通信與并行通信概念。答:串行通信是指要傳輸?shù)臄?shù)據(jù)的各個位,逐比特一位一位的傳輸方式。并
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF(陜) 099-2022 粘結(jié)強度檢測儀校準規(guī)范
- 財務(wù)風險監(jiān)測與評估的工作重點計劃
- 加強人才培養(yǎng)機制的工作總結(jié)計劃
- 建建筑工程管理與實務(wù)課件新大綱
- 傳熱液行業(yè)相關(guān)投資計劃提議范本
- 內(nèi)鏡專用高頻電刀相關(guān)行業(yè)投資方案范本
- 課內(nèi)外結(jié)合的綜合活動計劃
- 醫(yī)院信息安全工作總結(jié)與防護措施計劃
- 如何組織班級戶外拓展活動計劃
- 車輛抵押借款合同三篇
- 面對基層醫(yī)院兒科的兒童肺功能理論培訓題庫及答案華醫(yī)網(wǎng)繼續(xù)教育兒科內(nèi)科學
- 2021年廣東省廣州市增城區(qū)中考物理一模試題( 含答案解析 )
- 美術(shù)鑒賞(北京大學)超星爾雅學習通網(wǎng)課章節(jié)測試答案
- 環(huán)境法課件完整版
- 華東交通大學20232023(1)數(shù)據(jù)庫試卷
- 創(chuàng)業(yè)計劃書word文檔模板(五篇)
- 中國古代散文發(fā)展概述PPT
- 地籍調(diào)查試題
- 報關(guān)報檢論文
- GB/T 37779-2019數(shù)據(jù)中心能源管理體系實施指南
- GB/T 32960.1-2016電動汽車遠程服務(wù)與管理系統(tǒng)技術(shù)規(guī)范第1部分:總則
評論
0/150
提交評論