1.背景
不同于一般形式的軟件編程,嵌入式系統(tǒng)編程建立在特定的硬件平臺(tái)上,勢(shì)必要求其編程語(yǔ)言具備較強(qiáng)的硬件直接操作能力。無(wú)疑,匯編語(yǔ)言具備這樣的特質(zhì)。但是,歸因于匯編語(yǔ)言開(kāi)發(fā)過(guò)程的復(fù)雜性,它并不是嵌入式系統(tǒng)開(kāi)發(fā)的一般選擇。而與之相比,C 語(yǔ)言--一種"高級(jí)的低級(jí)"語(yǔ)言,則成為嵌入式系統(tǒng)開(kāi)發(fā)的最佳選擇。筆者在嵌入式系統(tǒng)項(xiàng)目的開(kāi)發(fā)過(guò)程中,一次又一次感受到 C 語(yǔ)言的精妙,沉醉于 C 語(yǔ)言給嵌入式開(kāi)發(fā)帶來(lái)的便利。
UART 則完成 CPU 并行數(shù)據(jù)傳輸與 RS-232 串行數(shù)據(jù)傳輸?shù)霓D(zhuǎn)換,它可以在接收到[1~MAX_BUFFER]字節(jié)后向 CPU提出中斷,MAX_BUFFER 為 UART 芯片存儲(chǔ)接收到字節(jié)的最大緩沖區(qū)。
鍵盤(pán)控制器和顯示控制器則完成系統(tǒng)人機(jī)界面的控制。
以上提供的是一個(gè)較完備的嵌入式系統(tǒng)硬件架構(gòu),實(shí)際的系統(tǒng)可能包含更少的外設(shè)。之所以選擇一個(gè)完備的系統(tǒng),是為了后文更全面的討論嵌入式系統(tǒng) C 語(yǔ)言編程技巧的方方面面,所有設(shè)備都會(huì)成為后文的分析目標(biāo)。
CAD-UL 是適用于 x86 處理器的嵌入式應(yīng)用軟件開(kāi)發(fā)環(huán)境,它運(yùn)行在 Windows 操作系統(tǒng)之上,可生成 x86 處理器的目標(biāo)代碼并通過(guò) PC 機(jī)的 COM口(RS-232串口)或以太網(wǎng)口下載到目標(biāo)機(jī)上運(yùn)行,如圖 2。其駐留于目標(biāo)機(jī) FLASH 存儲(chǔ)器中的 monitor 程序可以監(jiān)控宿主機(jī) Windows 調(diào)試平臺(tái)上的用戶調(diào)試指令, 獲取 CPU寄存器的值及目標(biāo)機(jī)存儲(chǔ)空間、 I/O空間的內(nèi)容。