嵌入式系統(tǒng)習(xí)題匯總_第1頁
嵌入式系統(tǒng)習(xí)題匯總_第2頁
嵌入式系統(tǒng)習(xí)題匯總_第3頁
嵌入式系統(tǒng)習(xí)題匯總_第4頁
嵌入式系統(tǒng)習(xí)題匯總_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、嵌入式系統(tǒng)復(fù)習(xí)題集 、基礎(chǔ)知識1、什么是代碼的臨界區(qū)?答:代碼的監(jiān)界區(qū)是指處理時(shí)不可分割的代碼,運(yùn)行這些代碼不允許被打斷。一旦這部分代 碼開始執(zhí)行,則不允許任何中斷打入。中斷不調(diào)用任何臨界區(qū)的代碼或不訪問任何臨界區(qū)使 用的共享資源時(shí),這個(gè)中斷是可能可以執(zhí)行。為確保臨界區(qū)代碼的執(zhí)行,在進(jìn)入臨界區(qū)之前 要關(guān)中斷,而臨界區(qū)代碼執(zhí)行完成以后要立即開中斷。2、什么是嵌入式系統(tǒng)?答:嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對 功能、可靠性、成本、體積及功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng),具有完成復(fù)雜功能的硬件和 軟件且緊密耦合在一起的計(jì)算機(jī)系統(tǒng)。3、什么是嵌入式操作系統(tǒng)?為何要

2、使用嵌入式操作系統(tǒng)?答:運(yùn)用在嵌入式系統(tǒng)上的實(shí)時(shí)操作系統(tǒng),具有事件驅(qū)動和任務(wù)(進(jìn)程)調(diào)度功能,且在有 限時(shí)隙內(nèi)能完成事件的響應(yīng)和任務(wù)(進(jìn)程)的切換,能可靠、實(shí)時(shí)、靈活地管理嵌入式系統(tǒng) 上的各種資源和任務(wù)。使用嵌入式操作系統(tǒng),能方便實(shí)時(shí)應(yīng)用軟件的開發(fā)和有機(jī)地整合,能 有效地管理和協(xié)調(diào)各項(xiàng)工作,因此是開發(fā)和運(yùn)行非常重要的環(huán)境。4、ARM狀態(tài)與Thumb狀態(tài)的互換以什么條件來判斷?似舉出狀態(tài)從ARM到Thumb或從Thumb至ij ARM切換的例子。答:其互換條件是執(zhí)行 BXregisters指令時(shí),判斷registers的最低一位bo是否為0或?yàn)? 來確定的,當(dāng)bo為0時(shí),則執(zhí)行的程序是 ARM狀

3、態(tài)的32位指令程序,當(dāng)bo為1時(shí),則執(zhí)行 的程序是Thumb狀態(tài)的16位指令程序。如下例:;從ARM狀態(tài)轉(zhuǎn)變?yōu)?Thumb狀態(tài)LDR R0, Lable+1BX R0;從Thumb狀態(tài)轉(zhuǎn)變?yōu)锳RM狀態(tài)LDR R0, LableBX R0ARM體系結(jié)構(gòu)支持多少種處理器模式,分別是什么?答:ARM體系結(jié)本支持7種處理器模式,分別是用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。6、子程序利用R14 (LR),獲得返回到主程序的下條指令,通常有直接輸入法和堆棧方法, 試填寫下面兩種方法的代碼: TOC o 1-5 h z MOV PC,LRSTMFD SR , regist

4、ers, LRLDMFD SP!, registers,PC如果是異常處理后的返回,如IRQ中斷返回又如何改寫代碼?7、在修復(fù)產(chǎn)生數(shù)據(jù)中止的原因后,不管處于哪種處理器操作狀態(tài),處理程序都必須執(zhí)行返 回指令:SUBS PC R14_abt,#8 ;而預(yù)取中止時(shí)為:SUBS PC R14_abt,#4試解釋減8原因?而在預(yù)取中止中為什么減4 ?答:由于ARM為三級流水,執(zhí)行段相對取指令段差為 8,產(chǎn)生數(shù)據(jù)中止是在執(zhí)行段結(jié)束點(diǎn)進(jìn)入, 此日PC值為數(shù)據(jù)中止指令地址 +8,即保存當(dāng)前 PC到R14_abt為數(shù)據(jù)中止指令地址+8,因此 在修復(fù)產(chǎn)生數(shù)據(jù)中止的原因后,返回地址應(yīng)為數(shù)據(jù)中止指令地址本身,處理程序

5、都必須執(zhí)行返回指令:SUBS PC R14_abt,#8才能實(shí)現(xiàn)其目的。而在預(yù)取中止中時(shí),出現(xiàn)中止異常是在譯碼段進(jìn)入執(zhí)行段的開始點(diǎn),此時(shí)保存到 R14_abt 值為預(yù)取中止指令地址 +4 ,因此要恢復(fù)到中止指令地址必為當(dāng)前保存的R14_abt值減4,即執(zhí)行SUBS PC R14_abt,#樨作就可。什么是小端存儲?什么是大端存儲?答: 小端存儲就是其存儲格式為保存的字最低地址的字節(jié)看作是最低位字節(jié), 最高地址字節(jié)被看作是最高位字節(jié)。因此,存儲器系統(tǒng)字節(jié)0 連接到數(shù)據(jù)線7-0。大端存儲就是其存儲格式為將最高位字節(jié)保存在最低地址字節(jié),最低位字節(jié)保存在最高地址字節(jié)。因此存儲器系統(tǒng)字節(jié)0 連接到數(shù)據(jù)線

6、31-24 。ARM7TDMI 中 T、 D、 M 、 I 的含義是什么?答:T表示具有高密度16位白Thumb指令機(jī)擴(kuò)展功能;D表示具有支持片上調(diào)試功能;M表示具有64位乘法指令;I表示增加了 EmbededICE觀察點(diǎn)硬件。ARM7TDMI 采用幾級流水線?使用何種存儲器編址方式?答: ARM7TDMI 采用三級流水段,分別為取指段、譯碼段和執(zhí)行段。使用字節(jié)編址方式。ARM處理器模式和 ARM處理器狀態(tài)有何區(qū)別?答: ARM 處理器模式是指用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。每種模式都表明一種程序使用內(nèi)部寄存器和一些片內(nèi)外的硬件設(shè)備權(quán)利。而 ARM 處

7、理器狀態(tài)是指Thumb 狀態(tài)和 ARM 狀態(tài), 即程序指令的執(zhí)行譯碼按 16 位 Thumb 指令集還是按32 位 ARM 指令集譯碼執(zhí)行。分別列舉 ARM 的處理器模式和狀態(tài)。答: ARM 處理器模式分別是用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。 ARM 處理器狀態(tài)是指16 位 Thumb 指令集運(yùn)行的 Thumb 狀態(tài)和 32 位 ARM指令集運(yùn)行的 ARM 狀態(tài)。PC 和 LR 分別使用哪個(gè)寄存器?答:PC使用R15; LR使用R14。14、R13寄存器的通用功能是什么?答: R13 寄存器在 ARM 狀態(tài)時(shí), 可用作通用寄存器功能, 但通常為堆棧指針S

8、P, 但在 Thumb狀態(tài)時(shí),其壓棧 PUSH和彈棧POP指令都要用到 R13 (SP)O15、CPSRt存器中哪些位用來定義處理器狀態(tài)?答:在CPSRt存器中b5位T定義處理器狀態(tài),T=0為ARM狀態(tài),T=1為Thumb狀態(tài)。ARM 和 Thumb 指令的邊界對齊有何不同?答: ARM 指令長度為 32 位,其邊界對齊存取地址位都是按b1:0=00 方式進(jìn)行,而Thumb指令長度為 16 位,其邊界對齊存取地址位都是按b0=0 方式進(jìn)行。描述一下如何禁止IRQ和FIQ的中斷?答:對CPSR中白b7 (I位)和b6 (F位)標(biāo)志位置位時(shí),可分別來禁止 IRQ和FIQ中斷。定義R0=0 x123

9、45678,假設(shè)使用存儲指令將R0的值存放在0 x4000單元中。如果存儲器格式為大端格式,請寫出在執(zhí)行加載指令將存儲器0 x4000 單元的內(nèi)容取出存放到 R2寄存器操作后得R2 的值;如果存儲器格式改為小端格式,所得的 R2 值又為多少?低地址 0 x4000 單元的字節(jié)內(nèi)容分別是多少?答:按大端格式和小端格式存儲,從存儲器中讀出的值是不變的,R2=0 x12345678o按大端格式從 0 x4000 單元讀出的值為 0 x12, 按小端格式從0 x4000 單元讀出的值為0 x78 。請描述進(jìn)入內(nèi)核時(shí)異常操作步驟?答:在LR 中保存下一條指令的地址;2)將CPS或制到適當(dāng)?shù)?SPSR3)

10、根據(jù)異常將CPSR莫式強(qiáng)制設(shè)為某一值;4)強(qiáng)制PC從相關(guān)的異常處取指。異常結(jié)束時(shí),異常處理程序必須將LR 中的值減去偏移量后移入PC。6)將SPSR勺值復(fù)制回CPSR清零在入口置位的中斷禁止標(biāo)志。請描述一下ARM7TDMI 產(chǎn)生異常的條件分別是什么?各種異常會使處理器進(jìn)入哪種模式?進(jìn)入異常時(shí)內(nèi)核有何操作?各種異常的返回指令又是什么?模式 快中斷模式 中斷模式 中止模式中止模式 未定義指令模式管理模式返回指令SUBS PC,R14_fiq,#4SUBS PC, R14_irq,#4SUBS PC, R14_abt,#4SUBS PC, R14_abt,#8MOVS PC, R14_undMOVS

11、 PC, R14_svc答: ARM7TDMI 產(chǎn)生異常:異常條件快速中斷請求中斷請求預(yù)取中止請求數(shù)據(jù)中止請求未定義指令中斷請求軟件中斷請求進(jìn)入內(nèi)核時(shí)異常操作是:1 ) 將 LR 中保存下一條指令的地址;2)將CPS限制到適當(dāng)?shù)?SPSR3)根據(jù)異常將CPSR莫式強(qiáng)制設(shè)為某一值;4)強(qiáng)制PC從相關(guān)的異常處取指。5 ) 異常結(jié)束時(shí),異常處理程序必須將LR 中的值減去偏移量后移入PC。6)將SPSR勺值復(fù)制回CPSR 7 ) 清零在入口置位的中斷禁止標(biāo)志。簡單描述一下ARM7 的三級流水線,并說明其對程序設(shè)計(jì)的影響。答: ARM7 的三級流水分為取指段、分析段和執(zhí)行段。對程序設(shè)計(jì)的影響:提高指令執(zhí)

12、行的速度,并使處理和存儲系統(tǒng)連續(xù)操作。ARMThumbPCPC取指PC-4PC-2譯碼PC-8PC-4執(zhí)行由此看出,它對子程序調(diào)用返回、異?;謴?fù)返回, LR 值需減一個(gè)常數(shù)值作為返回地址。ARM7TDMI(-S)有幾種尋址方式?LDR R1, R0, #0 x08屬于哪種尋址方式?答:有 9 種,分別是:寄存器尋址、立即尋址、寄存器移位尋址、寄存器間接尋址、基址尋址、多寄存器尋址、堆棧尋址、塊拷貝尋址、相對尋址。其中:LDR R1, R0, #0 x08屬于基址尋址。ARM 指令的條件碼有多少個(gè)?默認(rèn)條件碼是什么?答: ARM 指令的條件碼有16 個(gè),默認(rèn)條件碼是: AL 編碼為 1110 即

13、無條件執(zhí)行。ARM 指令中第二個(gè)操作數(shù)有哪幾種形式?列舉5 個(gè) 8 位圖立即數(shù)。答: ARM 指令中第2 個(gè)操作數(shù)有3 種形式:#immed_8r 常數(shù)表達(dá)式;Rm寄存器方式;Rm,shift 寄存器移位方式。例如:0 x3FC、 0、 0 xF0000000、 200、 0 xF0000001。將ARM指令中,使用第2個(gè)操作數(shù)時(shí),第2操作數(shù)的形式可為常數(shù)表達(dá)式#immed_8r,這種常數(shù)的合理表達(dá)方式是什么?答:這種常數(shù)須對應(yīng) 8 位位圖數(shù)據(jù)的循環(huán)移位偶數(shù)位得到的任何 32 位數(shù)據(jù)。將ARM指令中,使用第2個(gè)操作數(shù)時(shí),第2操作數(shù)的形式可為常數(shù)表達(dá)式#immed_8r,請說明下面常數(shù)哪些合理,

14、哪些非法?0 x3FC,0 x1F,0 x1FE,0,0 xF0000000,511,0 xFFFF,0 x1010,0 xF0000010,200,0 xF000000,1 0 x12800000 ,0 x4000003B, 0 x0016C000答: 合法常量:0 x3FC/0/0 xF0000000/200/0 xF0000001/0 x1F, 0 x12800000 , 0 x4000003B , 0 x0016C000;非法常量:0 x1FE/511/0 xFFFF0/x1010/0 xF0000010。將比較兩個(gè)值大小,并進(jìn)行相應(yīng)加1 處理, C 代碼為:if(ab) a+;els

15、e b+;寫出對應(yīng)的ARM指令程序(其中設(shè) R0為a, R1為b) ?答: CMPR0, R1ADDHIR0, R0, #1;若 R0R1 則 R0=R0+1ADDLS R1, R1, #1;若 R0?R1,貝U R1=R1 + 1將 C 代碼:if(a!=10)&(b!=20) a=a+b 轉(zhuǎn)化為 ARM 指令程序?答: CMP R0, #10;比較 R0是否為10CMPNE R1, #20;若R0不為10,則比較 R1是否為20CMPNE R0, R0, R1 ;若 R0 不為 10 且 R1 不為 20,指令執(zhí)行, R0=R0+R1LDR/STR旨令的偏移形式有哪 4種? LDRB和LD

16、RSBf何區(qū)另答: LDR/STR 指令的偏移形式有:1)零偏移;2)前索引偏移;3)程序相對偏移;4)后索引偏移。LDRB僅為無符號字節(jié)數(shù)據(jù)裝載,其裝載后的高24位為0,而LDRSB為有符號字節(jié)數(shù)據(jù)裝載,高24 位為符號位的擴(kuò)展。請指出MOV指令與LDR加載指令的區(qū)別及用途。答: MOV 指令是數(shù)據(jù)處理過程中的操作,可以傳遞立即數(shù)和寄存器到另一個(gè)寄存器的操作,而LDR加載指令用于將存儲器單元數(shù)據(jù)裝載到寄存器的操作。CMP 指令的操作是什么?寫一個(gè)程序, 判斷 R1 的值是否大于0 x30, 是則將 R1 減去0 x30。答:CMP指令操作是比較操作;判斷R1的值是否大于0 x30,是則將R1

17、減去0 x30程序如下:CMP R1, #0 x30SUBGT R1,R1,#0 x30 OrCMP R1, #0 x30SUBHI R1,R1,#0 x30調(diào)用子程序是用 B還是用BL指令?請寫出返回子程序的指令?答:調(diào)用子程序是用BL 指令。返回子程序的指令:BL lableMOV PC,LRLDR偽指令用途?其指令格式與LDR裝載指令的差別?答:LDR偽指令用于加載32位的立即數(shù)或一個(gè)地址值到指定寄存器,映射真正指令類型由編譯程序決定;LDR偽指令指令格式為 LDR Rn,=expr LDR加載指令為LDR Rn,地址值。ARM 狀態(tài)與 Thumb 狀態(tài)的切換指令是什么?請舉例說明。答:

18、ARM狀態(tài)與Thumb狀態(tài)的切換指令是 BX Rm=例如:ARM_CODE ADR R0,THUMB_CODE+1BX R0CODE 16THUMB_CODE MOV R0,#10 MOV R1,#20 ADD R0,R1 B THUM_CODE ENDThumb狀態(tài)與ARM狀態(tài)的寄存器有區(qū)別嗎?Thumb指令對哪些寄存器訪問受到一定限制?答:Thumb狀態(tài)與ARM狀態(tài)的寄存器本身并無區(qū)別,都是32位寄存器。但Thumb指令僅對R8-R15受到一定限。Thumb指令集的堆棧入棧、出棧指令是哪兩條?答:壓棧指令:PUSH reglist,LR;彈棧指令:POP reglist,PCThumb指令

19、集的BL指令轉(zhuǎn)移范圍為何能達(dá)到 ?4MB?其指令編碼是怎樣的?答:Thumb指令集的BL采用2條這樣的指令組合成 22位半字偏移(符號擴(kuò)展為32位),使指 令轉(zhuǎn)移范圍為?4MB。其指令編碼為:1111+H+offset11共16位。其中H為1位,offset11為 了 11 位。在中斷向量中轉(zhuǎn)移指令為什么沒有用B指令?而是用什么指令實(shí)現(xiàn)跳轉(zhuǎn)的?答:在中斷向量中車t移指令沒有用B指令是由于B指令轉(zhuǎn)移范圍僅在?32MB內(nèi),因此滿足不了中斷向量的全地址范圍內(nèi)的轉(zhuǎn)移。實(shí)際中斷向量中轉(zhuǎn)移指令是用LDR PC ,addr,和文字池(DCD偽指令)來實(shí)現(xiàn)的,它可以實(shí)現(xiàn)4GB范圍內(nèi)跳轉(zhuǎn)。LPC2114可使用的

20、外部晶振頻率范圍是多少(使用/不使用PLL功能時(shí))?描述一下LPC2210的P0.14、P1.20、P1.26、BOOT1和BOOT0弓I腳在芯片復(fù)位時(shí)分另有什么作用?并簡單說明LPC2000系列ARM7微控制器的復(fù)位處理流程。答:使用PLL功能時(shí),外部晶振頻率范圍為10-25MHZ;不使用PLL功能時(shí)為1-30MHZ。在復(fù)位時(shí),LPC2210的P0.14決定外部復(fù)位后是否進(jìn)入ISP狀態(tài),如為低電平則進(jìn)入 ISP狀態(tài)。P1.20決定復(fù)位后是否使用 P1.16-P1.25作為跟蹤端口進(jìn)行跟蹤同步。P1.26決定復(fù)位后是否使用 P1.31-P1.26作為調(diào)試端口。BOOT1和BOOT0引腳在芯片復(fù)

21、位時(shí)決定復(fù)位后存儲器的來源以及存儲器的寬度。LPC2000系歹U ARM7微控制器的復(fù)位處理流程: 流程略。LPC2000系列ARM7微控制器對向量表有何要求(向量表中的保留字)?答:LPC2000系歹U ARM7微控制器要求:在向量表中所有32位向量按有符合數(shù)據(jù)累加之和為0,這時(shí)向量表才有效,且芯片復(fù)位后,能脫機(jī)獨(dú)立運(yùn)行。因此向量表中的保留字是配置數(shù)據(jù) 累加和為0而留著的。如何啟動LPC2000系列ARM7微控制器的ISP功能?相關(guān)電路應(yīng)該如何設(shè)計(jì)?答:微控制器在復(fù)位后可能有多種初始狀態(tài),決定于引腳狀態(tài)和只讀存儲器的數(shù)據(jù)。當(dāng)有外 部復(fù)位信號?Reset , P0.14低電平時(shí),進(jìn)入ISP狀態(tài)

22、,當(dāng)P0.14為高電平時(shí),同時(shí) BOOT0和 BOOT1為高電平時(shí),進(jìn)入 ISP狀態(tài)。LPC2000系歹U ARM7微控制器片內(nèi)Flash是多少位寬度的接口?它是通過哪個(gè)功能模塊來提高 Flash 的訪問速度?答:LPC2000系列ARM7微控制器片內(nèi)Flash是128位寬度的接口,是通過數(shù)據(jù)緩沖模塊、預(yù) 取緩沖模塊、分支跟蹤緩存模塊、兩Flash存儲模塊來提高 Flash的訪問速度。LPC2210的BANK0存儲塊使用 32位總線,訪問BANK0時(shí),地址線 A1、A0是否有效?EMC模塊中的BLSO-BLS3具有什么功能?答:如果存儲器組配置成32 位寬度,地址線 A0 和 A1 無用,這是

23、由于地址位的增減與存儲器數(shù)據(jù)增減同步,此日A0和A1可作為GPIO使用(由PINSEL皴置)。EMC模塊中的BLSO-BLS3具有字節(jié)定位的選擇信號功能,當(dāng)BLSO 為低時(shí),存取定位到低8 位字節(jié)上,當(dāng) BLS1 為低時(shí),存取定位次到低8位字節(jié)上,當(dāng)BLS2為低時(shí),存取定位到次高字節(jié),當(dāng)BLS3為低時(shí),存取定位到高位字節(jié)上。如果存儲器組配置寄存器中 RBLE 位置 1 ,表示按字節(jié)區(qū)分存儲器組,現(xiàn)有程序:LDR R0, =0X80000001MOV R1,0X55STR R1,R0請問執(zhí)行STR指令后,存儲器地址線上的地址應(yīng)為0X80000000,數(shù)據(jù)線的前16位數(shù)據(jù)中,低8位為 無效 ,高8

24、位為 0X55 。EMC模塊中的引腳線 BLS0和BLS1電平分另 為 高電平 和 低電平 。 (填高低電平)在startup.s啟動代碼中,設(shè)置異常向量表時(shí),IRQ入口處為什么放置LDR PC, PC, # -0 x0f0指令而非 LDR PC IRQ_Addr。答:這是由于LDR PC, IRQ_Addr 指令不能提供靈活的轉(zhuǎn)移地址,在處理時(shí)就要耗費(fèi)大量的時(shí)間解決IRQ轉(zhuǎn)移分類問題。 而LDR PC, PC, # -0f0指令轉(zhuǎn)移地址來源于完部的VICVectAddr寄存器保存的地址值。 不同的中斷異常,其VICVectAddr 的值不同, 可通過初始配置, 節(jié)省了軟件的轉(zhuǎn)移選擇開銷。在s

25、tartup.s啟動代碼中,設(shè)置異常向量表時(shí),IRQ入口處放置LDR PC PC, # -0 x0f0指令中PC-0 x0FF0地址單元是指向VICVectAddr寄存器的地址。BOOT0和BOOT1與BCFG029: 28的關(guān)系和區(qū)別是什么?答:Bank0用于引導(dǎo)程序運(yùn)行, BCFG029: 28的復(fù)位值與BOOT0和BOOT1設(shè)定有關(guān)。BOOT0和 BOOT1 與 BCFG029: 28的關(guān)系:Bank復(fù)位時(shí)BOOT1:0的狀態(tài)BCFG29: 28存儲器寬度0LL008位0LH0116位0HL1032 位0HH1032 位1xx1032 位2xx0116位3xx008位而對 Bank1、B

26、ank2 和 Bank3 而言,BCFG29:28決定存儲器寬度,與 BOOT1:0設(shè)定無關(guān)。對Bank0而言,BCFG29: 28的復(fù)位值由BOOT1:0設(shè)定決定,且存儲器寬度也由 BOOT1:0 決定。請問引腳連接模塊選擇寄存器有哪些?請舉一個(gè)例子說明選擇寄存器的功能?答:引腳連接模塊選擇寄存器有PINSEL0 PINSEL1和PINSEL2如設(shè)定:PINSEL0 &= 0 x00000001則選擇 P0.0 腳,功能為 TxD(UART0)啟動代碼中總線引腳設(shè)置為:ResetInit LDR R0,=PINSEL2IF : DEF:EN_CRPLDR R1,=0 x0f814910ELS

27、ELDR R1,=0 x0f814914ENDIFSTR R1,R0分析每條代碼的含義,并說明PINSEL2配置0 x0f814910和配置0 x0f814914的區(qū)別?答:程序清單中,當(dāng)預(yù)定義有EN_CR際時(shí),將會編譯程序清單LDR R1,=0 x0f814910語句,并將PINSEL2寄存器設(shè)置為 0 x0f814910 ,否則編譯 LDR R1,=0 x0f814914語句,并將PINSEL2 寄存器設(shè)置為0 x0f814914。區(qū)別:前一種執(zhí)行禁止使用JTAG口調(diào)試,起到加密作用。后一種使用JTAG 口調(diào)試。LPC2000 系列 ARM7 微控制器具有引腳功能復(fù)用特性,那么如何設(shè)置某個(gè)

28、引腳為指定功能?答:例如通過設(shè)置 PINSEL01:0=00時(shí),引腳為 GPIO功能;設(shè)置為01時(shí),引腳為 UART0的 TxD功能。設(shè)置為10時(shí),引腳為PWM1功能腳。設(shè)置引腳為 GPIO 功能時(shí),如何控制某個(gè)引腳單獨(dú)輸入 /輸出?當(dāng)需要知道某個(gè)引腳當(dāng)前的輸出狀態(tài)時(shí),是讀取IOPIN寄存器還是讀取IOSET寄存器?答:設(shè)置引腳為GPIO功能時(shí),控制某個(gè)引腳單獨(dú)輸入/輸出是用IODIR方向控制寄存器控制,寄存器中每位對應(yīng)控制著I/O位,如IODIR0對應(yīng)PX.0腳,IODIR31對應(yīng)PX.31腳,寫入1時(shí)對應(yīng)引腳作為輸出功能,寫入 0 時(shí)作為輸入功能。當(dāng)需要知道某個(gè)引腳當(dāng)前的輸出狀態(tài)時(shí), 是讀

29、取IOPIN寄存器。P0.2和P0.3 口是I2C接口,當(dāng)設(shè)置它們?yōu)?GPIO時(shí),是否需要外接上拉電阻才能輸出高電平?答:需要外接上拉電阻1-10K?,這是因此I2C接口兩根線都開漏輸出。使用SPI主模式時(shí),SSEL3I腳是否可以作為 GPIO?若不能,SSEL引腳應(yīng)如何處理?答:使用SPI主模式時(shí),SSEL3I腳不可以作為 GPIO,對SSEL弓唧的處理,使用SPI主模式時(shí), 必須選擇相應(yīng)的引腳用作SSE能并使其保持高電平。LPC2114的兩個(gè)UART是符合什么標(biāo)準(zhǔn)?哪一個(gè) UART可用ISP通信?哪一個(gè) UART具有 MODEM 接口?答:必須符合 16C550 工業(yè)標(biāo)準(zhǔn);UART0可用I

30、SP通信,UART1具有MODEM接口功能。LPC2114具有幾個(gè)32位定時(shí)器? PWM定時(shí)器是否可以作通用定時(shí)器使用?答:LPC2114具有2個(gè)32位定時(shí)器,定時(shí)器 0和定時(shí)器1, PWM定時(shí)器是專用定時(shí)器,不可 作通用定時(shí)器使用。LPC2000 系列ARM7 微控制器具有哪兩種低耗模式?如何降低系統(tǒng)的功耗?答: LPC2000 系列 ARM7 微控制器具空閑模式和掉電模式的低耗模式。在空閑模式下,處理器、存儲器系統(tǒng)和相關(guān)控制器以及內(nèi)部總線不再消耗功率,但外設(shè)繼續(xù)保持并可產(chǎn)生中斷使處理器恢復(fù)運(yùn)行。在掉電模式下,振蕩器關(guān)閉,芯片沒有任何內(nèi)部時(shí)鐘,處理器狀態(tài)和寄存器、外設(shè)寄存器以及內(nèi)部SRAM

31、值在掉電模式下被保持。芯片的邏輯電平保持靜態(tài)。復(fù)位或特定的不需要時(shí)鐘仍能工作的中斷可終止掉模式,并使芯片恢復(fù)正常運(yùn)行。有符號和無符號加法下面給出A和B的值,可先手動計(jì)算 A+B,并預(yù)測N、Z、V和C標(biāo)志位的值。其中(A, B)值分別為(0 xFFFF000F 0X0000FFF1)或(0 x7FFFFFFF,0 x02345678或(67654321、23110000 ), 將三組用分別用LDR偽指令向寄存器(R0, R1)附值。其程序如下:START LDR R0, =ALDR R1, =BLOOP BL ADD_SUBB LOOPADD_SUB ADDS R0,R0,R1MOV PC,LR

32、END試判斷如果A 和 B 為有符號數(shù)時(shí),計(jì)算結(jié)果和標(biāo)志位的狀態(tài)?如果為無符號數(shù)時(shí),計(jì)算結(jié)果和標(biāo)志的狀態(tài)?答:0 xFFFF000F0 x7FFFFFFF+0 x0000FFF10 x02345678結(jié)果: 0 x1000000000 x82345677N=0;Z=1;V=0;C=1N=1;Z=0;V=1;C=058、把下面的C代碼轉(zhuǎn)換成匯編代碼。數(shù)組始地址的存儲區(qū)內(nèi),類型為10ng(即32位)。67654321 A23110000 B90764321N=0 ;Z=0;V=O ;C=0a 和 b 分別存放在以 0 x4000 和 0 x5000 為起F0r(I=0;I8;I+)答:LDRLDR

33、MOVLOOPLDRSTRSUBSBPLAI=b7-I;R0, =0 x3FFCR1, =0 x5028R2, 0 x0008R3,R1,# -4 R3, R0,#4 R2,R2,#1 LOOP59、60、假設(shè)有一個(gè)基于FACTORIALLOOPMOVR6, #10MOVR4, R6SUBS R6,R6,#1MULNE R4,R4,R6BNE LOOPLPC2114 的系統(tǒng),所使用的晶振為11.0592MHz 石英晶振。請計(jì)算計(jì)算一個(gè)數(shù) n 的階乘,即 n!=n*(n-1)*(n-2) (1)。解:由公式:件,因出最大的系統(tǒng)時(shí)鐘(cclk)頻率為多少M(fèi)Hz?此時(shí)PLL的M值和P值各為多少?請列

34、出計(jì)算 公式,并編寫設(shè)置 PLL的程序段。由公式:Fcclk = M*Fosc ,要使Fcclk最大,F(xiàn)osc為11.0592MHz ,必M為最大時(shí)滿足條 因 LPC2114 的 Fcclk 最大值為 60MHZ,而 60/11.0592 ? 5.4 Mmax 僅能設(shè)置為 5當(dāng)前條件下的最大的系統(tǒng)時(shí)種Fcclk =5*11.0592=55.296MHZ,此日M值為5,寫入MSEL的值為4;又由公式:Fcco=Fosc * M * 2 * P ; 而 Fcco 在 156-320MHZ 內(nèi),因此:158 (11.0592*5*2 ) ?1.4 P320/ (11.0592*5*2 ) ? 2.8

35、9 故:P取 2。PSEL=1設(shè)置PLL的程序段:PLLCON=1PLLCFG = 60/Fosc -1PLLCFG=(PLLCFG&0 x1F) | (320(/ 11.0592*5*2 ) -1)5)PLLFEED = 0 xaa;PLLFEED = 0 x55;存儲器重映射:LPC2210具有(D )種存儲映射模式。A 3; B 5 ; C 1; D 4 ;當(dāng)程序已固化到片內(nèi)Flash,向量表保存在 0 x00000000起始處,則 MAP1:0的值應(yīng)該為 ( B ) 。A 00; B 01; C 10 ; D 11;LPC2000系列ARM7微控制器存儲器重映射的目標(biāo)起始地址為(0 x

36、00000000 ),共有( 16 ) 個(gè)字。A0 x00000000,8B0 x40000000,8C0 x00000000,16D0 x7FFFE000,8外部中斷喚醒掉電設(shè)計(jì):以下代碼是初始化部中斷0,用它來喚醒掉電的LPC2114,請?zhí)羁铡INSEL0 = 0 x00000000;PINSEL1 = (PINSEL1& 0 xFFFFFFFC)|0 x00000001;設(shè)置 I/O 口連接,P0.16 設(shè)置為 EINT0EXTMODE = EXTMODE & 0 xFE ;設(shè)置EINT0為電平觸發(fā)模式EXTPOLAR = EXTPOLAR & 0 xFE ;設(shè)置 EINT0為低電平觸

37、發(fā)EXTWAKE = EXTWAKE | 0 x01 ;/ 允許外部中斷0 喚醒掉電的 CPUEXTINT = 0 x0F ;/ 清除外部中斷標(biāo)志。使用定時(shí)器時(shí)脈寬測量: 脈沖從 P0.0 口輸入, 程序等待 P0.0 口變?yōu)榈碗娖胶髥佣〞r(shí)器測量,當(dāng)P0.0 口變?yōu)楦唠娖綍r(shí),停止定時(shí)器,然后從T0TC寄存器讀取定時(shí)計(jì)數(shù)值。編寫程序代碼?答:TOPR = 0;while(IO0PIN & 0 x01) != 0);TOTCR = 0 x01;While (IO0PIN & 0 x01) = = 0);TOTCR = 0 x00;Time = TOTC;U0RBR寄存器和U0THR寄存器的地址是

38、完全一樣的,是不是說明接收寄存器和發(fā)送寄存器是同一物理寄存器?它們是怎樣區(qū)分的?答:雖然U0RBR寄存器和U0THR寄存器的地址是完全一樣,但接收寄存器和發(fā)送寄存器不是同 一物理寄器。它們是通過讀寫信號線來區(qū)分的,當(dāng)為 WE操作時(shí),選擇U0THR寄存器;當(dāng)為 RD操作時(shí),選擇U0RBR寄存器。改錯:ARM 狀態(tài)與 Thumb 狀態(tài)的切換是要影響處理器的模式或寄存器的內(nèi)容的。 ( X )特權(quán)模式是哪些模式?為什么叫特權(quán)模式?答:特權(quán)模式除了用戶模式外,其它模式均為特權(quán)模式,即:系統(tǒng)模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式。之所以稱為特權(quán)模式是因?yàn)锳RM內(nèi)部寄存器和一些片內(nèi)外設(shè)在

39、硬件設(shè)計(jì)上只允許這些模式訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。異常模式是哪些模式?答:異常模式由快中斷模式、中斷模式、管理模式、中止模式、未定義模式。判錯:進(jìn)入異常模式可以通過程序切換進(jìn)入,也可以由特定的異常進(jìn)入。(V)在ARM7TDMI處理器內(nèi)部有37 個(gè)用戶可見的寄存器,這些寄存器分成兩大類:一類為通用32位寄存器,有 31 個(gè),另一類為狀態(tài)寄存器,有 6 個(gè)。未分組的寄存器有 R0-R7共8個(gè)。在任何模式下,這些寄存器都對應(yīng)于相同的32位物理寄存器。寄存器R8 R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于 F

40、IQ模式。這樣在發(fā)生 FIQ中斷后,可以加速 FIQ的處理速度。當(dāng)使用STR或STM指令保存R15時(shí),保存值與 R15值是不一致的,為什么?答:這是由于 R15是當(dāng)前指令的地址,而 ARM為多級流指令操作,當(dāng)在執(zhí)行段執(zhí)行保存PC時(shí),此時(shí)的PC值已不是當(dāng)前指令的 PC值,而是當(dāng)前地址的加一個(gè)偏移常量,如 8或12。判錯:ARM執(zhí)行STR或STM指令保存R15時(shí),其保存的值與當(dāng)前指令地址PC 一致的。(X)請判斷下面程序段的作用是獲取常量值,即跳轉(zhuǎn)時(shí)地址 =PC+常量+偏移地址中的常量,通常為 8。 TOC o 1-5 h z SUBR1,PC,#4STRPC,R0LDRR0,R0SUBR0,R0

41、,R1如果異常處理程序已經(jīng)把返回的地址拷貝到堆棧,那么可以使用一條多寄存器傳送指令來恢復(fù)用戶寄存器并實(shí)現(xiàn)返回。SUB LR,LR,#4STMFD SP!,R0-R3,LRLDMFD SP!,R0-R3,PCA請解釋“! ”和“人”的含義?答:“一表示最后的地址值要寫回SR表示這是一條特殊形式的指令。這條指令在從存儲器中裝載PC的同時(shí)( PC是最 后恢復(fù)的),SPS他恢復(fù)到CPSRARM7TDMI處理器采用是“哈佛結(jié)構(gòu)”而非馮諾依曼(Von Neumann)結(jié)構(gòu)。(X)ARM7TDMI處理器指令和數(shù)據(jù)共用一條 32位數(shù)據(jù)總線。只有裝載、保存和交換指令可訪問存儲器中的數(shù)據(jù)。(V)ARM指令集哪幾大

42、類指令?答:ARM指令集5大類指令,它們是:分支指令;數(shù)據(jù)處理指令;加載和存儲指令;協(xié)處理 器指令;雜項(xiàng)指令。從尋址方式的地址計(jì)算方法分,加載/存儲指令有4種格式。零偏移、前索引偏移、程序相對偏移、后索引偏移,請標(biāo)出下面指令屬于哪一種:LDR R0,R1,#0 x04; LDRR0,R1,#0 x04LDRR0,label ;LDR R0,R1 ;在多寄存器加載指令 LDMIA R0!, R1-R4,LR人中,請解釋“! ”和“人”的作用?答:“一表示在操作結(jié)束后,將最后的地址寫回R0中;表示兩方面,一方面進(jìn)行數(shù)據(jù)傳送且寄存器列表不包含PC時(shí),加載/存儲的寄存器是用戶模式下的,而不是當(dāng)前模式的

43、寄存器。另一方面,若在LDM指令且寄存器列表中包含有PC時(shí)使用,那么除了正常的多寄存器傳送外,還將SPS他拷貝到CPSR中,這可用于異常處理返回。該后綴不允許在用戶模式或系統(tǒng)模式下使用。ARM狀態(tài)下的壓棧和出棧操作可以用數(shù)據(jù)塊傳送指令完成,為什么還要用堆棧指令進(jìn)行堆棧操作?答:如STMDA R0!,R5-R6 LDMIB R0!,R5-R6的數(shù)據(jù)塊傳送指令進(jìn)行堆棧操作,也可用STMED R0!,R5-R6 LDMED R0!,R5-R6的堆棧指令進(jìn)行堆棧操作。兩段代碼的執(zhí)行結(jié)果 是一樣的,但是使用堆棧指令的壓棧和出棧操作編程很簡單,前后模式一致即可,而使用數(shù) 據(jù)塊指令進(jìn)行壓棧和出棧操作則需要考

44、慮空與滿、加與減對應(yīng)的問題。LPC2000系列微控制器包含四大部分:ARM7TDMI-S CPC ARM7局夸B總線及相關(guān)夸B件、AHB高性能總線及相關(guān)部件、VLSI外設(shè)總線及相關(guān)部件。AHB外設(shè)分配了8 M字節(jié)的地十范圍, 它位于4G字節(jié)ARM尋址空間的最頂端。AHB可接外設(shè)12 8 個(gè),每個(gè)分配 16KB 的地址空間。VPB外設(shè)分配了2M字節(jié)的地址范圍.從3.5GB地址點(diǎn)開始,VPB可分配128個(gè)外設(shè),每個(gè) VPB外設(shè)都分配了 16KB的地址空間。向量中斷控制器(VIC)最多可以管理32個(gè)中斷請求,LPC2000實(shí)際管理了 19個(gè)中斷請求。外部存儲器控制器(EMC)支持4個(gè)BANK的外部S

45、RAM或Flash,每個(gè)BANK最多名MB 容量。對SRAM的寫入一次操作后,如果發(fā)生芯片復(fù)位,實(shí)際的SRAM內(nèi)容將不會反映最近一次的寫操作。(V)在LPC2000系列芯片中,對 SRAM執(zhí)行一次寫入操作,此時(shí)芯片復(fù)位,為什么實(shí)際的SRAM內(nèi)容將不會反映最近一次的寫操作?答:由于SRAM控制器包含一個(gè)回寫緩沖區(qū),它總是保存著軟件發(fā)送到SRAM的最后一個(gè)字?jǐn)?shù)據(jù)。該數(shù)據(jù)只有在軟件請求下一次寫操作時(shí)才寫入SRAM。如果發(fā)生芯片復(fù)位,實(shí)際的SRAM內(nèi)容將不反映最近一次的寫操作。為什么整個(gè)BootBlock塊被映射到片內(nèi)存儲器空間的頂端?答:這是為了兼容將來的器件,以便將來的芯片內(nèi)置不同的RAM和FAL

46、SH都不會影響B(tài)ootBlock 的位置。實(shí)現(xiàn)掉電喚醒不需要在向量中斷控制器VIC中使能相應(yīng)的中斷。(X)異常向量表可能來源于內(nèi)部Flash、內(nèi)部SRAM內(nèi)部BootBlock、外部存儲器。(V)對LPC2210來說,當(dāng) MEMMAP寄存器的MAP1:0=11時(shí),當(dāng)引腳BOOT1和BOOT0全為高電平,復(fù)位后從外部Flash執(zhí)行程序。(X)對LPC2210來說,當(dāng) MEMMAP寄存器的MAP1:0=11時(shí),當(dāng)引腳BOOT1和BOOT0不全為高電平但芯片加密,復(fù)位后從外部Flash執(zhí)行程序。(X)與外部存儲器的連接時(shí),如果存儲器組配置成32位寬度,地址線A0和A1為什么無用,且可作為GPIO使用

47、?答:與外部存儲器的連接時(shí),如果存儲器組配置成32位寬度,則尋址是按字(4字節(jié))操作,但存儲器地址是按字節(jié)編址,因此只有當(dāng)A0和A1不參與尋址時(shí)才是按字操作,因此 A0和A1這兩根線可用作 GPIO而不影響尋址。與外部存儲器的連接時(shí), 如果存儲器組配置成 16位寬度,地址線 A0為什么無用?同一寄存器組的器件寬度可以不一致。 (X)與外部存儲器連接的是32位寬度,請畫出4片8位存儲器芯構(gòu)成32位存儲器的連接示意圖?中斷控制器將32個(gè)中斷輸入進(jìn)行分配,可轉(zhuǎn)向的中斷類型是FRQ、向量IRQ 和 非向量IRQ。請描述ARM內(nèi)核是如何通過向量中斷控制器VIC獲取中斷服務(wù)程序地址的?答:在發(fā)生向量IRQ

48、中斷后,VIC能將對應(yīng)中斷的服務(wù)程序地址保存的寄存器VICVectAddr0-15中按對應(yīng)VICVectCntl0-15的優(yōu)先級順序選取級別最高的地址,并送入 VICVectAddr寄存器中, 而非向量中斷是將 VICDefVectAddr送入VICVectAddr寄存器中,在異常向量表的IRQ異常入口 處放置一條指令,將 VICVectAddr寄存器的內(nèi)容裝入程序計(jì)數(shù)器PC,就可以跳轉(zhuǎn)到當(dāng)前中斷的服務(wù)函數(shù)。請編寫一段C代碼。要求設(shè)置外部中斷0產(chǎn)生向量IRQ中斷后執(zhí)行中斷服務(wù)程序IRQ_Eint0()。答:PINSEL1 = (PINSEL1&0XFFFFFFFC) | 0 x0綠置 P0.1

49、6 為外部中斷VICIntSelect = 0 x00000000; 設(shè)置所有中斷為IRQ中斷 VICVectCntl0 = (0 x20 | 14);將EINT0設(shè)置為優(yōu)先級 0,使能IRQ中斷 VICVectAddr。= (int)IRQ_Eint0;EXTINT = 0 x01;清除外部中斷0的標(biāo)志后使能外部中斷0 VICIntEnable = (114);簡述向量IRQ的中斷入口地址的形成過程?答:初始化時(shí),向量IRQ的入口地址保存在 VICVectAddrx寄存器中,通過 VICVectCntlx保存 中斷源類型,當(dāng)有所設(shè)置的IRQ中斷源發(fā)生中斷時(shí),中斷控制器(VIC)將中斷源所對應(yīng)

50、的向量IRQ入口地址寄存器 VICVectAddrx內(nèi)容保存到 VICVectAddr并由ARM通過異常向量表所對 應(yīng)的入口地址 0 x00000018執(zhí)行LDR PC PC, # -0 xFF0指令就完成將 VICVectAddr地址內(nèi)容裝 載到PC中形成中斷入口地址跳轉(zhuǎn),進(jìn)入中斷服務(wù)程序。簡述非向量IRQ的中斷入口地址的形成過程?答:初始化時(shí),非向量 IRQ的入口地址保存在 VICDefVectAddr,當(dāng)有所設(shè)置的非向量IRQ中斷源發(fā)生中斷時(shí),中斷控制器( VIC)將中斷源所對應(yīng)的非向量IRQ入口地址寄存器VICDefVectAddr內(nèi)容保存到VICVectAddr,并由 ARM通過異常

51、向量表所對應(yīng)的入口地址0 x00000018執(zhí)行LDR PC PC, # -0 xFF0脂令就完成將 VICVectAddr地址內(nèi)容裝載到 PC中形成 中斷入口地址跳轉(zhuǎn),進(jìn)入中斷服務(wù)程序。簡述向量IRQ和非向量IRQ的中斷入口地址形成異同?答:相同點(diǎn):同為IRQ中斷,ARM通過異常向量表所對應(yīng)的入口地址 0 x00000018執(zhí)行LDR PC PC, # -0 xFF0俏令就完成將 VICVectAddr地址內(nèi)容裝載到 PC中形成中斷入口地址跳轉(zhuǎn) ,進(jìn)入中 斷服務(wù)程序。不同點(diǎn):VIC形成VICVectAddr地址,一個(gè)是從向量地址寄存器VICVectAddrx讀取,一個(gè)是從寄存器VICDefVectAddr讀取。設(shè)置引腳為GPIO為輸出模式時(shí),向IOxSET寄存器對應(yīng)位寫1時(shí)輸出高電平,寫0時(shí)輸出低電平。(X)VIC寄存器 VICIntSelect 的作用。VIC寄存器 VICVectCntlx 的作用 。VIC寄存器 VICVectAddrx 的作用 。VIC寄存器 VICVectAddr 的作用。VIC寄存器 VICDefVectAddr 的作用LPC2000型中的定時(shí)器功能除了可作計(jì)數(shù)操作外,還可作:信號捕獲和信號匹配發(fā)生。I2C的2根線分別是串行數(shù)據(jù)SDA和串行時(shí)鐘 SCL簡述

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論