《嵌入式Linux系統開發全程解析》是2014年5月1日電子工業出版社出版的圖書,作者是韓超。
基本介紹
- 書名:嵌入式Linux系統開發全程解析
- 類型:計算機與網際網路
- 出版日期:2014年5月1日
- 語種:簡體中文
- ISBN:7121228882
- 作者:韓超 等
- 出版社:電子工業出版社
- 頁數:426頁
- 開本:16
- 品牌:電子工業出版社
內容簡介,作者簡介,圖書目錄,序言,
內容簡介
《嵌入式Linux系統開發全程解析》是一本全面介紹嵌入式Linux開發的專著,書中涵蓋了程式生成工具、調試工具、引導載入器、Linux系統結構、Linux核心、驅動程式、用戶空間編程、用戶空間中間件等方面的內容。本書內容前後照應、貼近實踐,且有較強的延伸型,有利於讀者建立嵌入式Linux開發系統化的知識結構和技術理念。本書不僅適用於嵌入式Linux的工程師增強能力,也適用於其他領域的技術人員了解嵌入式Linux。
《嵌入式Linux系統開發全程解析》內容豐富,不僅適用於嵌入式Linux的工程師增強能力,也適用於其他領域的技術人員了解嵌入式Linux。
作者簡介
韓超是大陸嵌入式系統技術專家、著名工程師、架構師,嵌入式Linux相關技術在大陸發展十餘年的技術領航人之一。主要從事相關技術研發方向包括:Linux軟體平台、嵌入式Linux板級平台、GUI系統和套用、移動多媒體。對嵌入式Linux的技術把握以實用技術為主,以作業系統本身為輔,重視在系統使用特定硬體,核心與用戶空間的互動,適用於嵌入式Linux的軟體工程等方面。
圖書目錄
第1章Linux的開發環境
1.1開發環境概述
1.2串口終端工具
1.3TFTP
1.4NFS
1.5SAMBA共享
1.6Linux系統的軟體發布協定
第2章程式生成和GCC
2.1程式生成工具概述
2.1.1GUN的GCC工具
2.1.2ELF檔案格式
2.2 GCC工具的使用
2.2.1示例工程
2.2.2編譯、彙編和連線
2.2.3預處理和彙編
2.2.4歸檔工具(ar)和靜態庫
2.2.5動態庫
2.2.6ELF格式檔案信息讀取(readelf)
2.2.7符號信息工具(nm)
2.2.8字元串工具(strings)
2.2.9去除符號(strip)
2.2.10目標檔案複製(objcopy)
2.2.11目標檔案信息(objdump)
第3章工程管理和make機制
3.1 make工具
3.2 Makefile的基本原則
3.2.1Makefile的變數
3.2.2 Makefile的條件執行
3.2.3Makefile中的函式
3.3Makefile使用示例
3.3.1簡單的Makefile
3.3.2依賴關係實例
3.3.3隱含規則的編譯實例
3.3.4指定依賴的編譯實例
3.4自動生成Makefile
3.4.1autoconf工具介紹
3.4.2 automake工具介紹
3.4.3其他工具
3.4.4自動生成Makefile的流程
第4章調試和GDB
4.1嵌入式系統的調試技術
4.1.1調試技術
4.1.2硬體調試
4.1.3代碼調試
4.2 Linux的基本信息
4.3GDB調試和遠程調試
4.4 GDB的安裝與使用
4.4.1使用gdbstub實現調試用戶程式
4.4.2GDB和GDB Server的編譯
4.5使用gdbserver調試
第5章Linux系統的結構
5.1 Linux作業系統基本概念
5.1.1Linux的進程信息
5.1.2 Linux的檔案系統和檔案信息
5.1.3檔案的另外三位屬性
5.2Linux系統的組成和構建
5.2.1Linux系統的組成
5.2.2嵌入式Linux的構建
5.3 Linux系統的啟動流程
第6章BootLoader及其構建
6.1嵌入式Linux的BootLoader
6.1.1 BootLoader的開發要點
6.1.2 BootLoader的結構
6.2U—Boot的使用
6.2.1U—Boot概述
6.2.2U—Boot的結構
6.2.3U—Boot的生成
6.2.4 U—Boot的啟動流程
6.3U—Boot的命令
6.3.1U—Boot命令概述
6.3.2增加命令
6.4 U—Boot的移植
6.4.1U—Boot的移植概述
6.4.2U—Boot的擴展
6.4.3板級支持
第7章Linux核心及其構建
7.1 Linux核心概述
7.1.1Linux核心結構
7.1.2Linux源檔案結構
7.2嵌入式Linux的配置和編譯
7.2.1Linux核心配置結構
7.2.2 Linux核心的配置
7.2.3Linux核心的生成
7.3Linux核心的啟動過程
7.4特定系統的Linux的構建
7.4.1Linux核心的移植
7.4.2ARM處理器上運行的Linux系統
7.4.3 S3C6410Linux核心的構建
7.4.4 S3C6410 Linux核心的移植內容
第8章檔案系統及其構建
8.1 Linux檔案系統特性
8.2Linux檔案系統的結構
8.2.1檔案系統的主要接口
8.2.2檔案系統的實現
8.2.3默認的公共實現
8.3幾種Linux使用的檔案系統
8.3.1EXT2/3(擴展檔案系統2/3)
8.3.2 NFS(網路檔案系統)
8.3.3 ROMFS(唯讀檔案系統)
8.3.4 CRAMFS(壓縮ROM檔案系統)
8.3.5JFFS2(日誌Flash檔案系統)
8.3.6 YAFFS(另一種Flash檔案系統)
8.3.7UBIFS(非排序塊映像檔案系統)
8.4 Linux檔案系統的構建
8.4.1根檔案系統的結構
8.4.2製作根檔案系統映像
8.4.3核心啟動中根檔案系統的參數
第9章Linux用戶空間的核心
9.1嵌入式系統中的作業系統和系統關係
9.2 C語言庫
9.3Shell工具Busybox
9.3.1 Busybox配置和編譯
9.3.2 Busybox的原始碼結構
第10章Linux用戶空間的編程
10.1Linux用戶空間編程概述
10.2檔案的相關內容
10.2.1檔案的打開、關閉和讀寫等
10.2.2檔案的控制、映射和查詢等
10.2.3檔案的其他操作
10.3進程相關的內容
10.3.1fork和exec
10.3.2管道
10.3.3SyStem V IPC
10.3.4POSIX IPC
10.4信號相關的內容
10.5 pthread執行緒
10.5.1執行緒的基本使用
10.5.2執行緒的屬性
10.5.3執行緒互斥量
10.5.4執行緒條件量
10.5.5執行緒取消
10.6 dlopen機制
10.6.1 dlopen的結構和意義
10.6.2在C語言中使用dlopen
10.6.3在C++中使用dlopen
第11章Linux用戶空間的中間件
11.1基於嵌入式Linux的系統與中間件
11.2網路協定相關
11.2.1Linux套接字編程的基礎
11.2.2 TCP和UDP協定的流程
11.2.3 TCP編程實例
11.2.4UDP編程實例
11.2.5深入網路編程
11.2.6用作IPC的UNIX Socket
11.3GUI套用開發
11.3.1 Qt系統
11.3.2 MiniGUI應用程式
11.3.3 MicroWindows (Nano—X Window)
11.4資料庫
11.4.1關於嵌入式資料庫
11.4.2SQLite
第12章Linux驅動基礎
12.1Linux驅動概述
12.1.1驅動的理念和結構
12.1.2驅動程式對用戶空間的接口
12.2設備檔案和相關檔案系統
12.2.1設備檔案
12.2.2 sys檔案系統
12.2.3 proc檔案系統
第13章Linux的核心編程
13.1Linux核心編程概述
13.2核心模組的編寫
13.2.1Linux核心中的模組
13.2.2核心模組的編譯結構
13.3核心編程接口
13.3.1Linux編程風格
13.3.2Linux編程主要接口
第14章Linux的驅動核心架構
14.1用戶空間的接口
14.1.1用戶空間的驅動調用接口
14.1.2系統調用
14.1.3驅動的主要調用函式
14.2字元設備和塊設備的框架
14.2.1檔案操作file_operations
14.2.2字元設備的基本框架
14.2.3塊設備的框架
14.2.4字元設備和塊設備的默認file_operations實現
14.3網路協定和網路設備的框架
14.3.1網路系統的核心
14.3.2網路協定的實現
14.3.3網路設備的框架
14.4 proc檔案系統的框架
14.4.1 proc檔案系統的編程接口
14.4.2 proc檔案系統的實現
14.5 sys檔案系統的框架
14.5.1 sys檔案系統的編程接口
14.5.2 sys檔案系統的實現
第15章Linux驅動的要點
15.1驅動程式的核心實現
15.2設備、驅動和資源
15.3中斷的處理
15.4中斷的下半部
15.4.1軟中斷
15.4.2軟中斷之tasklet
15.4.3軟中斷之定時器
15.5競態處理
15.5.1自旋鎖
15.5.2信號量
15.6阻塞處理
15.7異步操作
第16章幾個典型的簡單驅動
16.1設備驅動概述
16.2記憶體設備驅動
16.2.1記憶體設備驅動的公共內容
16.2.2空設備
16.2.3零設備
16.2.4滿設備
16.3記憶體塊設備驅動
16.4迴環塊設備驅動
16.5迴環網路設備驅動
第17章幾個典型的驅動框架和相應的驅動
17.1Misc驅動框架
17.2幀緩衝驅動框架和具體驅動
17.2.1幀緩衝驅動框架
17.2.2虛擬幀緩衝驅動
17.2.3針對硬體實現的幀緩衝驅動
17.3輸入事件驅動框架
17.3.1輸入—事件驅動框架概述
17.3.2針對硬體的事件驅動
17.4GPIO驅動框架和具體驅動
17.4.1GPIO驅動框架
17.4.2 GPIO具體硬體的驅動
17.5 PowerSupply驅動框架和具體驅動
17.5.1 PowerSupply驅動框架
17.5.2 PowerSupply驅動
17.6TTY驅動框架和驅動
17.6.1 TTY驅動框架
17.6.2偽TTY驅動
17.6.3串口TTY和虛擬TTY
第18章MTD系統和驅動
18.1MTD概述
18.2 MTD的核心
18.2.1MTD的接口部分
18.2.2MTD的核心實現部分
18.3MTD的設備層
18.3.1 MTD字元設備
18.3.2 MTD塊設備
18.4CFI硬體實現層
18.4.1公用部分
18.4.2 ROM的MTD實現
18.4.3 RAM的MTD實現
18.4.4 NorFlash的MTD實現
18.5 Nand Flash的硬體實現層
18.5.1公用部分
18.5.2 GPIO的Nand Flash實現
18.5.3處理器晶片上的Nand Flash實現
第19章USB系統和驅動
19.1USB概述
19.1.1 USB規範
19.1.2 USB的軟體系統
19.2Linux的USB主機端支持
19.2.1 USB主機端的軟體結構
19.2.2 USB主機端的核心部分
19.2.3 USB驅動的實現
19.2.4HCI的實現
19.3Linux的USB設備端支持
19.3.1USB設備端的軟體結構
19.3.2 Gadget的核心部分
19.3.3 Gadget驅動
19.3.4 UDC驅動的實現
……
第20章SPI匯流排和驅動
第21章12C匯流排和驅動
第22章PCI匯流排和驅動
第23章音頻系統和驅動
第24章視頻系統和驅動
1.1開發環境概述
1.2串口終端工具
1.3TFTP
1.4NFS
1.5SAMBA共享
1.6Linux系統的軟體發布協定
第2章程式生成和GCC
2.1程式生成工具概述
2.1.1GUN的GCC工具
2.1.2ELF檔案格式
2.2 GCC工具的使用
2.2.1示例工程
2.2.2編譯、彙編和連線
2.2.3預處理和彙編
2.2.4歸檔工具(ar)和靜態庫
2.2.5動態庫
2.2.6ELF格式檔案信息讀取(readelf)
2.2.7符號信息工具(nm)
2.2.8字元串工具(strings)
2.2.9去除符號(strip)
2.2.10目標檔案複製(objcopy)
2.2.11目標檔案信息(objdump)
第3章工程管理和make機制
3.1 make工具
3.2 Makefile的基本原則
3.2.1Makefile的變數
3.2.2 Makefile的條件執行
3.2.3Makefile中的函式
3.3Makefile使用示例
3.3.1簡單的Makefile
3.3.2依賴關係實例
3.3.3隱含規則的編譯實例
3.3.4指定依賴的編譯實例
3.4自動生成Makefile
3.4.1autoconf工具介紹
3.4.2 automake工具介紹
3.4.3其他工具
3.4.4自動生成Makefile的流程
第4章調試和GDB
4.1嵌入式系統的調試技術
4.1.1調試技術
4.1.2硬體調試
4.1.3代碼調試
4.2 Linux的基本信息
4.3GDB調試和遠程調試
4.4 GDB的安裝與使用
4.4.1使用gdbstub實現調試用戶程式
4.4.2GDB和GDB Server的編譯
4.5使用gdbserver調試
第5章Linux系統的結構
5.1 Linux作業系統基本概念
5.1.1Linux的進程信息
5.1.2 Linux的檔案系統和檔案信息
5.1.3檔案的另外三位屬性
5.2Linux系統的組成和構建
5.2.1Linux系統的組成
5.2.2嵌入式Linux的構建
5.3 Linux系統的啟動流程
第6章BootLoader及其構建
6.1嵌入式Linux的BootLoader
6.1.1 BootLoader的開發要點
6.1.2 BootLoader的結構
6.2U—Boot的使用
6.2.1U—Boot概述
6.2.2U—Boot的結構
6.2.3U—Boot的生成
6.2.4 U—Boot的啟動流程
6.3U—Boot的命令
6.3.1U—Boot命令概述
6.3.2增加命令
6.4 U—Boot的移植
6.4.1U—Boot的移植概述
6.4.2U—Boot的擴展
6.4.3板級支持
第7章Linux核心及其構建
7.1 Linux核心概述
7.1.1Linux核心結構
7.1.2Linux源檔案結構
7.2嵌入式Linux的配置和編譯
7.2.1Linux核心配置結構
7.2.2 Linux核心的配置
7.2.3Linux核心的生成
7.3Linux核心的啟動過程
7.4特定系統的Linux的構建
7.4.1Linux核心的移植
7.4.2ARM處理器上運行的Linux系統
7.4.3 S3C6410Linux核心的構建
7.4.4 S3C6410 Linux核心的移植內容
第8章檔案系統及其構建
8.1 Linux檔案系統特性
8.2Linux檔案系統的結構
8.2.1檔案系統的主要接口
8.2.2檔案系統的實現
8.2.3默認的公共實現
8.3幾種Linux使用的檔案系統
8.3.1EXT2/3(擴展檔案系統2/3)
8.3.2 NFS(網路檔案系統)
8.3.3 ROMFS(唯讀檔案系統)
8.3.4 CRAMFS(壓縮ROM檔案系統)
8.3.5JFFS2(日誌Flash檔案系統)
8.3.6 YAFFS(另一種Flash檔案系統)
8.3.7UBIFS(非排序塊映像檔案系統)
8.4 Linux檔案系統的構建
8.4.1根檔案系統的結構
8.4.2製作根檔案系統映像
8.4.3核心啟動中根檔案系統的參數
第9章Linux用戶空間的核心
9.1嵌入式系統中的作業系統和系統關係
9.2 C語言庫
9.3Shell工具Busybox
9.3.1 Busybox配置和編譯
9.3.2 Busybox的原始碼結構
第10章Linux用戶空間的編程
10.1Linux用戶空間編程概述
10.2檔案的相關內容
10.2.1檔案的打開、關閉和讀寫等
10.2.2檔案的控制、映射和查詢等
10.2.3檔案的其他操作
10.3進程相關的內容
10.3.1fork和exec
10.3.2管道
10.3.3SyStem V IPC
10.3.4POSIX IPC
10.4信號相關的內容
10.5 pthread執行緒
10.5.1執行緒的基本使用
10.5.2執行緒的屬性
10.5.3執行緒互斥量
10.5.4執行緒條件量
10.5.5執行緒取消
10.6 dlopen機制
10.6.1 dlopen的結構和意義
10.6.2在C語言中使用dlopen
10.6.3在C++中使用dlopen
第11章Linux用戶空間的中間件
11.1基於嵌入式Linux的系統與中間件
11.2網路協定相關
11.2.1Linux套接字編程的基礎
11.2.2 TCP和UDP協定的流程
11.2.3 TCP編程實例
11.2.4UDP編程實例
11.2.5深入網路編程
11.2.6用作IPC的UNIX Socket
11.3GUI套用開發
11.3.1 Qt系統
11.3.2 MiniGUI應用程式
11.3.3 MicroWindows (Nano—X Window)
11.4資料庫
11.4.1關於嵌入式資料庫
11.4.2SQLite
第12章Linux驅動基礎
12.1Linux驅動概述
12.1.1驅動的理念和結構
12.1.2驅動程式對用戶空間的接口
12.2設備檔案和相關檔案系統
12.2.1設備檔案
12.2.2 sys檔案系統
12.2.3 proc檔案系統
第13章Linux的核心編程
13.1Linux核心編程概述
13.2核心模組的編寫
13.2.1Linux核心中的模組
13.2.2核心模組的編譯結構
13.3核心編程接口
13.3.1Linux編程風格
13.3.2Linux編程主要接口
第14章Linux的驅動核心架構
14.1用戶空間的接口
14.1.1用戶空間的驅動調用接口
14.1.2系統調用
14.1.3驅動的主要調用函式
14.2字元設備和塊設備的框架
14.2.1檔案操作file_operations
14.2.2字元設備的基本框架
14.2.3塊設備的框架
14.2.4字元設備和塊設備的默認file_operations實現
14.3網路協定和網路設備的框架
14.3.1網路系統的核心
14.3.2網路協定的實現
14.3.3網路設備的框架
14.4 proc檔案系統的框架
14.4.1 proc檔案系統的編程接口
14.4.2 proc檔案系統的實現
14.5 sys檔案系統的框架
14.5.1 sys檔案系統的編程接口
14.5.2 sys檔案系統的實現
第15章Linux驅動的要點
15.1驅動程式的核心實現
15.2設備、驅動和資源
15.3中斷的處理
15.4中斷的下半部
15.4.1軟中斷
15.4.2軟中斷之tasklet
15.4.3軟中斷之定時器
15.5競態處理
15.5.1自旋鎖
15.5.2信號量
15.6阻塞處理
15.7異步操作
第16章幾個典型的簡單驅動
16.1設備驅動概述
16.2記憶體設備驅動
16.2.1記憶體設備驅動的公共內容
16.2.2空設備
16.2.3零設備
16.2.4滿設備
16.3記憶體塊設備驅動
16.4迴環塊設備驅動
16.5迴環網路設備驅動
第17章幾個典型的驅動框架和相應的驅動
17.1Misc驅動框架
17.2幀緩衝驅動框架和具體驅動
17.2.1幀緩衝驅動框架
17.2.2虛擬幀緩衝驅動
17.2.3針對硬體實現的幀緩衝驅動
17.3輸入事件驅動框架
17.3.1輸入—事件驅動框架概述
17.3.2針對硬體的事件驅動
17.4GPIO驅動框架和具體驅動
17.4.1GPIO驅動框架
17.4.2 GPIO具體硬體的驅動
17.5 PowerSupply驅動框架和具體驅動
17.5.1 PowerSupply驅動框架
17.5.2 PowerSupply驅動
17.6TTY驅動框架和驅動
17.6.1 TTY驅動框架
17.6.2偽TTY驅動
17.6.3串口TTY和虛擬TTY
第18章MTD系統和驅動
18.1MTD概述
18.2 MTD的核心
18.2.1MTD的接口部分
18.2.2MTD的核心實現部分
18.3MTD的設備層
18.3.1 MTD字元設備
18.3.2 MTD塊設備
18.4CFI硬體實現層
18.4.1公用部分
18.4.2 ROM的MTD實現
18.4.3 RAM的MTD實現
18.4.4 NorFlash的MTD實現
18.5 Nand Flash的硬體實現層
18.5.1公用部分
18.5.2 GPIO的Nand Flash實現
18.5.3處理器晶片上的Nand Flash實現
第19章USB系統和驅動
19.1USB概述
19.1.1 USB規範
19.1.2 USB的軟體系統
19.2Linux的USB主機端支持
19.2.1 USB主機端的軟體結構
19.2.2 USB主機端的核心部分
19.2.3 USB驅動的實現
19.2.4HCI的實現
19.3Linux的USB設備端支持
19.3.1USB設備端的軟體結構
19.3.2 Gadget的核心部分
19.3.3 Gadget驅動
19.3.4 UDC驅動的實現
……
第20章SPI匯流排和驅動
第21章12C匯流排和驅動
第22章PCI匯流排和驅動
第23章音頻系統和驅動
第24章視頻系統和驅動
序言
本書寫作目的
嵌入式Linux開發已經不算很新的技術。本書作者從2003年開始從事Linux方面的研究、開發和科普工作。在10年多的時間裡,Linux核心已經從2.4版本發展到了3.x版本,廣泛使用的嵌入式處理器也從ARMv4的ARM7核心發展成為ARMv6的Cortex核心。這10年多嵌入式Linux技術逐步成熟,產品已經數不勝數。
作者在幾年前出版過一些有關嵌入式系統、Linux和C語言編程的書籍。目前面對技術的發展,感覺有必要出版一本全面介紹嵌入式Linux的書籍,以幫助相關行業的學習者和開發者更高效地了解嵌入式Linux,更好地從事相關工作。
希望將本書打造成簡明、高效的工具書,成為快速開發Linux軟體的指導書、硬體移植的工具書,以及計算機專業從業者理論聯繫實際的橋樑。
本書特點
本書結合了作者多年的開發經驗和知識技術的傳播經驗,主要有下面一些特點。
內容來自工程實踐,實用性強。
覆蓋面更全面、知識系統完整。
使用框架圖+代碼路徑+關鍵代碼的方式,一目了然。
內容緊湊,讀者可以結合手頭代碼對照學習。
將工程技巧蘊含於理論知識的網路之中。
包含Linux軟體編程開發的常用技巧:查找代碼、運行時看信息等。
結合硬體和作業系統的知識。
幫助讀者深入理解Linux系統的關鍵結構,具有完備的開發調試能力。
重點關注目前的主要套用場景:用戶空間開發和驅動開發。
本書以Linux尤其是嵌入式Linux中最常用的內容為主,這些內容大部分是Linux開發不同方面的工程師均需要掌握的。通過對本書的學習,可以讓有C語言基礎的工程師在Linux環境中開發用戶空間軟體;讓有硬體基礎的工程師可以在嵌入式Linux平台中具有適配硬體的能力;讓具有一定經驗的嵌入式Linux工程師具有更廣泛的視野、更強的開發能力。
本書主要內容
本書包含了嵌入式Linux系統的主要內容,按照知識結構分成四個方面。
第一個方面:開發環境和編程基礎(第1章到第4章)。
第二個方面:Linux系統結構(第5章到第8章)。
第三個方面:嵌入式Linux的用戶空間(第9章到第13章)。
第四個方面:嵌入式Linux的驅動開發(第14章到第24章)。
按照內容的側重點,本書具有環境、原理性開發和核心開發幾個方面。
對讀者的話
目前的IT技術領域有很多熱點,除了嵌入式設備的開發外,還有移動開發、網際網路開發等。嵌入式Linux是很多產品的技術基礎。在實踐過程中,很多問題都是嵌入式Linux最基礎的問題,只是由於工程師可能來自其他領域,不熟悉嵌入式Linux,從而小問題就成了大問題。因此,對於嵌入式Linux,是目前從事IT技術領域的各類工程師都至少需要了解的。
本書不僅適用於嵌入式Linux的工程師增強能力,也適用於其他領域的技術人員了解嵌入式Linux。本書尤其注重和高校計算機專業的互補關係,基於高校計算機專業知識基礎,書中大量補充了在實踐中的套用,幫助讀者將知識“落地紮根”,引領讀者進一步在工作中讓知識和技能“生根發芽”,直到在工作中“結出豐碩的果實”。
本書的幾個基礎方面是C語言編程、嵌入式處理器、作業系統,這也是計算機行業的基礎。通過對本書的學習,讀者得到的不僅僅是各個方面的知識和技巧,更有它們之間的有機結合。
本書作者
韓超是中國大陸長期工作於一線的知名工程師、架構師,也是嵌入式Linux相關技術在大陸發展10年的技術領航人之一,同時也是暢銷書作者。其主要從事相關技術研發方向,包括嵌入式Linux板級平台、GUI系統和套用、移動多媒體。韓超對嵌入式Linux的技術把握以實用技術為主,以作業系統本身為輔,重視在系統使用特定硬體的技術,重視核心與用戶空間的互動的要點,適用於嵌入式Linux的軟體工程等方面。
韓超完成了本書主要部分的編寫工作,此外,眾多不同規模的企業開發成果也為本書的編寫提供了重要的素材。參與本書編寫的還有康碩、於仕林、張超等人,以及清華大學計算機系作業系統研究興趣小組的肖奇學、徐永健、王歡、何嘉權、範文良、茅俊傑等人。
嵌入式Linux開發已經不算很新的技術。本書作者從2003年開始從事Linux方面的研究、開發和科普工作。在10年多的時間裡,Linux核心已經從2.4版本發展到了3.x版本,廣泛使用的嵌入式處理器也從ARMv4的ARM7核心發展成為ARMv6的Cortex核心。這10年多嵌入式Linux技術逐步成熟,產品已經數不勝數。
作者在幾年前出版過一些有關嵌入式系統、Linux和C語言編程的書籍。目前面對技術的發展,感覺有必要出版一本全面介紹嵌入式Linux的書籍,以幫助相關行業的學習者和開發者更高效地了解嵌入式Linux,更好地從事相關工作。
希望將本書打造成簡明、高效的工具書,成為快速開發Linux軟體的指導書、硬體移植的工具書,以及計算機專業從業者理論聯繫實際的橋樑。
本書特點
本書結合了作者多年的開發經驗和知識技術的傳播經驗,主要有下面一些特點。
內容來自工程實踐,實用性強。
覆蓋面更全面、知識系統完整。
使用框架圖+代碼路徑+關鍵代碼的方式,一目了然。
內容緊湊,讀者可以結合手頭代碼對照學習。
將工程技巧蘊含於理論知識的網路之中。
包含Linux軟體編程開發的常用技巧:查找代碼、運行時看信息等。
結合硬體和作業系統的知識。
幫助讀者深入理解Linux系統的關鍵結構,具有完備的開發調試能力。
重點關注目前的主要套用場景:用戶空間開發和驅動開發。
本書以Linux尤其是嵌入式Linux中最常用的內容為主,這些內容大部分是Linux開發不同方面的工程師均需要掌握的。通過對本書的學習,可以讓有C語言基礎的工程師在Linux環境中開發用戶空間軟體;讓有硬體基礎的工程師可以在嵌入式Linux平台中具有適配硬體的能力;讓具有一定經驗的嵌入式Linux工程師具有更廣泛的視野、更強的開發能力。
本書主要內容
本書包含了嵌入式Linux系統的主要內容,按照知識結構分成四個方面。
第一個方面:開發環境和編程基礎(第1章到第4章)。
第二個方面:Linux系統結構(第5章到第8章)。
第三個方面:嵌入式Linux的用戶空間(第9章到第13章)。
第四個方面:嵌入式Linux的驅動開發(第14章到第24章)。
按照內容的側重點,本書具有環境、原理性開發和核心開發幾個方面。
對讀者的話
目前的IT技術領域有很多熱點,除了嵌入式設備的開發外,還有移動開發、網際網路開發等。嵌入式Linux是很多產品的技術基礎。在實踐過程中,很多問題都是嵌入式Linux最基礎的問題,只是由於工程師可能來自其他領域,不熟悉嵌入式Linux,從而小問題就成了大問題。因此,對於嵌入式Linux,是目前從事IT技術領域的各類工程師都至少需要了解的。
本書不僅適用於嵌入式Linux的工程師增強能力,也適用於其他領域的技術人員了解嵌入式Linux。本書尤其注重和高校計算機專業的互補關係,基於高校計算機專業知識基礎,書中大量補充了在實踐中的套用,幫助讀者將知識“落地紮根”,引領讀者進一步在工作中讓知識和技能“生根發芽”,直到在工作中“結出豐碩的果實”。
本書的幾個基礎方面是C語言編程、嵌入式處理器、作業系統,這也是計算機行業的基礎。通過對本書的學習,讀者得到的不僅僅是各個方面的知識和技巧,更有它們之間的有機結合。
本書作者
韓超是中國大陸長期工作於一線的知名工程師、架構師,也是嵌入式Linux相關技術在大陸發展10年的技術領航人之一,同時也是暢銷書作者。其主要從事相關技術研發方向,包括嵌入式Linux板級平台、GUI系統和套用、移動多媒體。韓超對嵌入式Linux的技術把握以實用技術為主,以作業系統本身為輔,重視在系統使用特定硬體的技術,重視核心與用戶空間的互動的要點,適用於嵌入式Linux的軟體工程等方面。
韓超完成了本書主要部分的編寫工作,此外,眾多不同規模的企業開發成果也為本書的編寫提供了重要的素材。參與本書編寫的還有康碩、於仕林、張超等人,以及清華大學計算機系作業系統研究興趣小組的肖奇學、徐永健、王歡、何嘉權、範文良、茅俊傑等人。