嵌入式繫統幾乎是伴隨著微處理器同時發展的。根據“維基百科”介紹,誕生於20世紀60年代的阿波羅制導計算機被認為是最早的嵌入式繫統之一。自進入21世紀以來,“嵌入式”在計算機領域已成為持續熱門的話題。與通用計算機類似,嵌入式繫統由軟件和硬件組成。隨著嵌入式處理器性能的不斷提高,許多應用繫統的實時性已經不成問題,越來越多的嵌入式繫統開始直接使用通用計算機繫統的軟件。
例如,英國的樹莓派基金會采用博通SoC處理器,開發出一繫列的樹莓派產品。Pi Zero是主頻為700MHz的MHz ARM1176jzf-s核,價格定位;而在2017年年初發布的Pi 3 B+版本,更是具有4核64位CORTEX-A53(ARMv8指令集)的處理器,主頻高達1.2GHz,與普通的筆記本電腦的性能相差無幾,價格也不過三。它們都具有高性能的VC-4的圖像(Graphics Processing Unit,GPU),可以流暢地運行一些圖形桌面繫統,播放高清視頻。
在這樣的背景下,采用通用計算機繫統軟件開發嵌入式繫統,不僅大大縮短了開發周期、提高了開發效率,繫統的可靠性也得到了提升。
在眾多的軟件中,以Linux為核心的操作繫統以及大量的開源軟件成為許多嵌入式繫統的首選。Linux世界提供大量的自由軟件,為開發人員提供了廣泛的選擇空間,同時也能得到許多無私的幫助。
本書基於嵌入式Linux繫統,介紹其軟件開發方法,重點介紹多任務、網絡和設備驅動的編程。
本書分為基礎篇和實驗篇兩個部分。
第1部分 基礎篇
第1章介紹Linux繫統的基本使用方法,重點介紹與嵌入式繫統開發相關的命令。
第2章介紹Linux繫統的主要開發工具,包括編譯工具、GNU Make和版本控制繫統的使用。
本章最後一節介紹了交叉編譯工具的制作過程,供有興趣的讀者參考。
第3章介紹文件讀寫,重點介紹面向文件描述符的基本繫統功能調用,它們是下面幾章的基礎。
第4章介紹多任務機制,重點介紹在Linux繫統中實現多任務的兩種主要形式(進程和多線程),以及在多任務程序設計中的一些基礎問題。
第5章介紹網絡套接字編程,重點介紹以套接字為基礎的網絡通信程序的基本編程方法。
第6章介紹模塊與設備驅動,以個人計算機繫統上的一個簡單設備為模型,比較繫統地介紹了Linux繫統中字符設備驅動程序的開發方法。雖然研究對像是通用計算機繫統中的一個設備,但其研究方法同樣適用於嵌入式Linux中的設備。
第7章介紹嵌入式Linux繫統的軟件結構,概括地討論了嵌入式繫統的BootLoader、內核布局、文件繫統和圖形接口幾個方面的問題。
第8章簡要介紹基於GTK+庫的圖形接口應用編程基礎,通過介紹一些常用組件的功能和界面設計方法,幫助讀者了解Linux繫統中圖形界面的編程風格。在移植了圖形庫的嵌入式Linux繫統中,可以比較方便地開發圖形化應用程序。
第2部分 實驗篇
實驗篇以美國德州儀器公司的卡片式計算機Beagle Bone為實驗對像,在此基礎上進行嵌入式Linux開發,按照從底層基本繫統建立到上層應用軟件的移植和編寫的順序加以組織。
第9章是實驗繫統基本介紹。
第10章介紹嵌入式繫統開發實驗環境搭建。
第11章介紹BootLoader的編譯和啟動設備的制作。
第12章、第13章分別完成Linux內核的編譯和根文件繫統的制作。至此,一個完全由源碼打造的基本Linux繫統已經建立,它是後續實驗的基礎。
第14章、第15章學習嵌入式Linux環境下的程序開發方法,其中包括圖形界面程序設計和音頻接口程序設計。在實驗過程中應建立軟件層次的概念。
第16章學習Linux繫統中簡單設備驅動程序的編寫。
第17~20章安排了一些軟件移植實驗,從簡單的觸摸屏庫到較為復雜的GTK+圖形庫。通過以上逐層遞進的實驗,可以掌握在嵌入式平臺上實現一種應用繫統的方法。
鋻於實時操作繫統在嵌入式應用中的地位,第21章介紹一款實時操作繫統RTEMS在嵌入式平臺上移植的過程。
實驗篇的前3章為建立嵌入式Linux實驗環境做初步準備。後續內容均可在此基礎上以具體的應用形式實現,例如多進程的數據采集與回放、多線程的圖形應用等。
本書假定讀者繫統地學習過C語言,並對Linux操作繫統有初步的認識。針對當前嵌入式繫統的應用特點,本書重點選取了多任務程序設計、網絡通信、設備驅動等幾個開發方面進行介紹。書中沒有使用過多的C語言編程技巧,而著重於功能的實現。本書強調各種工具的使用。一些工具並不僅限於軟件開發,在其他場合也能起到極大的幫助作用。例如版本控制繫統,在撰寫文稿、項目協作等工作中都是非常方便的工具。希望這些工具的介紹能對讀者有所幫助。
本書內容作為“嵌入式繫統及實驗”課程的教材,已在南京大學電子信息類本科教學中實踐多年。就筆者的經驗來說,基礎部分和實驗部分每周各用3個課時是一個可行的方案。本書為任課教師免費提供配套電子課件、習題參考答案、程序代碼等教學資源,請登錄華信教育資源網(http://www.hxedu.com.cn)注冊下載,也可聯繫編輯索取。
限於筆者的知識水平和認知能力,書中肯定存在不少錯誤及不當之處,懇請同行專家及讀者批評指正。
編 著 者