本書分為兩大部分
第1部分-基礎篇(第1~8章):
包括Linux系統基本使用方法與其主要開發工具、檔案讀寫、多工機制、網路通訊端程式設計、模組與裝置驅動、嵌入式Linux系統的軟體結構、GUI程式設計初步等。
第2部分-實驗篇(第9~21章):
以美國德州儀器公司的卡片式電腦Beagle Bone為實驗物件,在此基礎上進行嵌入式Linux開發,按照從底層基本系統建立到上層應用軟體的移植和撰寫。
內容包括實驗系統介紹、嵌入式系統開發實驗環境架設、BootLoader 的編譯和啟動裝置的製作、核心設定和編譯、root 檔案系統的建置、圖形使用者介面、音訊介面程式設計、嵌入式系統中的I/O介面驅動、觸控式螢幕移植、Qt/Embedded移植、MPlayer移植、GTK+移植、即時作業系統RTEMS。
適用於:
可作為電子資訊、通訊、自動化等專業相關課程教材,也可供相關領域工程技術人員學習參考。
※本書範例程式及各章練習參考解答
請至上奇資訊網站下載http://www.grandtech.info
商品特色
超廣度/自由/穩定/高效應用開發系統-嵌入式Linux
◆ 本書介紹基於嵌入式Linux系統之軟體及開發方法。
◆ 重點選取多工程式設計、網路通訊、裝置驅動等數個開發方面介紹。
◆ 強調各種工具的使用,不僅限於軟體開發,亦有能在其他場域發揮相當大助力的利用。
作者序
【前言】
嵌入式系統幾乎是伴隨著微處理器同時發展的。根據“維基百科”介紹,誕生於20世紀60年代的Apollo Guidance Computer被認為是最早的嵌入式系統之一。自進入21世紀以來,“嵌入式”在電腦領域已成為持續熱門的話題。與通用電腦類似,嵌入式系統由軟體和硬體組成。隨著嵌入式處理器效能的不斷加強,許多應用系統的即時性已經不成問題,越來越多的嵌入式系統開始直接使用通用電腦系統的軟體。
舉例來說,英國的樹莓派基金會採用博通SoC處理器,開發出一系列的樹莓派產品。Pi Zero是主頻為700MHz的MHz ARM1176jzf-s核心,價格定位在5美金;而在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核心的編譯和root檔案系統的製作。至此,一個完全由原始程式打造的基本Linux系統已經建立,它是後續實驗的基礎。
第14章、第15章學習嵌入式Linux環境下的程式開發方法,其中包含圖形介面程式設計和音訊介面程式設計。在實驗過程中應建立軟體層次的概念。
第16章學習Linux系統中簡單裝置驅動程式的撰寫。
第17~20章安排了一些軟體移植實驗,從簡單的觸控式螢幕函數庫到較為複雜的GTK+圖形函數庫。透過以上逐層遞進的實驗,可以掌握在嵌入式平台上實現一種應用系統的方法。
鑑於即時作業系統在嵌入式應用中的地位,第21章介紹一款即時作業系統RTEMS在嵌入式平台上移植的過程。
實驗篇的前3章為建立嵌入式Linux實驗環境做初步準備。後續內容均可在此基礎上以實際的應用形式實現,例如多處理程序的資料獲取與重播、多執行緒的圖形應用等。
本書假設讀者系統地學習過C語言,並對Linux作業系統有初步的認識。針對目前嵌入式系統的應用特點,本書重點選取了多工程式設計、網路通訊、裝置驅動等幾個開發方面介紹。書中沒有使用過多的C語言程式設計技巧,而注重於功能的實現。本書強調各種工具的使用。一些工具並不僅限於軟體開發,在其他場合也能造成相當大的幫助作用。例如版本控制系統,在撰寫文稿、專案協作等
工作中都是非常方便的工具。希望這些工具的介紹能對讀者有所幫助。
限於筆者的知識水準和認知能力,書中一定存在不少錯誤及不當之處,懇請同行專家及讀者批評指正。
【前言】
嵌入式系統幾乎是伴隨著微處理器同時發展的。根據“維基百科”介紹,誕生於20世紀60年代的Apollo Guidance Computer被認為是最早的嵌入式系統之一。自進入21世紀以來,“嵌入式”在電腦領域已成為持續熱門的話題。與通用電腦類似,嵌入式系統由軟體和硬體組成。隨著嵌入式處理器效能的不斷加強,許多應用系統的即時性已經不成問題,越來越多的嵌入式系統開始直接使用通用電腦系統的軟體。
舉例來說,英國的樹莓派基金會採用博通SoC處理器,開發出一系列的樹莓派產品。Pi Zero是主頻為700MHz的MHz ARM1176jzf-s核心,價格定位在...
目錄
PART 1 基礎篇
Chapter 01 Linux系統的基本使用方法
1.1 Linux系統的使用環境
1.2 命令列工作方式
1.3 正規表示法
1.4 與開發相關的常用指令
1.5 文字編輯工具
本章練習
本章參考資源
Chapter 02 Linux系統的主要開發工具
2.1 gcc 工具鏈
2.2 程式分析與轉換工具
2.3 GNU Make
2.4 開放原始碼軟體的移植
2.5 偵錯工具
2.6 版本控制系統
2.7 合理地組織程式
2.8 交換編譯工具鏈的製作
本章練習
本章參考資源
Chapter 03 檔案讀寫
3.1 檔案系統的概念
3.2 檔案與目錄
3.3 檔案描述符號
3.4 標準I/O函數庫的檔案操作
本章練習
本章參考資源
Chapter 04 多工機制
4.1 了解處理程序的概念
4.2 處理程序間的資料交換
4.3 守護行程
4.4 執行緒——輕量級處理程序
4.5 執行緒的競爭與同步頭處理程序
本章練習
本章參考資源
Chapter 05 網路通訊端程式設計
5.1 通訊端API
5.2 TCP網路程式分析
5.3 TCP伺服器程式設計
5.4 簡單的資料流程對話
5.5 多工資料流程對話
5.6 以資料封包為基礎的對話程式
本章練習
本章參考資源
Chapter 06 模組與裝置驅動
6.1 裝置驅動程式簡介
6.2 建置和執行模組
6.3 模組的結構
6.4 字元裝置驅動程式
6.5 裝置驅動程式的使用
6.6 偵錯技術
6.7 硬體管理與中斷處理
6.8 核心的定時
本章練習
本章參考資源
Chapter 07 嵌入式Linux系統開發
7.1 啟動載入程式
7.2 核心設定
7.3 裝置驅動程式
7.4 嵌入式裝置的檔案系統
7.5 圖形化使用者介面(GUI)
7.6 頁框緩衝
Chapter 08 GUI程式設計初步
8.1 基本元件介紹
8.2 畫圖區
8.3 介面版面配置方法
8.4 GTK+介面設計工具
本章練習
本章參考資源
PART 2 實驗篇
Chapter 09 實驗系統介紹
9.1 實驗系統性能概括
9.2 軟體
9.3 實驗系統架設
Chapter 10 嵌入式系統開發實驗
10.1 實驗目的
10.2 嵌入式系統開發過程
10.3 實驗報告要求
Chapter 11 啟動載入器
11.1 實驗目的
11.2 BootLoader
11.3 實驗內容
11.4 實驗報告要求
Chapter 12 核心設定和編譯
12.1 實驗目的
12.2 相關知識
12.3 編譯核心
12.4 實驗內容
12.5 實驗報告要求
Chapter 13 root檔案系統的建置
13.1 實驗目的
13.2 Linux檔案系統的類型
13.3 檔案系統的製作
13.4 實驗內容
13.5 實驗報告要求
Chapter 14 圖形使用者介面
14.1 實驗目的
14.2 原理概述
14.3 實驗內容
14.4 實驗報告要求
Chapter 15 音訊介面程式設計
15.1 實驗目的
15.2 介面介紹
15.3 應用軟體設計
15.4 實驗內容
15.5 實驗報告要求
Chapter 16 嵌入式系統中的I/O介面驅動
16.1 實驗目的
16.2 介面電路介紹
16.3 I/O通訊埠地址對映
16.4 LED控制
16.5 實驗內容
16.6 實驗報告要求
Chapter 17 觸控式螢幕移植
17.1 實驗目的
17.2 Linux系統的觸控式螢幕支援
17.3 實驗內容
17.4 實驗報告要求
Chapter 18 Qt/Embedded移植
18.1 實驗目的
18.2 Qt/Embedded 介紹
18.3 實驗要求
18.4 實驗報告要求
Chapter 19 MPlayer移植
19.1 實驗目的
19.2 軟體介紹
19.3 編譯準備
19.4 編譯
19.5 擴充功能
19.6 實驗報告要求
Chapter 20 GTK+移植
20.1 實驗目的
20.2 GTK+ 的背景
20.3 GTK+ 函數庫的相依關係
20.4 編譯過程
20.5 測試
20.6 實驗要求
20.7 實驗報告要求
Chapter 21 即時作業系統RTEMS
21.1 實驗目的
21.2 即時作業系統RTEMS 簡介
21.3 編譯RTEMS
21.4 啟用RTEMS終端
21.5 實驗報告要求
PART 1 基礎篇
Chapter 01 Linux系統的基本使用方法
1.1 Linux系統的使用環境
1.2 命令列工作方式
1.3 正規表示法
1.4 與開發相關的常用指令
1.5 文字編輯工具
本章練習
本章參考資源
Chapter 02 Linux系統的主要開發工具
2.1 gcc 工具鏈
2.2 程式分析與轉換工具
2.3 GNU Make
2.4 開放原始碼軟體的移植
2.5 偵錯工具
2.6 版本控制系統
2.7 合理地組織程式
2.8 交換編譯工具鏈的製作
本章練習
本章參考資源
Chapter 03 檔案讀寫
3.1 檔案系統的概念
3.2 檔案與目錄
3.3 檔案描述符號
3.4 標準I/O函數庫的檔案...