《嵌入式ARM基礎(chǔ)》習(xí)題_第1頁
《嵌入式ARM基礎(chǔ)》習(xí)題_第2頁
《嵌入式ARM基礎(chǔ)》習(xí)題_第3頁
《嵌入式ARM基礎(chǔ)》習(xí)題_第4頁
《嵌入式ARM基礎(chǔ)》習(xí)題_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《嵌入式ARM基礎(chǔ)》習(xí)題

第一章

什么是嵌入式操作系統(tǒng)

答:嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟/硬件可裁減,功能???/p>

靠性,成本,體積,功耗要求嚴(yán)格的專用計算機系統(tǒng)。

與通用計算機相比,嵌入式系統(tǒng)有哪些特點

答(1).嵌入式系統(tǒng)通常是面向特定應(yīng)用的;

(2).嵌入式系統(tǒng)是將計算機技術(shù),半導(dǎo)體技術(shù)和電子技術(shù)與各行各業(yè)的具體應(yīng)用相結(jié)合的后

的產(chǎn)物,是一門綜合技術(shù)學(xué)科;

(3).嵌入式系統(tǒng)和具體應(yīng)用有機的結(jié)合在一起,它的升級換代也是和具體產(chǎn)品同步進行的,

因此嵌入式產(chǎn)品一旦進入市場,就有較長的生命周期;

(4).為了提高執(zhí)行速度和可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲器芯片或單片機本

身中,而不是存儲于磁盤等載體中;

(5).嵌入式系統(tǒng)本身不具有自主開發(fā)能力,即使設(shè)計完成以后用戶通常也不能對其中的程序

功能進行修改,必須有一套開發(fā)工具和環(huán)境才能進行開發(fā)。

根據(jù)嵌入式的復(fù)雜程度,嵌入式系統(tǒng)可分為哪4類

答:1.單個微處理器;

2.嵌入式處理器可擴展系統(tǒng);

3.復(fù)雜的嵌入式系統(tǒng);

4.在制造或過程控制中使用的計算機系統(tǒng);

舉例介紹嵌入式處理器有哪幾類

答:1.嵌入式微處理器(EmbeddedMicroprocessorUnit,EMPU);

2.嵌入式微控制器;(EmbeddedMicrocontrolIerUnit,EMCU)

3.嵌入式DSP處理器(EmbeddedDigitalSignaIProcessor,EDSP);

4.嵌入式片上系統(tǒng)(EmbeddedSystemonChip,EsoC);

從硬件系統(tǒng)來看,嵌入式系統(tǒng)由哪幾個部分組成畫出簡圖。

電源模塊

Flash

微處埋器

MPU

時鐘

RAM

復(fù)位

ROM

外設(shè)

USB

LCD

keyboard

other

.嵌入式系統(tǒng)中,非數(shù)值數(shù)據(jù)編碼主要包括哪幾種

答:1.字符表示;

2.漢字編碼;

3.語音編碼;

若在嵌入式系統(tǒng)采用CRC碼進行信息傳輸,接收端接收到的碼字為131011,已知生成多項

式g(x)=1011,問收到的碼字是否正確出錯的是哪一位

解:收到的碼字不正確;出錯的是第4位。

方法:(將收到的碼字與生成多項式相除,所得結(jié)果為0011。對“CRC出錯模式(G(x)=1011)n

可查找出出錯位為第四位)。

第三章

編寫1+2+3+***+100的匯編程序c

AREAEXAMPLE1,CODE,READONLY;定義一個代碼段,名稱為

;EXAMPLE1

ENTRY;入口

MOVRO,#0;給R0賦值為0

MOVR1,#0;用R1來存放「100的總和,初

;始化為0

STARTADDRO,RO,#1;用來判斷終止的,每次加1

ADDR1,R1.R0;從1加到100

CMPRO,#100;執(zhí)行R0-100的操作,但不保存,

;只影響CPSR的值

BLTSTART;帶符號數(shù)小于時跳轉(zhuǎn)到START處

;執(zhí)行

STOP

BSTOP;死循環(huán)

END

如何實現(xiàn)128位數(shù)的減法,請舉例說明。

AREAEXAMPLE2,CODE,READONLY

ENTRY

START

SUBSR5,R5,R9

SBCSR4,R4,R8

SBCSR3,R3,R7

SBCSR2,R2,R6

STOP

BSTOP

END

將存儲器中起始地址M1處的4個字?jǐn)?shù)據(jù)移動到M2處。

AREAEXAMPLE2,CODE,READONLY

ENTRY

LDRRO,=0X10;把地址0X10賦給RO

LDRR5,-0X20;把地址0X20賦給R5

START

STMIARO,{R1-R4);把2到R2的值依次賦給RO為首地址

;的內(nèi)存單元中,每次賦完一次值,R0自

;動加1

LDMIAR5,(R1-R4J;把國到R4的值依次賦給以R5為首地

;址的內(nèi)存單元中,R5每次自動加1

STOP

BSTOP;死循環(huán)

END

參考CPSR寄存器中各標(biāo)志位的含義,使處理器處于系統(tǒng)模式。

AREAEXAMPLE2,CODE,READONLY

ENTRY

START

MOVRO,#0X1F;給川賦值,2蝌為11111

MSRCPSR_c,RO;把CPSR的條件位置1

STOP

BSTOP:死循環(huán)

END

用跳轉(zhuǎn)指令實現(xiàn)兩段程序間的來回切換。

AREAEXAMPLES,CODE,READONLY

ENTRY

BLa;跳到a對RO,R1,賦值

START

CMPRO,R1;比較RO,R1的值

BNEb;不等是跳轉(zhuǎn)到b

BEQSTOP;相等時跳轉(zhuǎn)到STOP

a

MOVRO,#3;對RO,R1賦值

MOVR1,#2

MOVR15,R14:返回

b

ADDR1,R1,#1;R1自加1

BSTART;跳轉(zhuǎn)到START

STOP

BSTOP;死循環(huán)

END

第四章

什么是偽指令和偽操作在ARM匯編中有哪幾種偽指令

答:在ARM匯編語言程序中有些特殊助記符,這些助記符與一般指令的助記符的不同之

處在于沒有相對應(yīng)的操作碼或者機器碼,通常稱這些特殊指令助記符衛(wèi)偽指令,他們多完成的

操作成為偽操作;

在ARM匯編中,有如下幾種偽指令:

(1)符號定義偽指令;

(2)數(shù)據(jù)定義偽指令;

(3)匯編控制偽指令;

(4)信息報告?zhèn)沃噶睿?/p>

(5)宏指令及其他偽指令。

如何定義寄存器列表,試舉一個使用寄存器列表的例子,要求實現(xiàn)4個字的內(nèi)存復(fù)制。

答:AREAEXAMPLE1,CODE.READONLY

ENTRY

LDRRO,=OXFF:把地址OXFF賦給RO

LDRR5,=OXOF;把地址OXOF賦給R5

START

PBLOCKRLIST{R1-R4}:把R1-R4定義為PBLOCK

STMIARO,PBLOCK;把R1到R2的值依次賦給

;R0為首地址

;的內(nèi)存單元中,每次賦完一次

;值自動加1

LDMIAR5,PBLOCK;把2到R4的值依次賦給以R5

;為首地址的內(nèi)存單元中,R5每

;次自動加1

STOP

BSTOP;死循環(huán)

END

參考CPSR寄存器中各標(biāo)志位的含義,使處理器處于系統(tǒng)模式。

AREAEXAMPLE2,CODE,READONLY

ENTRY

START

MOVRO,#0x1F

MSRCPSR_o,RO

STOP

BSTOP

END

如何定義一個宏,宏與子程序的區(qū)別是什么

答:宏的格式為:

MARCO和MEND

[$標(biāo)號]宏名〔$參數(shù)1,$參數(shù)2…一]

指令序列

MEND

MARCO表示一個宏定義的開始,MEND表示一個宏的結(jié)束,MARCO和MEND前呼后應(yīng)可以

將一段代碼定義為一個整體,又稱宏,然后在程序中就可以在程序中通過宏的名稱及參數(shù)調(diào)用該

段代碼。

宏指令可以重復(fù)使用,這一點的使用方式與子程序有些相似,子程序可以節(jié)省存儲空間,提

供模塊化的程序設(shè)計。但使用子程序機構(gòu)時需要保存/恢復(fù)現(xiàn)場,從而增加了系統(tǒng)的開銷,因此,

在代碼傳遞的參數(shù)較多并且比較短時,可以使用宏代替子程序,宏在被調(diào)用的地方展開。

匯編中如何定義一個段,段有幾種屬性

答:AREA用于定義一個代碼段,數(shù)據(jù)段,或者特定屬性的段。

段的幾種屬性如下:

READONLY表示只讀屬性;

READWRITE表示本段可讀寫:

CODE定義代碼段;

DATA定義數(shù)據(jù)段;

ALIGN二表達式的對齊方式為2的表達式次方;;

COMMON:定義一個通用段,這個段不包含用戶代碼和數(shù)據(jù)。

在一個匯編源文件中如何包含另一個文件中的內(nèi)容

答:通??梢允褂肎ET/INCLUDE指令,在某源文件中定義一些宏指令,用MAP和FIELD

定義結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)類型,用EQU定義常量的符號名稱,然后用GET/INCLUDE將這個源文件

包含到其他源文件中。

分別編寫一個函數(shù)和一個宏,實現(xiàn)字符串的復(fù)制.

MACRO

COPY$P1,$P2;定義一個宏

$P1DCB"HELLO";分配一個字節(jié)的空間,并初始化為一個

;字符串

$P2B"WORLD!";同上

LDRRO,=$P1的首地址加載到RO

LDRR6,=$P2;把P2的首地址加載到R1

LDRIARO,[R1-R5];把R0每載一次,自加一次

;實現(xiàn)把P1加載到RO

STRIAR6,[R1-R5];同理(上)

MEND

AREACOPY,CODE,READONLY

ENTRY

START

MACROSTR1,STR2;調(diào)用宏

BSTART;死循環(huán)

END

解釋歸納變量,同族的歸納變量及基本的歸納變量。

4.8試將下面這段C代碼翻譯為等效的匯編代碼:

intFactorial(int)要有以下幾個特點:具

有大量的指令和尋址方式;

大多數(shù)程序只使用少量的指令就能夠運行。

絕大多數(shù)嵌入式處理器:精簡指令系統(tǒng)計算機(RISC)有一個精簡的指令系統(tǒng)。從而提高了微

理器的效率,但需要更復(fù)雜的外部程序,也就是把在處理器層沒有完成的工作放到了上層進行,

而處理器層少的這些成本可以用對物理器件速度的提高上去。RISC有下特點:

8/2原則:80%的程序只使用20$的指令;

采用Load/store指令模式,凡數(shù)據(jù)由外存到內(nèi)存、內(nèi)存到寄存器方向的流動統(tǒng)一用Load

指令,而對于反方向的操作,都用store;

用小指令集、多寄存器、指令執(zhí)行簡單快速;

統(tǒng)一用單周期指令,從根本上克服了CISC指令周期數(shù)有長有短、偶發(fā)性不確定、運行失常

的缺點。

(4)ARM7、ARM9內(nèi)核處理器各采用幾級流水線,分別是哪幾級流水線結(jié)構(gòu)

答:

ARM7TDMI采用三級流水線,分另為取指令、解碼指令和執(zhí)行操作。

ARM9TDMI采用5級流水線結(jié)構(gòu),分別為取指令、譯碼、執(zhí)行、存儲、寫操作五級。

(5)從內(nèi)部結(jié)構(gòu)及功能來看,ARN7、ARM9、Xscal內(nèi)核處理器各自有哪些不同,主要應(yīng)用

在哪些領(lǐng)域

答:

ARM7內(nèi)部結(jié)構(gòu)框圖,包括AddressRegister(地址寄存器)、AddressIncrementer(地址

累加器)、ResisterBank(寄存器塊)、Booth5sMultiplier(乘法器)、32位ALU單元、

Write/ReadDataRegister(讀/寫數(shù)據(jù)寄存器)、邏輯控制單元等部分。沒有內(nèi)存管理單片。

ARM9TDMI處理器內(nèi)核采用ARMV4T架構(gòu),增加了可用的存儲器寬度、指令存儲器接口以及

數(shù)據(jù)存儲器接口,可以支持16bitThumb指令集和32btiARM指令,ARN9作為高性能的32位

RISC處理器內(nèi)核,可以實現(xiàn)對指令和數(shù)據(jù)存儲器的同時訪問。如圖2~9所示為ARM9功能結(jié)

構(gòu)圖。主要包含以下結(jié)構(gòu):

16KB指令和16KB數(shù)據(jù)緩存;

存儲管理單元MMU,這有別于ARM7TDMI;

一個AMBA(AdvancedMicroprocessorBusArchitecture)總線接口;

一個EmbeddedTraceMacrocelI(ETM)接口。

有內(nèi)存管理單元,便于移植操作系統(tǒng)。

第3章

(1)試列舉ARM處理器工作模式,各工作模式主要完成怎么樣的功能

答:

User:用戶模式。絕大部分的任務(wù)執(zhí)行都在這種操作模式下,此為正常的程序執(zhí)行模式。

FIQ:快速中斷模式。當(dāng)一個高優(yōu)先級中斷產(chǎn)生時,系統(tǒng)將會進入這種操作模式,用于高速

數(shù)據(jù)傳輸和通道處理,由FIQ請求位發(fā)出請求信號。IRQ:

普通中斷模式。當(dāng)一個低優(yōu)先級中斷產(chǎn)生時將會進入這種操作模式,本模式用于通常的中斷

處理,由IRQ請求位發(fā)出請求信號。

Supervisor:管理模式。當(dāng)復(fù)位或軟中斷指令執(zhí)行時將會進入這種操作模式,是一種可以供操

作系統(tǒng)使用的保護模式。Abort:中止模

式。當(dāng)存取異常時將會進入這種操作模式,此模式可以被用作虛擬存儲及存儲保護,可

由ABORT請求位發(fā)出請求信號。Undef:未定義模式。當(dāng)執(zhí)

行未定義指令時會進入這種操作模式,多被用于軟件仿真硬件協(xié)處理器時。

(2)試列舉ARM處理器各寄存器功能,在不同的模式下可以訪問哪些寄存器

答:

1個寄存器用作PC(ProgramCounter),即程序寄存器,指向程序執(zhí)行位置。

1個寄存器用作CPSR(CurrentProgramStatusRegister),即當(dāng)前狀態(tài)寄存器,保存當(dāng)前

CPU狀態(tài)。

5個寄存器用作SPSR(SavedProgramStatusRegisters),備份不同模式下CPSR的值。

30個寄存器作為通用寄存器,存儲數(shù)據(jù)使用。

(3)試說明CPSR寄存器各位功能。

答:

標(biāo)志位含義

NN=1表示運算的結(jié)果為負數(shù);N=0表示運算的結(jié)果為正數(shù)或零

zZ=1表示運算的結(jié)果為零;z=o表示運算的結(jié)果為非零

C0=1表示有進位,c=o表示沒有進位

VV=1表示符號位溢出,v=o表示結(jié)果沒有溢出

0在ARMvTE/J架構(gòu)支持,指示DSP指令是否溢出

J僅ARM5TE/J架構(gòu)支持,J=1表示處理器處于Jazelle狀態(tài)

I1=1表示禁止IRQ

FF=1表示禁止FlQ

T僅ARMxT架構(gòu)支持,T=0表示處理器處于ARM狀態(tài),T=1表示處理器處于Thumb狀態(tài)

(4)試列出ARM處理器常見中斷方式,并說明ARM處理器在響應(yīng)這些中斷時要經(jīng)歷哪些主

要步驟

答:

異常類型具體含義

FIQ當(dāng)處理器的快速中斷請求引腳有效,且CPSR中的F位為0時,產(chǎn)生FIQ異常

IRQ當(dāng)處理器的外部中斷請求引腳有效,且CPSR中的I位為0時,產(chǎn)生IRQ異常

異常中斷當(dāng)外部的ABORT輸入產(chǎn)生時,發(fā)生異常斷

軟件中斷該異常由執(zhí)行SWI指令產(chǎn)生,可用于用戶模式下的程序調(diào)用特權(quán)操作指令,可使

用該異常機制實現(xiàn)系統(tǒng)功能調(diào)用

復(fù)位當(dāng)處理器的復(fù)位電平有效時,產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行未

定義指令當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指令時,產(chǎn)生未定義指令異常??墒褂?/p>

該異常機制進行軟件仿真

ARM處理異常時,將立即通過備份寄存器保存當(dāng)前CPU的狀態(tài)。PC和CPSR寄存器中的內(nèi)容

被分別拷貝到R14和SPSR中,PC和CPSR中的模式位M[0:4]根據(jù)異常類型被強制改變。

在異常中斷處理中,如果要禁止其它難以管理異常的嵌套,可以置位中斷標(biāo)志位禁止再次中斷請

求。在需要重復(fù)進入中斷處理程序的情況下,R14和SPSR應(yīng)該在中斷被使能之前保存到主存

儲的堆棧中;當(dāng)傳送SPSR寄存器到堆?;蛘邚亩褩魉蜁r,需要注意的是必須傳送整個字

(32位)。當(dāng)多個異常同時產(chǎn)生時,優(yōu)先級決定異常響應(yīng)的順序。

異常處理完畢之后,ARM微處理器將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中,同

時將SPSR復(fù)制回CPSR中,若在進入異常處理時設(shè)置了中斷禁止位,要在此清除。

(5)為什么說ARM處理器是32位處理器,主要體現(xiàn)在哪些方面,其匯編采用怎樣的指令編

碼格式

答:數(shù)據(jù)線32位,寄存器32位,編碼32位。

(6)試列出16類指令條件域所對應(yīng)的CPSR寄存器相應(yīng)位狀態(tài)。

答:

條件碼助記符后綴標(biāo)志含義

0000EQZ置位相等

0001NEZ清零不相等

0010CSC置位無符號數(shù)大于或等于

0011CCC清零無符號數(shù)小于

0100MlN置位負數(shù)

0101PLN清零正數(shù)或零

0110VSV置位溢出

0111VCV清零未溢出

1000HIC置位Z清零無符號數(shù)大于

1001LSC清零Z置位無符號數(shù)小于或等于

1010GEN等于V帶符號數(shù)大于或等于

1011LTN不等于V帶符號數(shù)小于

1100GTZ清零且(N等于V)帶符號數(shù)大于

1101LEZ置位或(N不等于V)帶符號數(shù)小于或等于

1110AL忽略無條件執(zhí)行

(7)ARM處理器主要有哪些類型的尋址方式,各有什么特點

答:

立即尋址

寄存器尋址

基地址變址尋址

寄存器偏移尋址

寄存器間接尋址

多寄存器尋址

(8)ARM指令和偽指令主要功能是什么在ARM處理器中,有哪些類型的ARM指令,試舉例

說明相應(yīng)指令編碼格式,在ARM匯編程序設(shè)計時,有哪些主要類型的偽指令,試舉例說明各

類偽指令功能。

答:

ARM指令:指示處理器如何工作。

偽指令:協(xié)助編譯器。

指令略。

(9)試用匯編程序?qū)崿F(xiàn)求兩個數(shù)中最大數(shù)。

答:

(10)試用匯編程序?qū)崿F(xiàn)1~100的加法運算。

答:

(11)試用匯編程序?qū)崿F(xiàn)10的階乘運算。

答:

(12)完成本章中所有源代碼編號及調(diào)試。

答:

第4章

(1)試列舉在進行嵌入式軟件開發(fā)時,ARM匯編語言多用來開發(fā)哪些類型的程序。

答:

Bootloader程序中多采用匯編程序和C語言匯合編程。操作系統(tǒng)中有少部分是匯編程序,

絕大部分采用C語言編寫,例如Linux內(nèi)核。

(2)在使用ADS平臺進行嵌入式應(yīng)用程序開發(fā)時,armasmxarmcc、armcppxarmlink主要

功能是什么,如果要編譯Thumb指令集程序,需要使用哪些命令。

答:armasm:

此命令用來編譯匯編程序。armcc:用

來編譯C程序。armcpp:用來編譯

C++程序。armlink:此命令用來鏈接

目標(biāo)文件。

(3)試編寫一段匯編程序,實現(xiàn)64位加法運算,并使用(2)中所列工具進行編譯鏈接,

生成可執(zhí)行二進制代碼。

答:

(4)在ARM應(yīng)用程序中,在存儲時可執(zhí)行文件主要分為哪幾個部分,在運行時又分成哪幾

個主要部分,各部分主要存儲形式和存儲內(nèi)容是什么

答:

圖4-3存儲態(tài)和運行態(tài)代碼分布

(5)使用平臺創(chuàng)建工程項目文件過程是什么,試安裝平臺創(chuàng)建一個工程項目,然后添加相

應(yīng)源代碼,使用AXD調(diào)試,寫出詳細操作步驟。

答:

(6)試編寫一段C語言與匯編程序的混合程序,在此匯編程序中,實現(xiàn)輸入的任意兩個數(shù)

的整數(shù)除法運算,在C文件中實現(xiàn)測試。

答:

(7)試編寫一段C語言與匯編程序的混合程序,在此匯編程序中,實現(xiàn)兩個64

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論