- 相關(guān)推薦
2017年嵌入式系統題庫
嵌入式系統的核心是由一個(gè)或幾個(gè)預先編程好以用來(lái)執行少數幾項任務(wù)的微處理器或者單片機組成。下面是小編收集的嵌入式系統題庫,希望大家認真閱讀!
1:用C語(yǔ)言實(shí)現大小端的測試
Int CheckCpu()
{
union
{
int a;
char b;
}c;
c.a=1;
if(c.b==1)
printf(“小端”);
else printf(“大端”);
}
2:volatile的作用有哪些?
Volatile第一變量相當于告訴編譯器這個(gè)變量的值會(huì )隨時(shí)發(fā)生變化,每次使用之前都要去內存里從新讀取它的值,并不要隨意針對它做優(yōu)化,主要用在:
1:一個(gè)中斷子程序中會(huì )訪(fǎng)問(wèn)到的非自動(dòng)變量;
2:多線(xiàn)程應用中被幾個(gè)線(xiàn)程共享的變量;
3:并行設備的硬件寄存器。
3:C語(yǔ)言中static關(guān)鍵字的作用有哪些?
1:在函數體中,一個(gè)被聲明為靜態(tài)的變量在這個(gè)變量在調用過(guò)程中維持其值不變;
2:在模塊內(但在函數體外),一個(gè)被聲明為靜態(tài)的變量,可以被這個(gè)模塊內的所用函數使用,但不能被模塊外的函數使用,它是一個(gè)本地的全局變量;
3:在模塊內,一個(gè)被聲明為靜態(tài)變量的函數,智能被這個(gè)模塊內的函數調用;
4:static全局變量與局部變量的區別:static全局變量只能被初始化一次,防止其他單元文件中被引用;
5:static局部變量與局部變量的區別:static局部變量只能被初始化一次,下一次依據上一次結果的值;
6:static函數與普通函數的區別:static在內存中只用一份,普通函數在每一次調用中維持一份拷貝。
4:請問(wèn)下面三種變量的區別:
Int const *p : 指向常整型的指針;
Int *const p; 指向整型的常指針;
Int *const *p: 指向常整型的常指針;
5:在A(yíng)RM系統中,在函數調用的時(shí)候,參數是通過(guò)哪種方式傳遞的。
當參數小于等于4的時(shí)候是通過(guò)r0~r3來(lái)進(jìn)行傳遞的,當參數大于4的時(shí)候是通過(guò)壓棧的方式進(jìn)行傳遞。
6:中斷與異常有何區別.
異常在處理的時(shí)候必須考慮與處理器的時(shí)鐘同步,實(shí)際上異常也稱(chēng)為同步中斷,在處理器執行到因編譯錯誤而導致的錯誤指令時(shí),或者在執行期間出現特殊錯誤,必須靠?jì)群颂幚淼臅r(shí)候,處理器就會(huì )產(chǎn)生一個(gè)異常;所謂中斷是指外部硬件產(chǎn)生的一個(gè)電信號從CPU的中斷引腳進(jìn)入,打斷CPU的運行。所謂異常是指軟件運行過(guò)程中發(fā)生了一些必須作出處理的事件,CPU自動(dòng)產(chǎn)生一個(gè)陷入來(lái)打斷CPU的運行。
7:用預處理指令#define表示一年中有多少秒
#define SECONDS_PER_YEAR (60*60*24*365)UL
注意后面必須加UL,表示計算的結構是常整型。
8:簡(jiǎn)述SPI,UART,I2C三種傳輸方式。
SPI:高速同步串行口,首發(fā)獨立,可同步進(jìn)行
SPI接口主要應用在EEPROM,Flash,實(shí)時(shí)時(shí)鐘,A/D轉化器,數字信號處理,是一種全雙工同步通訊總線(xiàn),該接口一般使用四條線(xiàn):串行時(shí)鐘線(xiàn)(sck),主出從入線(xiàn),主入從出線(xiàn),低電平有效地的從機選擇線(xiàn)。
I2C協(xié)議:是單片機與其他芯片進(jìn)行通訊的協(xié)議:1:只要求兩條總線(xiàn)線(xiàn)路,一條是串行時(shí)鐘線(xiàn),一條是串行數據線(xiàn); 2:通過(guò)軟件設定地址 3:是一個(gè)多主機總線(xiàn),如果兩個(gè)或更多主機同時(shí)初始化數據傳送可通過(guò)沖突檢測和仲裁防止數據破壞; 4:I2C總線(xiàn)傳輸的是數據的總高位
UART:主要是由一個(gè)modem(調制解調器),可以將模擬信號量轉化成數字信號量。
9:中斷不能返回一個(gè)值,中斷不能傳遞參數。
10:嵌入式系統總要求用戶(hù)對變量或者寄存器進(jìn)行位操作,給定一個(gè)整型變量a:
define BIT3 (oxo1<<3)
static int a ;
void set_bit3(void)
{
a|=BIT3;
}
void clear_bit3(void)
{
a&=~BIT3;
}
作為一個(gè)嵌入式程序員,這種程序是小菜一碟,至所以給出這個(gè)程序,是想規范大家寫(xiě)程序方法,這里主要是用到了一個(gè)宏定義:BIT3 這樣的話(huà)就可以增加程序的可讀性
同時(shí)移植性也增強。
11:嵌入式系統中經(jīng)常要求程序去訪(fǎng)問(wèn)某特定內存的特點(diǎn),在某工程中,要求設定一個(gè)絕對地址0x6799的整型變量的值為0xaa66.
Int *ptr;
ptr=(int*)0x67a9;
*ptr=aa66
12:引用和指針有什么區別?
1:應用必須初始化,指針不必;
2:引用處畫(huà)化后不能改變,指針可以被改變;
3:不存在指向空值的引用,但存在指向空值的指針;
13:全局變量與局部變量在內存中是否有區別,是什么區別?
全局變量存儲在靜態(tài)數據庫,局部變量存儲在堆棧;
14:寫(xiě)出float,bool,int類(lèi)型與零的比較,假設變量為X:
Int : if(x==0)
Float: if(x>0.0000001&&x<0.0000001)
Bool: if(x==false)
15:Intertnet采用哪種網(wǎng)絡(luò )協(xié)議,該協(xié)議的主要層次結構?
TCP/IP協(xié)議
應用層/傳輸層/網(wǎng)絡(luò )層/數字鏈路層/物理層。
16:IP地址有兩部分組成:網(wǎng)絡(luò )號和主機號
17:程序的局部變量存儲在(棧)中,全局變量存儲于(靜態(tài)存儲區),動(dòng)態(tài)申請數據存儲于(堆中);
18:編寫(xiě)一個(gè)字符串復制函數:strcpy(const char *str,const char *str1)
void strcpy(const *char str,const chat *str1)
{
if(*str1==’\0’) return;
char *sp1,*sp2;
sp1= str;
sp2=str1;
while(*sp2!=’\0’)
{
*sp1=sp2;
sp1++;
sp2++;
}
}
19:編寫(xiě)一個(gè)函數實(shí)現字符串翻轉 void rechange(char *str)
void rechange(char *str)
{
Int len;
char t;
len=strlen(str);
for(int i=0;len/2;i++)
{
t=str[i];
str[i]=str[len-i-1];
str[len-i-1]=t;
}
}
20:編寫(xiě)一個(gè)函數實(shí)現字符串比較 int strcmp(char *str1,char *str2),相等返回1,不相等返回0:
int strcmp(char *str1,char *str2)
{
if(*str1==‘\0’||*str2==’\0’) return;
while(*str1!=’\0’&&*str2!=’\0’&&*str1==*str2)
{
str1++;
str2++;
}
if(*str1==*str2)
return 1;
else return 0;
}
}
21:進(jìn)程和線(xiàn)程的區別:
1:調度:線(xiàn)程作為調度和分配的基本單元,進(jìn)程作為擁有資源的基本單位;
2:并發(fā)性:不僅進(jìn)程可以并發(fā)執行,同一進(jìn)程內的線(xiàn)程也可以并發(fā)執行。
3:擁有資源:進(jìn)程是擁有資源的基本獨立單元,線(xiàn)程不擁有資源,但可以訪(fǎng)問(wèn)進(jìn)程內的資源;
4:在創(chuàng )建或撤銷(xiāo)線(xiàn)程時(shí),由于系統都要為之分配和回收內存資源,導致系統的開(kāi)銷(xiāo)明顯大于創(chuàng )建或撤銷(xiāo)線(xiàn)程時(shí)的開(kāi)銷(xiāo)。
【嵌入式系統題庫】相關(guān)文章:
嵌入式系統組成10-20
嵌入式系統介紹01-13
嵌入式系統歷史發(fā)展01-13
嵌入式系統現狀發(fā)展08-16
嵌入式操作系統與嵌入式處理器08-15
嵌入式系統的定義與發(fā)展歷史06-26
嵌入式系統的基本概念01-12
嵌入式系統的應用領(lǐng)域01-12