嵌入式 Linux 系統(tǒng)開發(fā)入門
定 價:48 元
- 作者:方元
- 出版時間:2018/5/1
- ISBN:9787121335341
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP316.85
- 頁碼:260
- 紙張:
- 版次:01
- 開本:16開
本書基于嵌入式Linux系統(tǒng),介紹其軟件開發(fā)方法,重點介紹多任務(wù)、網(wǎng)絡(luò)和設(shè)備驅(qū)動的編程。本書分為兩個部分。第1部分是基礎(chǔ)篇(第1~8章),內(nèi)容包括Linux系統(tǒng)的基本使用方法、Linux系統(tǒng)的主要開發(fā)工具、文件讀寫、多任務(wù)機制、網(wǎng)絡(luò)套接字編程、模塊與設(shè)備驅(qū)動、嵌入式Linux系統(tǒng)開發(fā)、GUI程序設(shè)計初步。第2部分是實驗篇(第9~21章),內(nèi)容包括實驗系統(tǒng)介紹、嵌入式系統(tǒng)開發(fā)實驗、引導(dǎo)加載器、內(nèi)核配置和編譯、根文件系統(tǒng)的構(gòu)建、圖形用戶接口、音頻接口程序設(shè)計、嵌入式系統(tǒng)中的I/O接口驅(qū)動、觸摸屏移植、Qt/Embedded移植、MPlayer移植、GTK+移植、實時操作系統(tǒng)RTEMS。本書可作為電子信息、通信、自動化等專業(yè)相關(guān)課程的教材,也可供相關(guān)領(lǐng)域的工程技術(shù)人員學(xué)習(xí)、參考。
方元,博士,南京大學(xué)電子科學(xué)與工程學(xué)院副教授,長期講授微機原理、嵌入式系統(tǒng)、DSP原理與應(yīng)用等課程,獲得2013年石林獎教金。
第1部分 基 礎(chǔ) 篇
第1章 Linux系統(tǒng)的基本使用方法
1.1 Linux系統(tǒng)的使用環(huán)境
1.1.1 Linux系統(tǒng)的目錄結(jié)構(gòu)
1.1.2 Linux系統(tǒng)的用戶
1.2 命令行工作方式
1.2.1 終端
1.2.2 目錄操作
1.2.3 文件操作
1.2.4 瀏覽文件
1.2.5 打包、壓縮和解壓
1.2.6 進程控制
1.2.7 管道與重定向
1.2.8 shell腳本程序
1.3 規(guī)則表達(dá)式
1.4 與開發(fā)相關(guān)的常用命令
1.4.1 文件比較
1.4.2 文本搜索
1.4.3 流編輯
1.5 文本編輯工具
1.5.1 vim工作模式
1.5.2 vim常用編輯命令
1.5.3 vim高級操作
本章練習(xí)
本章參考資源
第2章 Linux系統(tǒng)的主要開發(fā)工具
2.1 gcc工具鏈
2.1.1 gcc編譯器
2.1.2 匯編器和鏈接器
2.2 代碼分析與轉(zhuǎn)換工具
2.2.1 函數(shù)地址解析addr2line
2.2.2 符號列表nm
2.2.3 目標(biāo)文件轉(zhuǎn)儲objdump
2.2.4 代碼剖析gprof
2.2.5 ELF符號解析readelf
2.2.6 代碼瘦身strip
2.3 GNU Make
2.3.1 源代碼的組織
2.3.2 第一個Makefile
2.3.3 GNU Make基本規(guī)則
2.3.4 完善Makefile
2.3.5 GNU Make的依賴
2.4 開源軟件的移植
2.4.1 工具準(zhǔn)備
2.4.2 源代碼的組織結(jié)構(gòu)
2.4.3 配置編譯環(huán)境
2.4.4 編譯和安裝
2.5 調(diào)試工具
2.5.1 gdb使用示例
2.5.2 遠(yuǎn)程調(diào)試
2.6 版本控制系統(tǒng)
2.6.1 集中式版本控制系統(tǒng)svn
2.6.2 追溯歷史、分支與合并
2.6.3 分布式版本控制系統(tǒng)git
2.6.4 git基本操作
2.6.5 git分支與合并
2.7 合理地組織程序
2.7.1 頭文件的要求
2.7.2 C語言源文件
2.7.3 庫的產(chǎn)生和作用
2.7.4 項目的目錄組織結(jié)構(gòu)
2.8 交叉編譯工具鏈的制作
本章練習(xí)
本章參考資源
第3章 文件讀寫
3.1 文件系統(tǒng)的概念
3.2 文件與目錄
3.2.1 Linux系統(tǒng)中的虛擬文件系統(tǒng)
3.2.2 Linux系統(tǒng)的文件類型
3.2.3 改變文件屬性
3.3 文件描述符
3.3.1 標(biāo)準(zhǔn)I/O設(shè)備
3.3.2 有關(guān)文件操作的系統(tǒng)功能調(diào)用
3.3.3 文件描述符復(fù)制
3.3.4 文件描述符操作
3.3.5 文件共享與讀寫沖突
3.4 標(biāo)準(zhǔn)I/O庫的文件操作
3.4.1 打開文件
3.4.2 文件流讀寫
3.4.3 文件流定位
3.4.4 格式化I/O文件操作函數(shù)
本章練習(xí)
本章參考資源
第4章 多任務(wù)機制
4.1 理解進程的概念
4.1.1 什么是進程
4.1.2 進程的狀態(tài)
4.1.3 進程的創(chuàng)建和結(jié)束
4.1.4 創(chuàng)建進程的例子
4.2 進程間的數(shù)據(jù)交換
4.2.1 管道
4.2.2 共享內(nèi)存
4.2.3 消息隊列
4.3 守護進程
4.4 線程——輕量級進程
4.5 線程的競爭與同步
4.5.1 互斥鎖
4.5.2 信號和信號量
4.5.3 進程與線程的對比
本章練習(xí)
本章參考資源
第5章 網(wǎng)絡(luò)套接字編程
5.1 套接字API
5.1.1 兩種類型的套接口
5.1.2 網(wǎng)絡(luò)協(xié)議分層
5.1.3 關(guān)閉套接口
5.2 TCP網(wǎng)絡(luò)程序分析
5.2.1 網(wǎng)絡(luò)地址
5.2.2 端口
5.3 TCP服務(wù)器程序設(shè)計
5.4 簡單的數(shù)據(jù)流對話
5.5 多任務(wù)數(shù)據(jù)流對話
5.6 基于數(shù)據(jù)報的對話程序
本章練習(xí)
本章參考資源
第6章 模塊與設(shè)備驅(qū)動
6.1 設(shè)備驅(qū)動程序簡介
6.1.1 內(nèi)核功能劃分
6.1.2 設(shè)備驅(qū)動程序的作用
6.1.3 設(shè)備和模塊分類
6.2 構(gòu)建和運行模塊
6.2.1 第一個示例模塊
6.2.2 模塊的編譯
6.2.3 模塊的運行
6.2.4 內(nèi)核模塊與應(yīng)用程序
6.3 模塊的結(jié)構(gòu)
6.3.1 模塊的初始化和清除函數(shù)
6.3.2 內(nèi)核符號表
6.3.3 模塊的卸載
6.3.4 資源使用
6.4 字符設(shè)備驅(qū)動程序
6.4.1 timer的設(shè)計
6.4.2 文件操作
6.4.3 打開設(shè)備
6.4.4 I/O控制
6.4.5 阻塞型I/O
6.5 設(shè)備驅(qū)動程序的使用
6.5.1 驅(qū)動程序與應(yīng)用程序
6.5.2 內(nèi)核源碼中的模塊結(jié)構(gòu)
6.5.3 將模塊加入內(nèi)核
6.6 調(diào)試技術(shù)
6.6.1 輸出調(diào)試
6.6.2 查詢調(diào)試
6.6.3 監(jiān)視調(diào)試
6.6.4 故障調(diào)試
6.6.5 使用gdb調(diào)試工具
6.6.6 使用內(nèi)核調(diào)試工具
6.7 硬件管理與中斷處理
6.7.1 I/O寄存器和常規(guī)內(nèi)存
6.7.2 中斷
6.8 內(nèi)核的定時
6.8.1 時間間隔
6.8.2 獲取當(dāng)前時間
6.8.3 延遲執(zhí)行
6.8.4 定時器
本章練習(xí)
本章參考資源
第7章 嵌入式Linux系統(tǒng)開發(fā)
7.1 引導(dǎo)裝載程序
7.2 內(nèi)核設(shè)置
7.2.1 內(nèi)核布局
7.2.2 內(nèi)核鏈接和裝入
7.2.3 參數(shù)傳遞和內(nèi)核引導(dǎo)
7.3 設(shè)備驅(qū)動程序
7.3.1 幀緩沖區(qū)驅(qū)動程序
7.3.2 輸入設(shè)備驅(qū)動程序
7.3.3 MTD驅(qū)動程序
7.3.4 MTD驅(qū)動程序設(shè)置
7.4 嵌入式設(shè)備的文件系統(tǒng)
7.4.1 擴展文件系統(tǒng)
7.4.2 日志閃存文件系統(tǒng)的第2版(JFFS2)
7.4.3 tmpfs
7.5 圖形用戶界面(GUI)
7.5.1 XFree86 4.X(帶幀緩沖區(qū)支持的X11R6)
7.5.2 Microwindows
7.5.3 Microwindows上的FLTKAPI
7.5.4 Qt/Embedded
7.6 幀緩沖
第8章 GUI程序設(shè)計初步
8.1 基本組件介紹
8.1.1 一個簡單的圖形接口程序
8.1.2 按鈕類組件
8.1.3 數(shù)據(jù)類組件
8.1.4 菜單欄與工具欄
8.2 畫圖區(qū)
8.3 界面布局方法
8.3.1 盒子
8.3.2 表格
8.3.3 對位
8.3.4 便簽
第2部分 實 驗 篇
第9章 實驗系統(tǒng)介紹
9.1 實驗系統(tǒng)性能概括
9.2 軟件
9.2.1 交叉編譯工具鏈
9.2.2 工具鏈安裝
9.2.3 嵌入式操作系統(tǒng)軟件
9.3 實驗系統(tǒng)搭建
第10章 嵌入式系統(tǒng)開發(fā)實驗
10.1 實驗?zāi)康? 10.2 嵌入式系統(tǒng)開發(fā)過程
10.2.1 串口設(shè)置(使用minicom)
10.2.2 TFTP(簡單文件傳輸協(xié)議)
10.2.3 NFS服務(wù)器架設(shè)
10.2.4 編譯應(yīng)用程序
10.3 實驗報告要求
第11章 引導(dǎo)加載器
11.1 實驗?zāi)康? 11.2 BootLoader
11.2.1 BootLoader的作用
11.2.2 BootLoader程序結(jié)構(gòu)框架
11.3 實驗內(nèi)容
11.3.1 獲取U-Boot
11.3.2 配置BootLoader選項
11.3.3 制作TF卡
11.4 實驗報告要求
第12章 內(nèi)核配置和編譯
12.1 實驗?zāi)康? 12.2 相關(guān)知識
12.2.1 內(nèi)核源代碼目錄結(jié)構(gòu)
12.2.2 內(nèi)核配置的基本結(jié)構(gòu)
12.2.3 編譯規(guī)則Makefile
12.3 編譯內(nèi)核
12.3.1 Makefile的選項參數(shù)
12.3.2 內(nèi)核配置項介紹
12.4 實驗內(nèi)容
12.5 實驗報告要求
第13章 根文件系統(tǒng)的構(gòu)建
13.1 實驗?zāi)康? 13.2 Linux文件系統(tǒng)的類型
13.2.1 EXT文件系統(tǒng)
13.2.2 NFS文件系統(tǒng)
13.2.3 JFFS2文件系統(tǒng)
13.2.4 YAFFS2
13.2.5 RAM Disk
13.3 文件系統(tǒng)的制作
13.3.1 BusyBox介紹
13.3.2 BusyBox的編譯
13.3.3 配置文件系統(tǒng)
13.3.4 制作ramdisk文件鏡像
13.3.5 制作init_ramfs
13.4 實驗內(nèi)容
13.5 實驗報告要求
第14章 圖形用戶接口
14.1 實驗?zāi)康? 14.2 原理概述
14.2.1 幀緩沖設(shè)備
14.2.2 幀緩沖與色彩
14.2.3 LCD控制器
14.2.4 幀緩沖設(shè)備操作
14.3 實驗內(nèi)容
14.3.1 實現(xiàn)基本畫圖功能
14.3.2 合理的軟件結(jié)構(gòu)
14.4 實驗報告要求
第15章 音頻接口程序設(shè)計
15.1 實驗?zāi)康? 15.2 接口介紹
15.3 應(yīng)用軟件設(shè)計
15.3.1 OSS
15.3.2 ALSA
15.4 實驗內(nèi)容
15.5 實驗報告要求
第16章 嵌入式系統(tǒng)中的I/O接口驅(qū)動
16.1 實驗?zāi)康? 16.2 接口電路介紹
16.3 I/O端口地址映射
16.4 LED控制
16.5 實驗內(nèi)容
16.6 實驗報告要求
第17章 觸摸屏移植
17.1 實驗?zāi)康? 17.2 Linux系統(tǒng)的觸摸屏支持
17.2.1 觸摸屏的基本原理
17.2.2 內(nèi)核配置
17.2.3 觸摸屏庫tslib
17.2.4 觸摸屏庫的安裝和測試
17.3 實驗內(nèi)容
17.4 實驗報告要求
第18章 Qt/Embedded移植
18.1 實驗?zāi)康? 18.2 Qt/Embedded介紹
18.2.1 Qt/Embedded軟件包結(jié)構(gòu)
18.2.2 編譯環(huán)境設(shè)置
18.2.3 編譯過程
18.2.4 Qt/Embedded的安裝
18.2.5 Qt-4.8版本編譯
18.3 實驗要求
18.4 實驗報告要求
第19章 MPlayer移植
19.1 實驗?zāi)康? 19.2 軟件介紹
19.3 編譯準(zhǔn)備
19.4 編譯
19.5 擴展功能
19.6 實驗報告要求
第20章 GTK+移植
20.1 實驗?zāi)康? 20.2 GTK+的背景
20.3 GTK+庫的依賴關(guān)系
20.4 編譯過程
20.4.1 編譯準(zhǔn)備
20.4.2 一般方法
20.4.3 環(huán)境變量
20.4.4 一些特殊的設(shè)置
20.4.5 編譯技巧
20.5 測試
20.6 實驗要求
20.7 實驗報告要求
第21章 實時操作系統(tǒng)RTEMS
21.1 實驗?zāi)康? 21.2 實時操作系統(tǒng)RTEMS簡介
21.3 編譯RTEMS
21.4 啟用RTEMS終端
21.5 實驗報告要求