![](/c49/30/1730766500.jpg)
出版社:清華大學 ISBN:9787302370833 商品編碼:1730766500 開本:16 出版時間:2014-09-01 代碼:49 作者:呂雪峰,彭文波
" 基本信息 - 商品名稱:嵌入式Linux軟件開發從入門到精通
- 作者:呂雪峰//彭文波
- 代碼:49
- 出版社:清華大學
- ISBN號:9787302370833
其他參考信息 - 出版時間:2014-09-01
- 印刷時間:2014-09-01
- 版次:1
- 印次:1
- 開本:16開
- 包裝:平裝
- 頁數:392
- 字數:613千字
內容提要 呂雪峰和彭文波編著的《嵌入式Linux軟件開發 從入門到精通》結合作者10多年的培訓和實踐經驗, 通過簡明扼要的語言,以及實用的案例與方法,對嵌 入式Linux應用開發中的關鍵技術點進行了深入淺出 的講解。全書分為基礎篇、應用進階篇和實戰提高篇 。 本書內容從*簡單的案例開始,始終保持實用、 易懂的風格,每個章節都設置了實踐操作案例,能夠 幫助讀者快速掌握嵌入式Linux應用軟件的開發技能 。 本書主要面向對嵌入式Linux應用軟件開發感興 趣的初學者,或需要進一步提升技能的開發者,也可 作為高等院校計算機類、電子電氣類、控制類專業學 生學習嵌入式Linux應用開發的教材。 作者簡介 彭文波,從事互聯網產品工作,曾在省級電子商務認證中心從事安全開發工作,曾就職於多家專業網管軟件公司,先後參與了電子商務認證繫統、移動網絡管理繫統等產品的開發。 呂雪峰,華中科技大學控制工程與控制理論專業碩士,**軟件工程師,國船電氣(武漢)有限公司軟件技術總監。是目前國內對WinPcap進行徹底分析研究的先驅。活躍於51 CTO、ChinaUnix、CSDN等社區。對WinPcap與網絡分析具有深入的理解。在《計算機應用》等學術期刊上發表核心論文多篇。尤精於嵌入式Linux。 目錄 **章 體驗嵌入式繫統的魅力 1.1 嵌入式繫統的定義 1.2 嵌入式繫統的歷史與現狀 1.2.1 無操作繫統階段 1.2.2 簡單操作繫統階段 1.2.3 實時操作繫統階段 1.2.4 面向Internet階段 1.3 嵌入式與非嵌入式的區別 1.4 從事嵌入式軟件開發的前景 1.4.1 優勢 1.4.2 從事嵌入式軟件開發的缺點 1.4.3 技術基本要求 1.5 嵌入式繫統的體繫結構 1.5.1 嵌入式處理器 1.5.2 嵌入式外圍設備 1.5.3 嵌入式操作繫統 1.5.4 嵌入式應用軟件 1 1.7 延伸閱讀:嵌入式繫統面臨的關鍵問題 1.8 小結 第2章 嵌入式Linux的前世今生 2.1 嵌入式Linux簡介 2.1.1 嵌入式Linux的優勢 2.1.2 嵌入式Linux面臨的挑戰 2.1.3 發展前景 2.1.4 A 2.2 嵌入式Linux繫統的軟件組成 2.2.1 引導加載程序 2.2.2 Linux內核 2.2.3 文件繫統 2.2.4 用戶應用程序 2.3 嵌入式繫統軟件研發的關鍵技術 2.3.1 開發流程 2.3.2 交叉編譯和鏈接 2.3.3 交叉調試 2.3.4 繫統測試 2.4 繫統啟動過程 2.5 延伸閱讀:開源、GPL與POSIX簡介 2.5.1 開源 2.5. 2.5.3 2.6 小結 第3章 零基礎安裝虛擬機與Linux操作繫統 3.1 VMware Workstation的安裝 3.2 配置VMware Workstation並便捷安裝Fedo 3.3 配置VMware Workstation手動安裝Fedo 3.4 安裝Fedo 3.5 VMware Tools的安裝 3.6 使用已安裝好操作繫統的虛擬機 3.7 延伸閱讀:打開Fedora 16的root賬號 3.8 小結 第4章 快速構建嵌入式Linux開發環境 4.1 安裝交叉編譯器 4.1.1 安裝交叉編譯器 4.1.2 建立鏈接 4.1.3 查看交叉工具是否安裝正確 4.2 構建開發板運行所需的環境 4.2.1 編譯一級啟動文件x- 4.2.2 編譯二級啟動文件 4.2.3 編譯內核 4.2.4 制作文件繫統鏡像 4.3 *新繫統文件 4.3.1 *新文件從SD卡啟動 4.3.2 *新文件從NAND Flash啟動 4.4 小結 第5章 配置串口通信工具 5.1 配置Windows XP的超級終端 5.2 串口信息的捕獲 5.3 在Linux中配置M 5.4 小結 第6章 配置NFS文件繫統服務 6.1 查看宿主機上的安裝包 6.2 配置網絡文件繫統 6.3 啟動NFS服務 6.3.1 在Fedora 16下面運行service nfs start命令失敗 6.3.2 在Fedora 16下面運行service nfs-server start失敗 6.4 本機測試 6.5 在開發板上測試 6.5.1 常見的測試過程 6.5.2 NFS無法掛載的問題分析 6.6 小結 第7章 開始編寫**個程序 7.1 在宿主機上編寫**個程序 7.2 編寫開發板上的上**個程序 7.3 小結 第8章 Linux開發入門必備私房菜 8.1 程序安裝目錄 8.2 頭文件 8.3 庫文件 8.4 gcc簡介 8.5 make簡介 8.6 小結 第9章 Shell:用戶與Linux溝通的橋梁 9.1 Shell是如何工作的 9.2 Shell的“兄弟姐妹” 9.3 必須熟悉的Shell命令 9.3.1 命令行 9.3.2 選項和參數 9.3.3 命令行特征 9.4 理解Shell中的特殊字符 9.4.1 通配符 9.4.2 引號 9.4.3 注釋符 9.5 暢通交流:標準輸入/輸出和重定向 9.5.1 標準輸入與輸出 9.5.2 輸入重定向 9.5.3 輸出重定向 9.5.4 管道 9.6 命令替換 9.7 實戰體驗:在Bash中的操作 9.7.1 命令和文件名擴展特性 9.7.2 命令行編輯 9.7.3 命令歷史 9.7.4 命令別名 9.8 定制 9.9 小結 **0章 文本編輯利器 10.1 Vi簡介 10.1.1 命令行模式 10.1.2 文本輸入模式 10.1.3 末行模式 10.1.4 模式之間的切換 10.2 Vi的進入與退出 10.2.1 Vi的進入 10.2.2 退出 10.3 Vi中的行號 10.4 光標移動操作 10.5 按字移動光標 10.5.1 w和W命令 10.5.2 e和E命令 10.5.3 b和B命令 10.6 屏幕滾動 10.6.1 滾屏命令 10.6.2 分頁命令 10.6.3 狀態命令 10.7 屏幕調零命令 10.8 文本插入操作 10.8.1 插入(Insert)命令 10.8.2 打開(open)命令 10.9 文本修改 10.9.1 文本刪除 10.9.2 取消上一命令( 10.9.3 重復命令( 10.10 實現替換功能 10.11 小結 **1章 應知應會的基本函數 11.1 文件操作函數 11.1.1 文件的創建與打開操作 11.1.2 對文件進行讀寫 11.1.3 文件的關閉操作 11.1.4 改變文件讀寫偏移位置: ls 11.1.5 實例:文件的打開關閉、讀寫 與設置文件讀寫指針 11.1.6 文件描述符和流 11.1.7 文件控制操作函數fc 11.1.8 控制設備文件參數的函數 io 11.1.9 文件的權限修改 11.1.10 文件的屬主與組群修改 11.1.11 獲得文件的狀態 11.1.12 文件的其他操作 11.2 目錄操作 11.2.1 創建和刪除目錄的函數 11.2.2 打開目錄 11.2.3 讀取目錄 11.2.4 關閉目錄 11.2.5 改變工作目錄的函數 11.2.6 取得當前的工作目錄 11.2.7 實例:文件列表程序 11.3 建立臨時文件 11.4 獲取進程號 11.5 獲取節點信息 11.6 小結 **2章 時間問題的處理 12.1 時鐘類型 12.1.1 硬件時鐘 12.1.2 繫統時鐘 12.1.3 繫統時鐘與硬件時鐘的關繫 12.2 UTC、CST與 12.3 Linux下常用的時間類型 12.3.1 time_t時間類型 12.3.2 struct tm時間類型 12.3.3 struct timeval時間類型 12.3.4 struct timespec時間類型 12.3.5 struct tim 12.3.6 獲得自Epoch以來的秒數 12.4 獲得與修改繫統時間 12.5 時間格式轉換 12.5.1 asctime函數 12.5.2 ctime函數 12.5.3 gmtime函數 12.5.4 localtime函數 12.5.5 mktime函數 12.6 使線程睡眠的時間函數 12.6.1 sleep函數 12.6.2 usleep函數 12.6.3 nanosleep函數 12.6.4 示例:為nanosleep()函數指定秒數和納秒數 12.6.5 alarm函數 12.7 延伸閱讀:其他函數 12.8 小結 **3章 簡單的網絡編程實戰 13.1 基礎知識 13.1.1 C/S與B/S結構 13.1.2 UDP/TCP協議 13.1.3 什麼是S 13.2 UDP套接字編程實例 13.2.1 服務端 13.2.2 客戶端 13.2.3 編譯 13.2.4 運行結果 13.2.5 使用Wireshark捕獲數據包 13.2.6 UDP套接字網絡編程涉及的繫統調用過程 13.2.7 建立S 13.2.8 配置S 13.2.9 數據傳輸 13.2.10 延伸閱讀:關閉S 13.3 TCP套接字編程實例 13.3.1 服務端 13.3.2 客戶端 13.3.3 編譯 13.3.4 運行結果 13.3.5 使用Wireshark捕獲數據包 13.3.6 TCP套接字網絡編程所涉及的繫統函數 13.3.7 建立連接 13.3.8 數據傳輸 13.4 小結 **4章 簡單的線程操作實戰 14.1 為何嵌入式繫統中進程不再是重點 14.1.1 進程與線程 14.1.2 線程的優勢 14.1.3 我們的問題 14.1.4 進程通信的統一方式:Socket通信 14.1.5 簡單的線程操作 14.2 創建線程 14.3 獲得本線程的標識符 14.4 結束線程 14.5 延伸閱讀:操作線程共享變量 14.6 小結 **5章 重點剖析:線程同步實例 15.1 互斥鎖 15.1.1 再談線程共享變量的操作 15.1.2 互斥鎖的創建 15.1.3 互斥鎖的銷毀 15.1.4 互斥鎖的操作 15.2 讀寫鎖 15.2.1 讀寫鎖實例 15.2.2 讀寫鎖的創建 15.2.3 獲取讀寫鎖中的讀鎖 15.2.4 獲取讀寫鎖中的寫鎖 15.2.5 解除鎖定的讀寫鎖 15.2.6 銷毀讀寫鎖 15.3 條件變量 15.3.1 忙等待 15.3.2 條件變量 15.3.3 條件變量的創建 15.3.4 條件變量的銷毀 15.3.5 條件變量的等待和激發 15.3.6 互斥鎖和條件變量的結合使用 15.4 線程死鎖 15.5 延伸閱讀:解決死鎖的方法 15.5.1 解決方法一 15.5.2 解決方法二 15.6 小結 **6章 進階私房菜:再談線程 16.1 線程參數的傳遞 16.1.1 單個參數傳遞 16.1.2 多個參數傳遞 16.2 線程私有數據 16.2.1 創建 16.2.2 刪除 16.2.3 讀寫 16.3 修改線程屬性 16.3.1 可以修改的線程屬性 16.3.2 修改線程參數示例 16.4 延伸閱讀:線程池 16.4.1 為什麼需要線程池 16.4.2 構建線程池框架 16.4.3 簡單的線程池示例 16.5 小結 **7章 進階私房菜:再談網絡編程 17.1 對SIGPIPE信號的處理 17.1.1 示例1:SIGPIPE信號的默認處理 17.1.2 示例2:重定義SIGPIPE信號的默認動作 17.1.3 示例3:忽略SIGPIPE信號 17.1.4 示例4:直接使用MSG_NOSIGNAL標識 17.2 修改Socket緩衝區的大小 17.2.1 setsockopt函數與getsockopt函數 17.2.2 示例:修改Socket緩衝區的大小 17.3 檢測服務器與客戶端的連接是否有效 17.4 服務器的多線程處理 17.4.1 客戶端 17.4.2 服務器 17.5 延伸閱讀:重? 17.5.1 TIME_WAIT的兩個作用 17.5.2 如何結束TIME_WAIT狀態 17.5.3 實現可立即重啟的服務器 17.6 小結 **8章 重點突破:網絡編程的字節流處理 18.1 面向字節流的分包問題 18.1.1 數據包的常見結構 18.1.2 線程間數據的交互——環形緩衝區的實現 18.1.3 環形緩衝區 18.1.4 封包與解包 18.1.5 網絡整合使用實例 18.1.6 錯誤數據包的測試 18.2 再談生產者與消費者的示例 18.3 小結 **9章 嵌入式B/S架構開發要點 19.1 幾種嵌入式Web服務器的比較 19.1.1 19.1.2 t 19.1.3 Mini_ 19.1.4 Mon 19.1.5 Lig 19.1.6 A 19.1.7 A 19.2 Boa簡介 19.3 移植與測試Boa的環境配置 19.4 Boa的移植 19.4.1 下載源代碼 19.4.2 編譯 19.4.3 安裝到開發板的Linux文件繫統 19.4.4 配置 19.4.5 測試 19.5 使用 19.5.1 簡介 19.5.2 配置目標板文件繫統 19.5.3 編寫HelloCGI.c程序 19.5.4 交叉編譯 19.5.5 測試 19.6 復雜網頁測試 19.6.1 設置目標板文件繫統/var/www的目錄結構 19.6.2 編制index 19.6.3 測試 19.7 小結 第20章 SQLite數據庫移植與實戰 20.1 SQLite的特性 20.2 SQLite的移植過程 20.2.1 移植的環境 20.2.2 移植步驟 20.3 如何使用Linux C操作S 20.4 數據庫的並發訪問 20.5 小結 附錄A 網絡分析工具Wireshark的使用
" |