一 嵌入式試題 記錄

2021-09-18 02:30:18 字數 3364 閱讀 8633

一、arm指令和thumb指令

在arm的體系結構中,可以工作在三種不同的狀態,一是arm狀態,二是thumb狀態及thumb-2狀態,三是除錯狀態。而arm狀態和thumb狀態可以直接通過某些指令直接切換,都是在執行程式,只不過指令長度不一樣而已;

arm狀態:arm處理器工作於32位指令的狀態,所有指令均為32位;

thumb狀態:arm執行16位指令的狀態,即16位狀態;

thumb-2狀態:這個狀態是arm7版本的arm處理器所具有的新的狀態,新的thumb-2核心技術兼有16位及32位指令,實現了更高的效能,更有效的功耗及更少地占用記憶體。總的來說,感覺這個狀態除了兼有arm和thumb的優點外,還在這兩種狀態上有所提公升,優化;

除錯狀態:處理器停機時進入除錯狀態。

也就是說:arm狀態,此時處理器執行32位的字對齊的arm指令;thumb狀態,此時處理器執行16位的,半字對齊的thumb指令。 

arm狀態和thumb狀態切換程式:

關於這個知識點還有幾個注意點:

另外,具有thumb-2技術的arm處理器也無需再arm狀態和thumb-2狀態間進行切換了,因為thumb-2具有32位指令功能。

二、c語言編譯過程中,volatile關鍵字和extern關鍵字分別在哪個階段起作用?

volatile應該是在編譯階段,extern在鏈結階段。

volatile關鍵字的作用是防止變數被編譯器優化,而優化是處於編譯階段,所以volatile關鍵字是在編譯階段起作用。

三、下面這段程式的執行結果?

nt main() ;

memcpy(a + 3,     a, 5);

for (int i =     0; i<10; i++){

printf("%d     ", a[i]);

return 0;

解答:0 1 2 0 1 5 6 7 8 9

首先看一下記憶體複製函式memcpy()函式的定義:

void * memcpy ( void * destination, const void * source, size_tnum );

將source指向的位址處的 num 個位元組 拷貝到 destination 指向的位址處。注意,是位元組。 

因為memcpy的最後乙個引數是需要拷貝的位元組的數目!乙個int型別佔據4個位元組!這樣的話,本題5位元組,實際上只能移動2個數字(往大的去)。如果要想達到將a位址開始的5個元素拷貝到a+3位址處,需要這麼寫:

memcpy(a + 3, a, 5*sizeof(int))

四、linux中的檔案/目錄許可權設定命令是什麼?

解答:chmod

五、簡述實時作業系統和非實時作業系統特點和區別。

解答:實時作業系統是保證在一定時間限制內完成特定功能的作業系統。實時作業系統有硬實時和軟實時之分,硬實時要求在規定的時間內必須完成操作,這是在作業系統設計時保證的;軟實時則只要按照任務的優先順序,盡可能快地完成操作即可;

實時性最主要的含義是:任務的最遲完成時間是可確認預知的;

六、什麼是嵌入式系統?嵌入式系統一般由哪幾部分構成?

嵌入式系統(embedded system),是一種「完全嵌入受控器件內部,為特定應用而設計的專用計算機系統」

由硬體層、中間層、系統軟體層和應用軟體層組成。

硬體層中包含嵌入式微處理器、儲存器(sdram、rom、flash等)、通用裝置介面和i/o介面(a/d、d/a、i/o等)。在一片嵌入式處理器基礎上新增電源電路、時鐘電路和儲存器電路,就構成了乙個嵌入式核心控制模組。其中作業系統和應用程式都可以固化在rom中。

硬體層與軟體層之間為中間層,也稱為硬體抽象層(hardware abstract layer,hal)或板級支援包(board support package,bsp),它將系統上層軟體與底層硬體分離開來,使系統的底層驅動程式與硬體無關,上層軟體開發人員無需關心底層硬體的具體情況,根據bsp 層提供的介面即可進行開發。該層一般包含相關底層硬體的初始化、資料的輸入/輸出操作和硬體裝置的配置功能。

bsp具有以下兩個特點:

硬體相關性:因為嵌入式實時系統的硬體環境具有應用相關性,而作為上層軟 件與硬體平台之間的介面,bsp需要為作業系統提供操作和控制具體硬體的方法。

作業系統相關性:不同的作業系統具有各自的軟體層次結構,因此,不同的作業系統具有特定的硬體介面形式。

bsp的另乙個主要功能是硬體相關的裝置驅動。硬體相關的裝置驅動程式的初始化通常是乙個從高到低的過程。儘管bsp中包含硬體相關的裝置驅動程式,但是這些裝置驅動程式通常不直接由bsp使用,而是在系統初始化過程中由bsp將他們與作業系統中通用的裝置驅動程式關聯起來,並在隨後的應用中由通用的裝置驅動程式呼叫,實現對硬體裝置的操作。與硬體相關的驅動程式是bsp設計與開發中另乙個非常關鍵的環節。

系統軟體層由實時多工作業系統(real-time operation system,rtos)、檔案系統、圖形使用者介面(graphic user inte***ce,gui)、網路系統及通用元件模組組成。rtos是嵌入式應用軟體的基礎和開發平台。

七、cortex-m3的處理器有那兩種工作模式和狀態?如何進行工作模式和狀態的切換?

arm狀態:32位,arm狀態執行字對齊的32位arm指令。thumb狀態,16位,執行半字對齊的16位指令。

用bx rn指令來進行兩種狀態的切換。

使用者(user)模式,系統(system)模式,一般中斷(irq)模式,快速中斷(fiq)模式,管理(supervisor)模式,中止(abort)模式,未定義指令終止(undefined)模式。

八、stm32共有那幾種基本時鐘訊號

在stm32中,有五個時鐘源,為hsi、hse、lsi、lse、pll。

①、hsi是高速內部時鐘,rc振盪器,頻率為8mhz。

②、hse是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率範圍為4mhz~16mhz。

③、lsi是低速內部時鐘,rc振盪器,頻率為40khz。

④、lse是低速外部時鐘,接頻率為32.768khz的石英晶體。

⑤、pll為鎖相環倍頻輸出,其時鐘輸入源可選擇為hsi/2、hse或者hse/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72mhz。

九、簡述dma控制器的基本功能;

直接儲存器訪問用來提供在外設和儲存器之間或者儲存器和儲存器之間的高速資料傳輸。無須cpu的干預,通過dma資料可以快速地移動。這就節省了cpu的資源來做其他操作。

嵌入式筆試題

考查逗號表示式 main 這段程式的輸出是 a c 3 d 3 b c 5 d 3 c c 3 d 5 d c 5 d 5 應該選c。c語言提供一種特殊的 運算子,逗號運算子,優先級別最低,它將兩式聯接起來,如 3 5,6 8 稱為逗號表示式,其求解過程先表示式1,後表示式2,整個表示式值是表示式2...

嵌入式 筆試題

指出下列程式的執行結果 int main memcpy a 3,a,5 for int i 0 i 10 i return 0 解答 0 1 2 0 1 5 6 7 8 9 注意 1 陣列a作為引數時,轉化為普通指標 a 3 按照char長度計算 2 memcpy的原型是 void memcpy v...

嵌入式學習記錄

1.volatile volatile是宣告該變數是易變的,編譯器把常用的值放在暫存器裡了,所以用的時候,直接在暫存器裡取上一次用的值了 可是因為這個變數是易變的,所以可能這有暫存器的優化處理會帶來錯誤,因此加上volatile告訴編譯器這個變數是易變的,必須每次使用都即時的去改變量的記憶體中讀取,...