嵌入式系統(tǒng)設計復習題._第1頁
嵌入式系統(tǒng)設計復習題._第2頁
嵌入式系統(tǒng)設計復習題._第3頁
嵌入式系統(tǒng)設計復習題._第4頁
嵌入式系統(tǒng)設計復習題._第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、嵌入式系統(tǒng)設計復習題1、根據(jù)嵌入式系統(tǒng)的實時性強弱,嵌入式系統(tǒng)是如何分類的?結合具體的應用場合,對它們的特點分別加以描述。實時系統(tǒng)指系統(tǒng)的計算正確性不僅取決于計算的邏輯正確性,還取決于產(chǎn)生結果的時間。如果未滿足系統(tǒng)的時間約束, 則認為系統(tǒng)失效。非實時系統(tǒng)(如 PDA ),對計算或者外接變換響應的時間沒有確定性的要求。 軟實時系統(tǒng)(如消費類產(chǎn)品)軟實時系統(tǒng)就是那些從統(tǒng)計的角度來說,一個任務能夠得到有確保的處理時間,到達系 統(tǒng)的事件也能夠在截止期限到來之前得到處理,但違反截止期限并不會帶來致命的錯誤。例如在網(wǎng)絡中僅僅是輕微地 降低了系統(tǒng)的吞吐量。硬實時系統(tǒng)(工業(yè)實時控制系統(tǒng)) 硬實時系統(tǒng)指系統(tǒng)要有

2、確保的最壞情況下的服務時間,即對于事件的響應時間的截 止期限是無論如何都必須得到滿足。例如中高檔汽車中使用的氣囊,晚一秒鐘展開氣囊比沒有氣囊的情況更糟糕。強實時系統(tǒng) , 其系統(tǒng)響應時間在毫秒或微秒級。一般實時系統(tǒng) , 其系統(tǒng)響應時間在幾秒的數(shù)量級上,其實時性的要求比強實時系統(tǒng)要差一些。弱實時系統(tǒng) , 其系統(tǒng)響應時間約為數(shù)十秒或更長。這種系統(tǒng)的響應時間可能隨系統(tǒng)負載的輕重而變化。2、結合嵌入式系統(tǒng)的組成結構, 詳細描述嵌入式系統(tǒng)開發(fā)的具體工作有哪些?在嵌入式硬件和嵌入式軟件之間有一個 接口層次,這個接口層為什么層?其具體的開發(fā)特點是什么?1)系統(tǒng)定義與需求分析;2 )系統(tǒng)設計方案的初步確立; 3

3、 )初步設計方案性價比評估與方案評審論證; 4 )完善初步方案、初步方案實施; 5 )軟硬件集成測試; 6 )系統(tǒng)功能性能測試及可靠性測試。嵌入式系統(tǒng)的組成部分是嵌入式系統(tǒng)硬件平臺、嵌入式操作系統(tǒng)(RTOS)和嵌入式系統(tǒng)應用。操作系統(tǒng)與硬件的接口嵌入式系統(tǒng)硬件平臺是以嵌入式處理器為核心,由存儲器、I/O 單元電路、通信模塊、外部設備等必要的輔助接口組成的。嵌入式軟件:包括嵌入式操作系統(tǒng)及應用軟件嵌入式操作系統(tǒng)是嵌入式系統(tǒng)中最基本的軟件,它負責分配、回收,控制和協(xié)調全部軟硬件資源的并發(fā)活動,并且提 供應用程序的運行環(huán)境和接口,是應用程序運行的基礎。嵌入式應用軟件嵌入式應用軟件是服務于某種專用應用

4、領域,基于某一特定的嵌入式硬件平臺,用來達到用戶預期任務的計算機軟件。 由于引入了一個中間層,屏蔽了底層硬件的多樣性,操作系統(tǒng)不再面對具體的硬件環(huán)境,而是面對由這個中間層次所 代表的、邏輯上的硬件環(huán)境,因此,把中間層次叫做硬件抽象層( Hardware Abstraction Layer, HAL )。 HAL 的引入大大 推動了嵌入式實時系統(tǒng)的通用化,從而為嵌入式系統(tǒng)的廣泛應用提供了可能。板級支持包(Board Support Package, BSP)是現(xiàn)有的大多數(shù)商用嵌入式操作系統(tǒng)實現(xiàn)可移植性所采用的一種方案,是 硬件抽象層的一種實現(xiàn)。 BSP 隔離了所支持的嵌入式操作系統(tǒng)與底層硬件平臺

5、之間的相關性,是嵌入式操作系統(tǒng)能夠 通用與 BPS 所支持的硬件平臺,從而實現(xiàn)嵌入式操作系統(tǒng)的可移植性和跨平臺性,以及嵌入式操作系統(tǒng)的通用性、復 用性。3、嵌入式處理器的種類有哪些?如能給出具體的代表性芯片請給出芯片的型號及生產(chǎn)廠家。嵌入式微控制器 8051 英特爾嵌入式微處理器 ARM、 MIPS、 Aml86/88 ( Innovasic) 、 386EX (intel)、 PowerPC (IBM )、 68000系列( Motorola ) DSP 處理器 TI 公司 TMS320C2000/5000/6000高度集成的片上系統(tǒng)4、嵌入式交叉開發(fā)環(huán)境的組成是怎樣的?嵌入式系統(tǒng)開發(fā)為什么

6、需要這樣的交叉開發(fā)環(huán)境而通用計算機的開發(fā)不需 要?嵌入式系統(tǒng)通常是一個資源受限的系統(tǒng),因此直接在嵌入式系統(tǒng)的硬件平臺上編寫軟件比較困難,有時候甚至是不可能的。以運行x86模式的特點:目前一般采用的解決辦法是首先在通用計算機上編寫程序,然后通過交叉編譯生成目標平臺上可 的二進制代碼格式,最后再下載到目標平臺上的特定位置上運行。交叉開發(fā)環(huán)境一般由運行于宿主機上的交叉開發(fā)軟件、宿主機到目標機的調試通道組成。運行于宿主機上的交叉開發(fā)軟件最少必須包含編譯調試模塊,其編譯器為交叉編譯器。作為宿主機的一般為基于 體系的桌上型計算機,而編譯出的代碼必須在目標機處理器體系結構上運行。在宿主機上編譯好目標代碼后,

7、通過宿 主機到目標機的調試通道將代碼下載到目標機,然后由運行于宿主機的調試軟件控制代碼在目標機上運行調試。 嵌入式系統(tǒng)應用軟件的開發(fā)屬于跨平臺開發(fā),因此需要一個交叉開發(fā)環(huán)境。5、11、ARM有哪些工作狀態(tài)?如何進行狀態(tài)切換?T變種的ARM處理器有兩種工作狀態(tài):ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行字對準的 ARM指令;Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字對準的Thumb指令。ARM處理器在兩種工作狀態(tài)之間可以利用BX指令方便地進行切換。(1)進入Thumb狀態(tài)。當操作數(shù)寄存器的狀態(tài)位(位 0)為1時,執(zhí)行BX指令進入Thumb狀態(tài)。(2)進入ARM狀態(tài)。當操作數(shù)寄存器的狀態(tài)位(位 0)為0時

8、,執(zhí)行BX指令進入ARM狀態(tài)。6、ARM有哪7種工作模式?各自的用途是什么?其中哪些是特權模式?哪些是異常模式?系統(tǒng)開機時應該為這些工 作模式做哪些準備?ARM微處理器支持7種運行模式,分別為:用戶模式(usr): ARM處理器正常的程序執(zhí)行狀態(tài)。系統(tǒng)模式(sys):運行具有特權的操作系統(tǒng)任務??焖僦袛嗄J剑╢iq):用于高速數(shù)據(jù)傳輸或通道處理。外部中斷模式(irq):用于通用的中斷處理。管理模式(svc):操作系統(tǒng)使用的保護模式。數(shù)據(jù)訪問終止模式(abt):當數(shù)據(jù)或指令預取終止時進入該模式,可用于虛擬存儲及存儲保護。 未定義指令中止模式(und):當未定義的指令執(zhí)行時進入該模式,可用于支持硬

9、件協(xié)處理器的軟件仿真。除用戶模式外,其它模式均為特權模式。ARM內部寄存器和一些片內外設在硬件設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。后五種為異常模式,它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現(xiàn)時,處理器進 入相應的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。管理模式SVC,復位后缺省模式;多種特權模式變化,主要完成各模式的堆棧設置,注意不要進入用戶模式;用戶程 序的運行模式,一般為用戶模式User。7、一個程序執(zhí)行時間的計算公式:其中:TprogN

10、inst CPIf clkN inst :指令數(shù)CPI :每條指令的平均時鐘周期數(shù)。fclk :時鐘頻率。請結合該公式分析提高嵌入式系統(tǒng)工作效率的途徑有哪些 ?優(yōu)化代碼,提高時鐘頻率,降低 cpi,提高cpu指令執(zhí)行效率8、 “ ARM 處理器指令大部分可以作為條件指令來執(zhí)行,大部分的指令也可以影響條件, 但是都不是強制的” ,這里所 說“條件”具體指的是什么?“不是強制的”是什么意思?如何才能讓一條指令影響條件標志?又如何才能使一條 指令變成條件執(zhí)行指令。ARM 體系結構包含一個當前程序狀態(tài)寄存器( CPSR), CPSR 中的 ALU 狀態(tài)標志 N 、 Z、C、 V 均為條件碼標志位。 它

11、們的內容可被算術或邏輯運算的結果所改變,并且可以決定某條指令是否被執(zhí)行。在 ARM 模式下,任何一條數(shù)據(jù)處理指令可以選擇是否根據(jù)操作的結果來更新CPSR 寄存器中的 ALU 狀態(tài)標志位,在數(shù)據(jù)處理指令中使用 S 后綴來實現(xiàn)該功能。但有一些指令的執(zhí)行總是會影響條件代碼標志。每條ARM 指令的條件碼域包含4位條件碼,共16種。幾乎所有指令均根據(jù) CPSR中條件碼的狀態(tài)和指令條件碼域的設置有條件地執(zhí)行。當指 令執(zhí)行條件滿足時,指令被執(zhí)行,否則被忽略。在 Thumb 模式,大多數(shù)操作總是更新狀態(tài)標志位,并且只能使用條件轉移指令(B) 來實現(xiàn)條件執(zhí)行。該指令 (B) 的后綴和在 ARM 模式下是一樣的。

12、其他指令不能使用條件執(zhí)行。每條ARM指令的條件碼域包含 4位條件碼,共16種。幾乎所有指令均根據(jù) CPSR中條件碼的狀態(tài)和指令條件碼域的 設置有條件地執(zhí)行。當指令執(zhí)行條件滿足時,指令被執(zhí)行,否則被忽略。9、什么是“有效立即數(shù)” ,有效立即數(shù)在 ARM 指令中的表示方法是怎樣的?為什么采用這樣的表示方法?有效立即數(shù)由一個 8位的常數(shù)循環(huán)移位偶數(shù)位得到,在 12位的 shifter_operand 中, 8位存數(shù)據(jù), 4位存移位的次數(shù)。 shifter_operand 占的位數(shù)為 12 位。要用一個 1 2位的編碼來表示任意的 32 位數(shù)是絕對不可能的,只有在表示數(shù)的數(shù)量 上做限制,通過編碼來實現(xiàn)

13、用 12位的編碼來表示 32位數(shù), 8位存數(shù)據(jù), 4位存移位的次數(shù)10、ARM 處理器指令大多都是采用寄存器作為其操作數(shù),以提高指令的執(zhí)行效率,為此ARM 處理器設置了大量的寄存器,可是數(shù)據(jù)的最初來源和最終歸宿都是存儲器,ARM 是如何來解決這一問題的?11、ARM 處理器的堆棧有哪些類型?在 ARM 狀態(tài)和 Thumb 狀態(tài)下分別如何實現(xiàn)堆棧操作。ARM 微處理器支持這四種類型的堆棧工作方式,即: 滿遞增方式 FA(Full Ascending ):堆棧指針指向最后入棧的數(shù)據(jù)位置,且由低地址向高地址生成。 滿遞減方式FD( Full Decending):堆棧指針指向最后入棧的數(shù)據(jù)位置,且由

14、高地址向低地址生成。 空遞增方式EA (Empty Ascending):堆棧指針指向下一個入棧數(shù)據(jù)的空位置,且由低地址向高地址生成。 空遞減方式ED ( Empty Decending):堆棧指針指向下一個入棧數(shù)據(jù)的空位置,且由高地址向低地址生成。LDM (或 STM) 條件 類型 基址寄存器 !,寄存器列表LDM (或STM )指令用于從由基址寄存器所指示的一片連續(xù)存儲器到寄存器列表所指示的多個寄存器之間傳送數(shù)據(jù), 該指令的常見用途是將多個寄存器的內容入?;虺鰲?。其中,類型 為以下幾種情況:FD 滿遞減堆棧; ED 空遞減堆棧; FA 滿遞增堆棧; EA 空遞增堆棧;LDM和STM指令可以

15、將任何范圍為 R0R7的寄存器子集加載或存儲,PUSH和POP指令使用堆棧指針 R13作為基址實現(xiàn)滿遞減堆棧,除 R0R7外,PUSH指令還可以存儲鏈接寄存器R14,并且POP指令可以加載程序指令 PC。PUSH 和 POP 指令格式:PUSH 低寄存器的全部或其子集 PUSH 指令用于把寄存器列表中的寄存器POP 低寄存器的全部或其子集 這兩條指令是棧操作指令,用于在寄存器和堆棧之間進行成組的數(shù)據(jù)傳送, 數(shù)據(jù)推進堆棧; POP 指令用于把棧區(qū)的數(shù)據(jù)彈出列表的寄存器中。12、在ARM “偽指令”和“匯編指令”中都有LDR指令,如何區(qū)分指令中的 LDR為“偽指令”還是“匯編指令” ?請舉例說明。

16、單一數(shù)據(jù)加載 /存儲指令 LDR格式為:LDR 條件 目的寄存器, LDR 指令是字加載指令,用于從存儲器中將一個 32位的字數(shù)據(jù)傳送到目的寄存器中。LDR R3,R4;LDR 偽指令語法格式 :LDRcond Rd, = 數(shù)值表達式;加載數(shù)字常量LDRcond Rd, = 語句標號 +數(shù)值表達式;加載地址LDR 偽指令是把一個數(shù)字常量或一個地址加載到低端寄存器偽指令。 如果所加載的是一個 32位的數(shù)字常量, 則編譯程 序就可以把這條語句編譯成一條 MOV 指令,如果不能用 MOV 指令來表達,則編譯成一條 LDR 指令。如果所加載的 是地址的話,編譯程序會把這條語句編譯成 LDR 指令。13

17、、ATPCS 標準的具體內容是什么?建立該標準的目的是什么?為了使單獨編譯的 C 語言程序和匯編程序能夠互相調用,定義了統(tǒng)一的函數(shù)過程調用標準ATPCS ( ARM-ThumbProcedure Call Standard)。ATPCS定義了寄存器組中的R0R3作為參數(shù)傳遞和結果返回寄存器,如果參數(shù)數(shù)目超過四 個,則使用堆棧進行傳遞。內部寄存器的訪問速度是遠遠大于存儲器的,所以要盡量使參數(shù)傳遞在寄存器里面進行,即應盡量把函數(shù)的參數(shù)控制 在四個以下。14、Boot Loader 在嵌入式系統(tǒng)中主要起什么作用?完成哪些主要的工作?BootLoader 是一段匯編代碼,存放在MBR(Master B

18、oot Record- 主引導扇區(qū) )中,它的主要作用就是將操作系統(tǒng)啟動代碼讀入內存。從功能上看, Bootloader 就是在操作系統(tǒng)內核或用戶應用程序運行之前運行的一段小程序。通過這段小程序可以初始化硬件設備、建立內存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用操作系統(tǒng)內核或 用戶應用程序準備好正確的環(huán)境。15、簡述嵌入式 Linux 交叉編譯環(huán)境搭建及開發(fā)步驟交叉編譯器完整的安裝一般涉及到多個軟件的安裝,包括 binutils 、 gcc、 glibc 等軟件。交叉編譯器的安裝有兩種方法: 一種是利用網(wǎng)上交叉編譯包安裝,第二種是利用交叉鏈 Crosstool 自

19、己構建交叉編譯器。1 、利用交叉編譯包安裝交叉編譯器網(wǎng)上有很多編譯好的交叉編譯器,將下載的壓縮包解壓,復制到usr/local/arm, 下面以安裝 3.4.1 為例:倉U建目錄: mkdir p /usr/local/arm將解壓得到的文件夾復制到 usr/local/arm指定交叉編譯器路徑: export PATH=$PATH:/usr/local/arm/3.4.1/bin這樣交叉編譯器就算是安裝好了。2、利用 crosstool 構建交叉編譯器1. 做好準備工作。下載上述工具的源碼包和補丁、準備內核頭文件和創(chuàng)建工作目錄等。2. 編譯 binutils 。3. 編譯輔助編譯器。4. 使

20、用交叉編譯工具鏈,如 arm-linux-gcc 編譯 glibc 庫。5. 編譯生成完整的 gcc 編譯器。重新配置 gcc 功能,使其完整的支持 C 、C 等語言。1.建立開發(fā)環(huán)境2.配置開發(fā)主機,3. 建立引導裝載程序 Bootloader4. 移植 Linux 操作系統(tǒng)5. 建立根文件系統(tǒng)6. 建立應用程序的 flash 磁盤分區(qū)7. 開發(fā)應用程序8. 應用程序開發(fā)結束后,需要燒寫內核、根文件系統(tǒng)、應用程序。最后進行產(chǎn)品的發(fā)布。16、在編寫嵌入式 Linux 設備驅動程序中,如何對 I/O 物理地址進行讀寫?17、簡述在多線程開發(fā)中互斥鎖 (Mutex) 的作用及使用步驟互斥鎖是同一時

21、間只能有一個線程獲得控制權的機制?;コ怄i的使用步驟:( 1) 聲明互斥鎖,并設置為快速鎖(常用的鎖) pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;( 2) 在對共享數(shù)據(jù)或者變量修改前,調用pthread_mutex_lock (&mutex) 加鎖;如果此時 mutex 已經(jīng)被別的線程獲取,那么 pthread_mutex_lock 將會一直等待,直到別的線程釋放了鎖。( 3) 修改完成后,再調用 pthread_mutex_unlock (&mutex) 釋放鎖。釋放后,別的等待鎖的線程將會被喚醒18、分析下面兩條指令的作用,并分析基址

22、寄存器的變化有什么不同?LDMIASTMIAR0!,R2-R9R1,R2-R9LDMIA R0!,R2-R9 (將 R0 指向的單元中數(shù)據(jù)讀出到 R2R9 中)加載數(shù)據(jù)到 R2R9 ,由于存在!最后的地址寫入 基址寄存器STMIA R1,R2-R9 保存 R2R9 的數(shù)據(jù)到 R1 指向的地址,基址寄存器的數(shù)據(jù)不變19、請閱讀如下指令段,并分析這段指令的功能MOVMOVLOOP: LDRLDRMLASUBSBNER11,#20R10,#0R0,R8,#4R1,R9,#4R10,R0,R1,R10R11,R11,#1LOOPMOV R11,#20MOV R10,#0LOOP: LDR R0,R8,

23、#4LDR R1,R9,#4MLA R10,R0,R1,R10設定循環(huán)次數(shù)為 20 次初始化和為 0把以 R8+4 后為地址的內容加載到R0把以R9+4后為地址的內容加載到R1SUBS R11,R11,#1R11=R11-1R10=R0*R1+R10BNE LOOP減到 0 跳出循環(huán)20、編寫S3C2440X處理器的端口控制程序,實現(xiàn)在GPC5上輸出一周期為 50Hz的方波,要求利用C語言編寫主控制程序,匯編實現(xiàn)精確定時。若干 ms 的匯編延時程序如下:delayxms stmfd sp!,r11; sub r0,r0,#1 ;r0=r0-1 ldr r11,=1000loop2sub r11

24、,r11,#1cmp r11,#0x0bne loop2cmp r0,#0x0;將 r0 與 0比較bne delayxms ; 比較的結果不為 0,則繼續(xù)調用 delayxms ldmfd sp!,r11;mov pc,lr; 返回要求程序結構要完整。#include #defineGPCCON (*(volatile#defineGPCDAT (*(volatileunsignedlong*)0x56000020unsignedlong*)0x56000024extern void delayxms();int main()GPCCON=110;GPBDAT = 0x0; while(1)

25、GPCDAT |=15;delayxms(); delayxms();GPCDAT &=(15);delayxms();delayxms();Return 0;AREA asmfile, CODE, READONLY EXPORT delayxms delayxmsstmfd sp!,r11; sub r0,r0,#1 ;r0=r0-1 ldr r11,=1000loop2sub r11,r11,#1cmp r11,#0x0bne loop2cmp rO,#OxO;將 r0 與 0比較bne delayxms ; 比較的結果不為 0,則繼續(xù)調用 delayxms ldmfd sp!,r11;mov pc,lr; 返回ENDIMPORT mainarea Init,code,readonly entrycode32 *JSetup interrupt/exceptionvectors *startb Reset_HandlerUndefined_Handler b Undefined_HandlerSWI_Handler b SWI_HandlerPrefetch_handlerAbort_Handler b b Prefetch_handlerAbort_Handlernop IRQ_Handler

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論