專業嵌入式軟體開發:全面走向高質高效編程

專業嵌入式軟體開發:全面走向高質高效編程

《專業嵌入式軟體開發:全面走向高質高效編程》是2012年電子工業出版社出版的圖書,作者是李雲。本書適合嵌入式軟體開發領域的新手和在工作中碰到瓶頸的老手閱讀。

基本介紹

  • 書名:專業嵌入式軟體開發:全面走向高質高效編程
  • 作者:李雲
  • ISBN:9787121147838
  • 類別圖書>計算機/網路>軟體工程/開發項目管理 
  • 頁數:620頁
  • 定價:¥94.00 
  • 出版社:電子工業出版社
  • 出版時間:2012年01月01日 
  • 裝幀:平裝
  • 開本:16開
  • 正文語種:簡體中文
  • 條形碼:9787121147838
  • 商品尺寸:25.8x19x2.8cm
內容簡介,編輯推薦,作者簡介,目錄,

內容簡介

《專業嵌入式軟體開發:全面走向高質高效編程》分為6篇。硬體篇就嵌入式軟體開發所需掌握的處理器概念進行了介紹。工具篇對make、gcc編譯器、bintuils工具集、ld連結器和gdb調試器進行了講解,其中對make這一嵌入式開發環境的全能管家進行了精闢的介紹,致力於幫助讀者成為Makefile方面的專家。程式語言篇致力於讓讀者更深入地理解C程式語言。作業系統篇通過循序漸進的方式介紹ClearRTOS的設計與實現,使得讀者能透徹地理解作業系統的關鍵概念和實現原理。設計篇和質量保證篇通過實踐的方式逐步展開講解,以幫助讀者獲得一些實用的設計原則、最佳實踐和一套有效的質量保證方法論。
閱讀《專業嵌入式軟體開發:全面走向高質高效編程》要求讀者已掌握C程式語言和基本的UML知識。

編輯推薦

《專業嵌入式軟體開發:全面走向高質高效編程》是一本全面講解實時作業系統實現原理的書為了使讀者獲得最佳的學習效果,作者為《專業嵌入式軟體開發:全面走向高質高效編程》量身打造了可在Windows和Linux作業系統上直接運行的Clear RTOS“實時”作業系統,並在書中詳解了所有實現細節。
這是一本介紹嵌入式軟體開發所需掌握工具的書作者從實用的角度介紹了gcc編譯器、binutils工具集、Id連結器和gdb調試器,並花了較大的篇幅幫助讀者成為Makefile的專家。
這是一本帶領讀者實踐如何構建高質高效軟體開發方法的書 書中通過展示如何將單元測試框架、靜態分析、動態分析和性能分析整合到開發環境中這種方式,闡述了作者的“以單元測試為中心”和“無縫整合”思想。
這是一位飽嘗自學嵌入式軟體開發痛苦的工程師在軟體行業積累了12年後,與讀者分享心得的一本書中就軟體設計、編程習慣和質量保證等內容與讀者進行了交流。

作者簡介

李雲,現任諾基亞西門子網路技術有限公司軟體架構師。
2年電氣和電子開發工作經驗,自1999年至今從事軟體開發工作曾在浙江大立科技有限公司、UT斯達康杭州研發中心、摩托羅拉杭州研發中心擔任軟體工程師、項目負責人和軟體架構師等職早在2000年開始從事嵌入式軟體開發工作,內容主要包括:作業系統核心、檔案系統和IP協定棧的移植,IDE硬碟、乙太網晶片和PCI匯流排等外設的驅動開發熟悉x86、PowerPC、XScale處理器,以及TIDSP源碼級熟悉uC/OS、RTEMS和VxWorks實時作業系統的實現,並在這些作業系統和Linux作業系統上有著豐富的軟體開發經驗。

目錄

硬體篇
第1章 處理器的基本概念
1.1 區分微處理器與微控制器
1.2 暫存器
1.3 處理器是如何啟動的
1.4 輸入與輸出
1.5 指令與數據
1.6 中斷
1.7 位元組序
1.8 邊界對齊
1.9 程式斷點和數據斷點
1.10 記憶體管理單元
1.11 快取
1.12 小結
第2章 開發活動中的硬體問題
2.1 兩個案例
2.2 案例的背後——信號完整性
2.3 應對方法
2.4 小結
工 具 篇
第3章 make,開發環境全能管家
3.1 從最簡單的Makefile中了解規則
3.2 創建基本的編譯環境
3.2.1 將規則運用於程式編譯
3.2.2 讓Makefile更專業
3.3 提高編譯環境的實用性
3.3.1 讓編譯環境更加有序
3.3.2 提升依賴關係管理
3.4 打造更專業的編譯環境
3.4.1 規劃項目目錄結構
3.4.2 增進復用性
3.4.3 支持頭檔案目錄的指定
3.4.4 實現庫連結
3.4.5 增強可使用性
3.4.6 管理對庫的依賴關係
3.4.7 改善編譯效率
3.4.8 恰當地書寫注釋
3.5 理解make的解析行為
3.6 Makefile的調試
3.7 make的常用選項
3.8 活用make
3.9 小結
第4章 gcc,C語言編譯器
4.1 什麼是交叉編譯器
4.2 gcc幕後工作揭示
4.3 實用的gcc選項
4.3.1 解決宏錯誤的好幫手
4.3.2 輔助編寫彙編程式的好方法
4.3.3 獲取系統頭檔案路徑
4.3.4 產生映射檔案
4.3.5 通過選項定義宏
4.3.6 生成依賴關係
4.3.7 指定程式庫
第5章 binutils工具集,軟體開發利器
5.1 addr2line,指令地址翻譯器
5.2 ar,靜態庫生成器
5.3 nm,符號顯示器
5.4 objdump,信息查看器
5.5 objcopy,段剪輯器
5.6 ranlib,庫索引生成器
5.7 size,段大小觀察器
5.8 strings,字元串窺視器
5.9 strip,程式檔案瘦身器
第6章 ld,連結器
6.1 重定位的概念
6.2 連結腳本
6.2.1 段
6.2.2 符號
6.2.3 存儲區域
6.2.4 常用命令
6.3 常用選項
6.3.1 指定程式的入口點
6.3.2 生成可重定位的中間檔案
6.3.3 指定連結腳本
練習與思考
第7章 gdb,程式調試助手
7.1 啟動和退出gdb
7.2 獲取幫助
7.3 調試程式
7.3.1 斷點設定
7.3.2 控制程式運行
7.3.3 檢查程式
7.3.4 提高調試效率
7.4 查看符號表
7.5 控制gdb的行為
程式語言篇
第8章 掌握必要的彙編知識
8.1 as的語法
8.1.1 宏
8.1.2 彙編命令
8.1.3 符號和標籤
8.1.4 彙編指令
8.2 嵌入彙編的語法
第9章 深入理解程式的結構
9.1 段
9.1.1 指令段
9.1.2 數據段
9.2 棧
9.3 堆
9.4 小結
第10章 ABI/EABI規範,締造程式兼容契約
10.1 定義基本數據類型
10.2 規範位元組對齊處理
10.3 分配暫存器的功能
10.4 規定棧幀結構
10.4.1 棧幀的含義和作用
10.4.2 函式參數的傳遞方法
10.4.3 函式返回值的返回方法
10.5 小結
練習與思考
第11章 混淆指針與數組所導致的問題
11.1 問題示例
11.2 問題分析
11.2.1 數組的記憶體模型
11.2.2 指針的記憶體模型
11.3 問題成因
11.4 預防措施
11.5 小結
第12章 volatile,讓我保持原樣
設計篇
第13章 設計,軟體質量之本
13.1 軟體設計是什麼
13.2 軟體質量的概念
13.3 阻礙改善設計的常見觀念
13.3.1 測試是替罪羊或救命稻草
13.3.2 資源永遠不足
13.3.3 不改變就可以規避風險
13.4 如何提高設計能力
13.5 設計模式、設計原則和設計思想
13.6 放之四海皆適用的設計原則
13.6.1 以人為本
13.6.2 追求簡單性
13.6.3 讓模組善始善終
13.6.4 重視收集統計信息
13.6.5 藉助命名傳達設計意圖
13.6.6 消除“審美告警”
13.6.7 通過機制解決問題
13.6.8 防止他人犯錯
13.6.9 考慮可查錯性
13.7 小結
第14章 模組管理,保障系統有序運行
14.1 管理參照系
14.2 設計思路
14.3 程式實現
14.3.1 引入模組標識
14.3.2 實現層與級的表達
14.3.3 系統狀態和回調函式原型定義
14.3.4 模組註冊
14.3.5 系統啟動
14.3.6 系統關閉
14.4 module示例程式
14.5 模組管理的一些思考
14.6 小結
練習與思考
第15章 錯誤管理,不可或缺的用戶需求
15.1 表達錯誤的通用方法
15.1.1 錯誤碼格式
15.1.2 定義方法
15.1.3 使用示例
15.1.4 提高可使用性
15.1.5 定義和使用錯誤碼的準則
15.2 最佳化錯誤日誌的輸出
15.2.1 傳統方法
15.2.2 更有效的方法
15.3 平台和框架層的錯誤處理
15.4 小結
第16章 目錄結構管理,使項目進展更順利
16.1 規劃目錄結構的意義
16.1.1 書架功能
16.1.2 意識引導
16.1.3 加速新手上手
16.2 出色目錄結構的特點
16.3 一個示例
16.4 小結
第17章 平台與框架開發,高質量軟體打造之路
17.1 區分系統庫、平台和框架
17.1.1 系統庫
17.1.2 平台
17.1.3 框架
17.2 本質和優點
17.3 確立架構模型
17.4 小結
第18章 可開發性設計,一種高效且經濟的開發模式
18.1 可開發性問題一瞥
18.2 可開發性設計的內涵
18.3 引入設備抽象層
18.4 更複雜的設備抽象層
18.5 圖形界面的可開發性設計
18.5.1 增強設備抽象層
18.5.2 提供可視化編輯環境
18.6 其他可開發性設計
18.7 小結
作業系統篇
第19章 引導載入器,系統啟航者
19.1 功能
19.2 檔案存儲布局
19.3 程式載入原理
19.4 優點
19.5 小結
練習與思考
第20章 任務,軟體基本調度單元
20.1 任務情景
20.1.1 情景內容
20.1.2 情景保存
20.1.3 情景恢復
20.1.4 情景切換
20.2 任務調度
20.2.1 調度算法
20.2.2 調度器
20.3 任務的生命周期
20.4 任務控制
20.4.1 任務創建
20.4.2 任務啟動
20.4.3 任務刪除
20.4.4 任務掛起
20.4.5 任務恢復
20.4.6 任務睡眠
20.5 競爭問題與中斷控制
20.5.1 競爭問題的產生
20.5.2 通過中斷控制解決競爭問題
20.5.3 中斷控制的嵌套問題
20.6 任務與中斷狀態
20.7 任務棧溢出檢測
20.8 滴答與空閒任務
20.9 多任務環境控制
20.10 任務模組管理
20.11 taskv1示例程式
20.12 任務鉤子函式
20.13 任務變數
20.13.1 taskv2示例程式
20.13.2 原理
20.13.3 實現
20.14 其他概念與思考
20.14.1 搶占式任務與實時系統的關係
20.14.2 影響任務切換效率的因素
20.14.3 避免直接刪除任務
20.14.4 小心多任務設計被濫用
20.15 小結
練習與思考
第21章 任務同步與通信,實現協同工作
21.1 信號量
21.1.1 套用場合
21.1.2 程式實現
21.1.3 semaphore示例程式
21.2 互斥鎖
21.2.1 套用場合
21.2.2 程式實現
21.2.3 mutex示例程式
21.2.4 優先權反轉與繼承
21.2.5 遞歸鎖
21.3 事件
21.3.1 套用場合
21.3.2 程式實現
21.3.3 event示例程式
21.4 訊息佇列
21.4.1 套用場合
21.4.2 程式實現
21.4.3 實現訊息佇列
21.4.4 queue示例程式
21.4.5 使用指南
21.5 死鎖及預防
21.6 小結
練習與思考
第22章 記憶體管理,協調動態記憶體的使用
22.1 堆管理
22.1.1 heapv1示例程式
22.1.2 程式實現
22.1.3 設計改進
22.1.4 支持記憶體泄漏檢測
22.1.5 實現記憶體溢出檢測
22.1.6 記憶體碎片問題
22.2 記憶體池管理
22.2.1 mpool示例程式
22.2.2 程式實現
22.2.3 緩衝區泄漏檢測
22.3 小結
練習與思考
第23章 設備管理,方便與外設互動
23.1 字元設備管理
23.2 中斷管理
23.2.1 中斷向量表
23.2.2 中斷控制
23.2.3 中斷狀態管理
23.2.4 設備與中斷
23.2.5 模組管理
23.3 實現設備管理
23.3.1 安裝驅動程式
23.3.2 註冊設備
23.3.3 打開設備
23.3.4 關閉設備
23.3.5 設備讀寫與控制
23.4 設備驅動程式實現
23.4.1 “滴答”設備
23.4.2 控制台設備
23.4.3 終止程式運行設備
23.5 驅動安裝與設備註冊
23.6 小結
練習與思考
第24章 定時器,程式鬧鐘
24.1 軟體定時器分類
24.2 設計思路
24.3 中斷回調定時器
24.3.1 程式實現
24.3.2 timerv1示例程式
24.4 定時誤差
24.5 提高遍歷效率
24.6 改善實時性
24.6.1 實時性分析
24.6.2 改進實時性
24.7 任務回調定時器
24.7.1 程式實現
24.7.2 timerv3示例程式
24.8 小結
練習與思考
第25章 ClearRTOS“實時”作業系統
25.1 設計原則
25.2 源程式目錄管理
25.3 讓Makefile體現概念
25.4 實現集中配置
25.5 改進與移植
質量保證篇
第26章 質量保證導言
26.1 軟體開發的特點
26.1.1 腦力密集型工作
26.1.2 實現不具唯一性
26.1.3 隱性成本高
26.1.4 忽視的細節很容易被放大
26.1.5 質量難以評估
26.2 保證質量的關鍵要素
26.2.1 完備的需求分析
26.2.2 高質量的設計
26.2.3 編程好習慣
26.2.4 充分的驗證
26.2.5 必要的流程
26.2.6 合適的工具
26.2.7 言簡意賅的文檔
26.3 質量保證需要系統性的方法論
26.3.1 方法論 = 流程 + 工具
26.3.2 構建有效方法論的核心手段
26.4 走出質量困境的指導性思想
26.4.1 從管理者的角度
26.4.2 從工程師的角度
26.4.3 從組織的角度
26.5 小結
第27章 編程好習慣,質量保證的基本條件
27.1 終生受用的編程好習慣
27.1.1 判斷失敗而非成功
27.1.2 採用sizeof減少記憶體操作失誤
27.1.3 禁止程式語言特性
27.1.4 恰當使用gto語句
27.1.5 合理運用數組
27.1.6 以逆序方式釋放資源
27.1.7 在模組對外接口中防範錯誤
27.1.8 避免出現魔數
27.1.9 利用程式語言特性提高效率
27.1.10 復用代碼提高維護性
27.1.11 藉助隱式初始化簡化程式邏輯
27.1.12 青睞小粒度鎖
27.1.13 精確包含頭檔案
27.1.14 讓模組的對外頭檔案保持簡潔
27.1.15 只暴露必要的變數和函式
27.1.16 清除編譯器報告的所有警告
27.2 小結
第28章 單元測試,被忽視的質量保證方法
28.1 警惕單元測試無用論
28.2 一個簡單但不完善的單元測試例子
28.3 構建單元測試框架
28.4 無縫整合單元測試
28.4.1 維護規則
28.4.2 目錄規劃
28.4.3 更改Makefile
28.4.4 檢查整合效果
28.5 幾個實施問題
28.6 樁函式和打樁
28.7 錯誤注入,一種可測試性設計
28.8 平台開發與單元測試
28.9 被測行為的確定性
28.10 測試用例的有效性
28.11 小結
第29章 代碼覆蓋,單元測試效果的衡量指標
29.1 了解代碼覆蓋工具
29.2 無縫整合代碼覆蓋
29.2.1 更改Makefile
29.2.2 檢查整合效果
29.3 三個代碼覆蓋程度指標
29.4 小結
第30章 靜態分析,防止將失誤帶給用戶
30.1 認識靜態分析工具
30.2 無縫整合靜態分析
30.2.1 更改Makefile
30.2.2 檢查整合效果
30.3 小結
第31章 動態分析,使程式更健壯
31.1 結識動態分析工具
31.2 無縫整合動態分析
31.2.1 更改Makefile
31.2.2 檢查整合效果
31.3 小結
第32章 性能分析,讓最佳化程式有的放矢
32.1 初探性能分析工具
32.2 無縫整合性能分析
32.2.1 更改Makefile
32.2.2 檢查整合效果
32.3 小結
第33章 qBench,一個開發高質軟體的工作檯
參考資料

相關詞條

熱門詞條

聯絡我們