嵌入式系統的核心是由一個或幾個預先程式設計好以用來執行少數幾項任務的微處理器或者微控制器組成。下面是小編收集的嵌入式系統題庫,希望大家認真閱讀!
1:用C語言實現大小端的測試
Int CheckCpu()
{
union
{
int a;
char b;
}c;
c.a=1;
if(c.b==1)
printf(“小端”);
else printf(“大端”);
}
2:volatile的作用有哪些?
Volatile第一變數相當於告訴編譯器這個變數的值會隨時發生變化,每次使用之前都要去記憶體裡從新讀取它的值,並不要隨意針對它做優化,主要用在:
1:一箇中斷子程式中會訪問到的非自動變數;
2:多執行緒應用中被幾個執行緒共享的變數;
3:並行裝置的硬體暫存器。
3:C語言中static關鍵字的作用有哪些?
1:在函式體中,一個被宣告為靜態的變數在這個變數在呼叫過程中維持其值不變;
2:在模組內(但在函式體外),一個被宣告為靜態的變數,可以被這個模組內的所用函式使用,但不能被模組外的函式使用,它是一個本地的全域性變數;
3:在模組內,一個被宣告為靜態變數的`函式,智慧被這個模組內的函式呼叫;
4:static全域性變數與區域性變數的區別:static全域性變數只能被初始化一次,防止其他單元檔案中被引用;
5:static區域性變數與區域性變數的區別:static區域性變數只能被初始化一次,下一次依據上一次結果的值;
6:static函式與普通函式的區別:static在記憶體中只用一份,普通函式在每一次呼叫中維持一份拷貝。
4:請問下面三種變數的區別:
Int const *p : 指向常整型的指標;
Int *const p; 指向整型的常指標;
Int *const *p: 指向常整型的常指標;
5:在ARM系統中,在函式呼叫的時候,引數是通過哪種方式傳遞的。
當引數小於等於4的時候是通過r0~r3來進行傳遞的,當引數大於4的時候是通過壓棧的方式進行傳遞。
6:中斷與異常有何區別.
異常在處理的時候必須考慮與處理器的時鐘同步,實際上異常也稱為同步中斷,在處理器執行到因編譯錯誤而導致的錯誤指令時,或者在執行期間出現特殊錯誤,必須靠核心處理的時候,處理器就會產生一個異常;所謂中斷是指外部硬體產生的一個電訊號從CPU的中斷引腳進入,打斷CPU的執行。所謂異常是指軟體執行過程中發生了一些必須作出處理的事件,CPU自動產生一個陷入來打斷CPU的執行。
7:用預處理指令#define表示一年中有多少秒
#define SECONDS_PER_YEAR (60*60*24*365)UL
注意後面必須加UL,表示計算的結構是常整型。
8:簡述SPI,UART,I2C三種傳輸方式。
SPI:高速同步序列口,首發獨立,可同步進行
SPI介面主要應用在EEPROM,Flash,實時時鐘,A/D轉化器,數字訊號處理,是一種全雙工同步通訊匯流排,該介面一般使用四條線:序列時鐘線(sck),主出從入線,主入從出線,低電平有效地的從機選擇線。
I2C協議:是微控制器與其他晶片進行通訊的協議:1:只要求兩條匯流排線路,一條是序列時鐘線,一條是序列資料線; 2:通過軟體設定地址 3:是一個多主機匯流排,如果兩個或更多主機同時初始化資料傳送可通過沖突檢測和仲裁防止資料破壞; 4:I2C匯流排傳輸的是資料的總高位
UART:主要是由一個modem(調變解調器),可以將模擬訊號量轉化成數字訊號量。
9:中斷不能返回一個值,中斷不能傳遞引數。
10:嵌入式系統總要求使用者對變數或者暫存器進行位操作,給定一個整型變數a:
define BIT3 (oxo1<<3)
static int a ;
void set_bit3(void)
{
a|=BIT3;
}
void clear_bit3(void)
{
a&=~BIT3;
}
作為一個嵌入式程式設計師,這種程式是小菜一碟,至所以給出這個程式,是想規範大家寫程式方法,這裡主要是用到了一個巨集定義:BIT3 這樣的話就可以增加程式的可讀性
同時移植性也增強。
11:嵌入式系統中經常要求程式去訪問某特定記憶體的特點,在某工程中,要求設定一個絕對地址0x6799的整型變數的值為0xaa66.
Int *ptr;
ptr=(int*)0x67a9;
*ptr=aa66
12:引用和指標有什麼區別?
1:應用必須初始化,指標不必;
2:引用處畫化後不能改變,指標可以被改變;
3:不存在指向空值的引用,但存在指向空值的指標;
13:全域性變數與區域性變數在記憶體中是否有區別,是什麼區別?
全域性變數儲存在靜態資料庫,區域性變數儲存在堆疊;
14:寫出float,bool,int型別與零的比較,假設變數為X:
Int : if(x==0)
Float: if(x>0.0000001&&x<0.0000001)
Bool: if(x==false)
15:Intertnet採用哪種網路協議,該協議的主要層次結構?
TCP/IP協議
應用層/傳輸層/網路層/數字鏈路層/物理層。
16:IP地址有兩部分組成:網路號和主機號
17:程式的區域性變數儲存在(棧)中,全域性變數儲存於(靜態儲存區),動態申請資料儲存於(堆中);
18:編寫一個字串複製函式:strcpy(const char *str,const char *str1)
void strcpy(const *char str,const chat *str1)
{
if(*str1==’