嵌入式系統技術已被廣泛地應用于軍事、工業控制系統、信息家電、通信設備、醫療儀器、智能儀器儀表等眾多領域。linux是一個優秀的操作系統,嵌入式操作系統是近年來的熱門話題。嵌入式系統原理與應用對大學生、研究生今后的工作科研有著很重要的作用,也是科研人員、工程人員必備的知識。
《嵌入式linux系統開發與應用》在介紹嵌入式操作系統與一般原理基礎上,詳細地論述了嵌入式系統開發過程中的主要技術問題,著重介紹主流的、廣受歡迎的linux操作系統的設計與實現,包括linux的內核開發原理。《嵌入式linux系統開發與應用》注重原理講解和實驗相結合,培養學生的理論和實際動手能力。全書分為13章,內容包括嵌入式系統概論、linux基礎知識、linux編程環境、linux外殼程序編程、構建嵌入式linux開發平臺、arm調試環境、嵌入式bootloader技術、linux內核配置、arm-linux內核分析和移植、嵌入式文件系統、linux多線程編程、嵌入式web設計、嵌入式linux的gui等內容。
《嵌入式linux系統開發與應用》內容豐富,圖文并茂,語言流暢,敘述清楚,通俗易懂,注重理解與實例,可操作性強,大部分章節配有實例和源程序。《嵌入式linux系統開發與應用》可作為計算機學科、電子信息及電氣學科等相關專業(電子工程、通信工程、計算機、信號處理等專業)本科生、研究生及工程碩士的嵌入式課程的教材,也可供對嵌入式系統感興趣的技術人員參考使用。
第1章 嵌入式系統概論
1.1 嵌入式系統概述
1.1.1 嵌入式系統的歷史
1.1.2 什么是嵌入式系統
1.1.3 嵌入式系統的特點
1.1.4 嵌入式處理器
1.1.5 嵌入式系統的應用領域
1.1.6 嵌入式系統的發展趨勢
1.2 嵌入式系統開發
1.2.1 需求分析和概要設計
1.2.2 嵌入式系統中的硬件
1.2.3 嵌入式系統中的軟件
1.2.4 嵌入式系統軟件開發的一般過程
1.2.5 嵌入式應用程序的開發
1.3 嵌入式操作系統
1.3.1 嵌入式操作系統概述
1.3.2 嵌入式操作系統的分類
1.3.3 嵌入式操作系統的特點
1.3.4 典型的嵌入式操作系統
1.3.5 嵌入式操作系統的選擇
1.4 linux操作系統
1.4.1 linux操作系統概述
1.4.2 linux的重要性
1.4.3 嵌入式linux系統開發平臺
1.4.4 linux的發展前景
1.5 思考題
第2章 linux基礎知識
2.1 認識linux操作系統
2.1.1 linux簡明歷史
2.1.2 linux系統的特點和組成
2.1.3 linux的開發過程
2.2 基本操作命令
2.2.1 字符界面簡介
2.2.2 常用命令簡介
2.3 linux文件與目錄系統
2.3.1 linux文件系統類型介紹
2.3.2 linux目錄系統
2.4 shell簡介
2.5 網絡服務簡介
2.5.1 linux支持的網絡協議
2.5.2 linux的網絡服務
2.6 思考題
第3章 linux編程環境
3.1 linux編程環境介紹
3.1.1 系統平臺環境
3.1.2 開發工具環境
3.1.3 基于文本模式的開發平臺
3.1.4 集成開發平臺eclipse+cdt
3.1.5 文檔幫助環境
3.2 常用編輯器
3.2.1 vim編輯器
3.2.2 emacs編輯器
3.3 gcc編譯器的使用
3.3.1 gcc的主要選項
3.3.2 gnu c擴展簡介
3.4 gnu make管理項目
3.4.1 make簡介
3.4.2 編寫makefile文件的規則
3.5 gdb調試
3.5.1 gdb命令介紹
3.5.2 gdb調試例程
3.5.3 基于gdb的圖形界面調試工具
3.6 思考題
第4章 linux外殼程序編程
4.1 創建和運行外殼程序
4.1.1 創建外殼程序
4.1.2 運行外殼程序
4.2 使用外殼變量
4.2.1 給變量賦值
4.2.2 讀取變量的值
4.2.3 位置變量和其他系統變量
4.2.4 引號的作用
4.3 數值運算命令
4.4 條件表達式
4.4.1 if表達式
4.4.2 case表達式
4.5 循環語句
4.5.1 for語句
4.5.2 while語句
4.5.3 until語句
4.6 shift命令
4.7 select語句
4.8 repeat語句
4.9 函數
4.10 shell應用舉例
4.11 思考題
第5章 構建嵌入式linux開發平臺
5.1 gnu跨平臺開發工具鏈
5.2 嵌入式linux內核
5.3 嵌入式linux根文件系統
5.4 bootloader簡介
5.5 思考題
第6章 arm調試環境
6.1 arm 調試工具簡介
6.1.1 jtag仿真器
6.1.2 multi-ice server
6.2 ads軟件調試工具
6.2.1 使用metrowork codewarrior for arm developer suite
6.2.2 使用realview debugger
6.2.3 使用axd debugger
第7章 嵌入式bootloader技術
7.1 bootloader的基本概念
7.1.1 bootloader所支持的cpu和嵌入式板
7.1.2 bootloader的安裝點和啟動過程
7.1.3 bootloader的模式
7.1.4 bootloader與主機之間的通信方式
7.2 bootloader典型結構框架
7.2.1 bootloader總體流程
7.2.2 bootloader的stage1
7.2.3 bootloader的stage2
7.3 典型bootloader分析和移植
7.3.1 u-boot
7.3.2 blob
7.4 其他bootloader介紹
7.4.1 redboot
7.4.2 armboot
7.4.3 ppcboot
7.4.4 vivi
7.4.5 yamon
7.5 思考題
第8章 linux內核配置
8.1 內核概述
8.2 嵌入式linux內核代碼結構
8.3 內核開發的特點
8.3.1 沒有libc庫
8.3.2 gnu c
8.3.3 沒有內存保護機制
8.3.4 不要輕易在內核中使用浮點數
8.3.5 容積小而固定的棧
8.3.6 同步和并發
8.3.7 可移植性的重要性
8.4 嵌入式linux內核的配置
8.4.1 makefile
8.4.2 配置文件
8.4.3 linux內核配置選項
8.5 配置舉例
8.6 思考題
第9章 arm-linux內核分析和移植
9.1 arm微處理器
9.1.1 risc體系結構
9.1.2 arm微處理器的類型
9.1.3 arm微處理器的寄存器結構
9.1.4 arm微處理器的指令結構
9.2 arm-linux內存管理
9.2.1 內存管理單元mmu
9.2.2 arm-linux的存儲管理機制
9.2.3 arm-linux存儲機制的建立
9.2.4 arm-linux對進程虛擬空間的管理
9.3 arm-linux進程管理與調度
9.3.1 task_struct數據結構
9.3.2 linux進程的創建、執行和消亡
9.3.3 arm_linux的進程調度
9.4 arm-linux中斷與中斷處理
9.4.1 linux處理中斷概述
9.4.2 arm體系程序的執行流程
9.4.3 arm的異常中斷種類
9.4.4 arm處理器對異常中斷的響應及返回過程
9.5 arm-linux系統啟動與初始化
9.5.1 內核數據結構的初始化
9.5.2 外設初始化
9.5.3 init進程和linittab文件
9.5.4 rc啟動腳本
9.5.5 shell的啟動
9.6 linux驅動程序簡介
9.6.1 設備的分類
9.6.2 設備號
9.6.3 設備節點
9.6.4 用戶空間和內核空間
9.7 linux模塊化機制
9.7.1 linux的模塊化
9.7.2 模塊的載入
9.7.3 模塊的卸載
9.8 arm-linux內核裁減
9.9 嵌入式linux的移植
9.9.1 移植準備
9.9.2 移植步驟
9.9.3 配置內核選項
9.9.4 修改kernel文件系統部分代碼
9.10 思考題
第10章 嵌入式文件系統
10.1 linux文件系統結構與特征
10.1.1 linux文件系統概述
10.1.2 linux文件系統布局
10.1.3 linux支持的文件系統
10.2 嵌入式文件系統簡介
10.2.1 nor flash與nand flash介紹
10.2.2 mtd介紹
10.2.3 cramfs文件系統簡介
10.2.4 romfs文件系統簡介
10.2.5 嵌入式文件系統jffs簡介
10.2.6 嵌入式文件系統yaffs簡介
10.3 構建根文件系統
10.4 根文件系統設置
10.5 busybox
10.5.1 busybox簡介
10.5.2 使用busybox構建根文件系統
10.6 嵌入式文件系統的設計
10.6.1 文件系統格式的選型的基本策略
10.6.2 混合型文件系統的設計
10.7 思考題
第11章 嵌入式web服務器設計
11.1 tcp/ip協議
11.1.1 tcp/ip協議棧
11.1.2 tcp/ip協議棧的數據流向
11.1.3 tcp協議與udp協議
11.2 http協議
11.2.1 http協議的方法
11.2.2 http協議消息頭
11.2.3 http協議使用舉例
11.2.4 內核網絡服務
11.3 socket編程基礎
11.3.1 socket描述
11.3.2 socket描述符
11.4 嵌入式web服務器系統結構
11.4.1 協議標準
11.4.2 瘦web服務器
11.4.3 嵌入式應用接口技術
11.4.4 實現形式
11.4.5 emit
11.4.6 rompager
11.5 web服務器構建
11.6 思考題
第12章 嵌入式linux的gui
12.1 嵌入式gui簡介
12.1.1 minigui
12.1.2 qt/embedded
12.1.3 nano-x
12.1.4 opengui
12.2 minigul程序設計基礎
12.2.1 minigui v1.3.3軟件包
12.2.2 minigui的特點
12.2.3 窗口處理過程
12.2.4 minigui的線程機制
12.2.5 minigui的體系結構
12.2.6 minigui的底層引擎
12.2.7 minigui的三種運行模式
12.2.8 minigui移植
12.3 qt/embedded程序設計基礎
12.3.1 qt/embedded的圖形引擎實現基礎
12.3.2 qt/embedded的事件驅動基礎
12.3.3 qt/embedded底層支持分析
12.3.4 qt/embedded的移植
12.4 思考題
參考文獻