C語言嵌入式系統編程修鍊之背景篇

來源:互聯網
上載者:User
http://www.2ed.cn/Article-150-21922.shtml

不同於一般形式的軟體編程,嵌入式系統編程建立在特定的硬體平台上,勢必要求其程式設計語言具備較強的硬體直接操作能力。無疑,組合語言具備這樣的特質。但是,歸因於組合語言開發過程的複雜性,它並不是嵌入式系統開發的一般選擇。而與之相比,C語言--一種"進階的低級"語言,則成為嵌入式系統開發的最佳選擇。筆者在嵌入式系統項目的開發過程中,一次又一次感受到C語言的精妙,沉醉於C語言給嵌入式開發帶來的便利。

  圖1給出了本文的討論所基於的硬體平台,實際上,這也是大多數嵌入式系統的硬體平台。它包括兩部分:

  (1) 以通用處理器為中心的協議處理模組,用於網路控制協議的處理;

  (2) 以數位訊號處理器(DSP)為中心的訊號處理模組,用於調製、解調和數/模訊號轉換。

  本文的討論主要圍繞以通用處理器為中心的協議處理模組進行,因為它更多地牽涉到具體的C語言編程技巧。而DSP編程則重點關注具體的數字訊號處理演算法,主要涉及通訊領域的知識,不是本文的討論重點。

  著眼於討論普遍的嵌入式系統C編程技巧,系統的協議處理模組沒有選擇特別的CPU,而是選擇了眾所周知的CPU晶片--80186,每一位學習過《微機原理》的讀者都應該對此晶片有一個基本的認識,且對其指令集比較熟悉。80186的字長是16位,可以定址到的記憶體空間為1MB,只有真實位址模式。C語言編譯產生的指標為32位(雙字),高16位為段地址,低16位為段內編譯,一段最多64KB。


圖1 系統硬體架構

  協議處理模組中的FLASH和RAM幾乎是每個嵌入式系統的必備裝置,前者用於儲存程式,後者則是程式運行時指令及資料的存放位置。系統所選擇的FLASH和RAM的位寬都為16位,與CPU一致。

  即時鐘晶片可以為系統定時,給出當前的年、月、日及具體時間(小時、分、秒及毫秒),可以設定其經過一段時間即向CPU提出中斷或設定警示時間到來時向CPU提出中斷(類似鬧鐘功能)。

  NVRAM(非易失去性RAM)具有掉電不遺失資料的特性,可以用於儲存系統的設定資訊,譬如網路通訊協定參數等。在系統掉電或重新啟動後,仍然可以讀取先前的設定資訊。其位寬為8位,比CPU字長小。文章特意選擇一個與CPU字長不一致的儲存晶片,為後文中一節的討論創造條件。

  UART則完成CPU並行資料轉送與RS-232串列資料轉送的轉換,它可以在接收到[1~MAX_BUFFER]位元組後向CPU提出中斷,MAX_BUFFER為UART晶片儲存接收到位元組的最大緩衝區。

  鍵盤控制器和顯示控制器則完成系統人機介面的控制。

  以上提供的是一個較完備的嵌入式系統硬體架構,實際的系統可能包含更少的外設。之所以選擇一個完備的系統,是為了後文更全面的討論嵌入式系統C語言編程技巧的方方面面,所有裝置都會成為後文的分析目標。

  嵌入式系統需要良好的軟體開發環境的支援,由於嵌入式系統的目標機資源受限,不可能在其上建立龐大、複雜的開發環境,因而其開發環境和目標運行環境相互分離。因此,嵌入式應用軟體的開發方式一般是,在宿主機(Host)上建立開發環境,進行應用程式編碼和交叉編譯,然後宿主機同目標機(Target)建立串連,將應用程式下載到目標機上進行交叉調試,經過調試和最佳化,最後將應用程式固化到目標機中實際運行。

  CAD-UL是適用於x86處理器的嵌入式應用軟體開發環境,它運行在Windows作業系統之上,可產生x86處理器的目標代碼並通過PC機的COM口(RS-232串口)或乙太網路口下載到目標機上運行,2。其駐留於目標機FLASH儲存空間中的monitor程式可以監控宿主機Windows調試平台上的使用者調試指令,擷取CPU寄存器的值及目標機儲存空間、I/O空間的內容。


圖2 交叉開發環境

  後續章節將從軟體架構、記憶體操作、螢幕操作、鍵盤操作、效能最佳化等多方面闡述C語言嵌入式系統的編程技巧。軟體架構是一個宏觀概念,與具體硬體的聯絡不大;記憶體操作主要涉及系統中的FLASH、RAM和NVRAM晶片;螢幕操作則涉及顯示控制器和即時鐘;鍵盤操作主要涉及鍵盤控制器;效能最佳化則給出一些具體的減小程式時間、空間消耗的技巧。

  在我們的修鍊旅途中將經過25個關口,這些關口主分為兩類,一類是技巧型,有很強的適用性;一類則是常識型,在理論上有些意義。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.