內容簡介
隨著嵌入式應用領域的拓展,為瞭針對復雜設備快速開發高效、健壯的嵌入式軟件,開發者必須係統地掌握嵌入式係統開發的各個環節。
本書覆蓋瞭所有嵌入式工程師必須掌握的各個關鍵的主題,包括設計、開發、編程語言(C/C++、UML)、RTOS、網絡等。同時,考慮到正在蓬勃發展的Linux和Android,以及多核技術,本書也為讀者提供瞭掌握相關技術必不可少的內容。
Colin Walls在書中分享瞭他多年的行業工作經驗和對嵌入式軟件開發的深入理解。內容幾乎覆蓋瞭嵌入式開發的整個環節:設計、開發、管理、調試流程、授權以及重用等。對於剛剛開始從事嵌入式軟件開發的工程師或有經驗的嵌入式軟件開發工程師,這些經驗對於他們提高開發技能都有很大的幫助。他也在書中提供瞭很多非常細節的技巧和技術,同時,他也對這些技術進行瞭縝密闡釋。
作者簡介
Colin Walls,在電子行業擁有長達30年的工作經驗,他大多數工作經曆是在和嵌入式軟件打交道。他現在供職於Mentor Graphics嵌入式軟件部門,主要負責市場工作。在嵌入式的會議和研討會經常會看到他的身影,他有兩本嵌入式方麵的著作,並在很多著名的雜誌上發錶過技術文章。
譯者簡介
何小慶(Allan He)
何小慶畢業於北京航空航天大學,計算機應用專業碩士,曾在國企和外企工作。創建過嵌入式軟件企業和研究中心,後在高校科技期刊兼職、授課和組織嵌入式係統協會和科技沙龍。何小慶較早涉足嵌入式OS領域,有近30年嵌入式係統技術和市場經驗。參加過電網自動化係統、數字程控交換機、通信協議軟件和智能手機項目開發。齣版過多本譯著並發錶過數十篇文章。目前關注的技術領域:嵌入式OS、物聯網和技術創業。
張浩中(Windness Zhang)
本科畢業於中山大學環境工程係,現為北京航空航天大學嵌入式軟件專業研究生。本科時自學計算機課程十多門,對智慧環保(地球)、物聯網、虛擬現實等相關領域非常感興趣。先後完成若乾Android應用開發項目;熟悉Eclipse插件開發,研究過無綫傳感器網絡定位算法,在C/C++可靠性驗證(內存檢測)方麵有一定深入研究;目前正在導師的指導下,作為項目經理參與商業項目開發。
何靈淵(Lingyuan He)
北京理工大學計算機科學專業本科學生,目前參加雙學位項目在美國斯蒂文森理工學院(Stevens Institute of Technology)學習。喜愛編程技術,熟悉C++和Java,有Android應用軟件編程經驗,參與過實際項目。何靈淵擅長寫作、攝影。中學時代就開始在《北京青年報》發錶文章,譯著《解讀雲計算》已齣版,學習之餘不斷更新攝影博客和自己的模擬飛行站點。
目錄
譯者序
序
前言
第1版前言
網站上的內容
嵌入式軟件開發路綫圖
第1章 嵌入式軟件
1.1 嵌入式應用的影響
1.1.1 來自開發的挑戰
1.1.2 軟件復用
1.1.3 實時操作係統
1.1.4 文件係統
1.1.5 USB
1.1.6 圖形
1.1.7 網絡
1.1.8 小結
1.2 嵌入式係統的存儲器
1.2.1 存儲器
1.2.2 軟件開發麵臨的挑戰
1.2.3 所有東西都會齣錯
1.2.4 好的解決方法
1.3 存儲器架構
1.3.1 選項
1.3.2 平麵單一地址空間存儲器
1.3.3 分段空間存儲器
1.3.4 單元切換空間存儲器
1.3.5 多地址空間存儲器
1.3.6 虛擬空間存儲器
1.3.7 高速緩衝存儲器
1.3.8 存儲器管理單元
1.3.9 小結
1.4 軟件是如何影響硬件設計的
1.4.1 誰在設計硬件
1.4.2 軟件主導硬件
1.4.3 軟硬件的均衡
1.4.4 硬件調試
1.4.5 自檢
1.4.6 小結
1.5 將軟件移植到新處理器架構上
1.5.1 特定目標
1.5.2 RTOS問題
1.5.3 處理器移植和開放標準
1.5.4 小結
1.6 汽車電子的嵌入式軟件
1.6.1 概要
1.6.2 汽車電子特徵
1.6.3 編程問題
1.6.4 實時操作係統因素
1.6.5 小結
1.7 芯片設計時如何選擇CPU
1.7.1 設計復雜度
1.7.2 設計復用性
1.7.3 存儲器架構和保護
1.7.4 CPU性能
1.7.5 功耗
1.7.6 成本
1.7.7 軟件問題
1.7.8 多核SoC
1.7.9 小結
1.8 USB軟件的介紹
1.8.1 什麼是USB
1.8.2 USB外設
1.8.3 USB通信
1.8.4 USB軟件
1.8.5 USB和嵌入式係統
1.8.6 小結
1.9 走嚮USB 3.0時代
1.9.1 概述
1.9.2 總綫架構
1.9.3 綫纜和連接器
1.9.4 封包路由
1.9.5 雙嚮協議流
1.9.6 批量流
1.9.7 USB 3.0電源管理
1.9.8 USB 3.0集綫器
1.9.9 xHCI:新型主控製器接口
1.9.10 USB的未來應用
1.9.11 小結
擴展閱讀
第2章 設計和開發
2.1 嵌入式係統軟件開發的新興技術
2.1.1 微處理器技術
2.1.2 係統架構
2.1.3 設計組閤性
2.1.4 軟件內容
2.1.5 編程語言
2.1.6 軟件團隊的規模和分布
2.1.7 UML和建模
2.1.8 關鍵技術
2.1.9 小結
2.2 選擇開發工具
2.2.1 開發工具鏈
2.2.2 編譯器特徵
2.2.3 嵌入式係統的擴展
2.2.4 優化
2.2.5 構建工具:簡要介紹關鍵問題
2.2.6 調試
2.2.7 調試工具:關鍵問題的迴顧
2.2.8 標準和開發工具集成
2.2.9 選擇的暗示
2.2.10 小結
2.3 Eclipse:集成嵌入式開發工具
2.3.1 介紹
2.3.2 Eclipse平颱的思想
2.3.3 平颱
2.3.4 使用Eclipse進行嵌入式開發
2.3.5 小結
2.4 跨越RTOS界限的開發係統
2.4.1 標準化是解決之道
2.4.2 Eclipse解決方案
2.4.3 Eclipse插件
2.4.4 Eclipse授權
2.4.5 Eclipse用戶優勢
2.4.6 視圖
2.4.7 非嵌入式插件
2.5 嵌入式軟件和UML
2.5.1 為什麼要用UML建模
2.5.2 從架構中分離應用
2.5.3 xtUML代碼生成
2.5.4 小結
2.6 用戶界麵開發
2.6.1 用戶界麵的多樣性
2.6.2 用戶界麵的實現
2.6.3 一個閤理化的UI解決方案
2.6.4 小結
2.7 軟件和功耗
2.7.1 介紹
2.7.2 軟件問題
2.7.3 軟件中的功耗控製
2.7.4 多核
2.7.5 硬件問題
2.7.6 虛擬編程
2.7.7 小結
第3章 編程
3.1 為特殊存儲器編程
3.1.1 特殊存儲器
3.1.2 非易失性RAM
3.1.3 共享存儲器
3.1.4 小結
3.2 嵌入式係統中的自檢
3.2.1 存儲器測試
3.2.2 I/O設備
3.2.3 多綫程問題
3.2.4 看門狗
3.2.5 自檢失敗
3.2.6 最後一些要點
3.3 命令行解釋器
3.3.1 嵌入式係統的診斷功能
3.3.2 讓嵌入式係統開始運行
3.3.3 命令行解釋器--需求
3.3.4 設計命令行解釋器
3.3.5 命令行解釋器的實現
3.3.6 命令行解釋器的原型代碼
3.3.7 小結
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 使用全局變量
第4章 C語言
4.1 共同變量
4.2 C函數的原型
4.2.1 在函數原型之前
4.2.2 函數原型的應用
4.2.3 使用函數原型
4.3 中斷函數和ANSI關鍵字
4.3.1 中斷函數
4.3.2 ANSI C const關鍵字
4.3.3 ANSI C volatile關鍵字
4.4 從位開始
4.4.1 位運算
4.4.2 二進製常量
4.4.3 結構體中的位域
4.4.4 微處理器位域指令
4.4.5 I/O設備和位域
4.4.6 小結
4.5 浮點數在編程中的應用
4.5.1 示例
4.5.2 程序實測
4.5.3 問題的解答
4.5.4 從教訓中學習
4.6 從不同的角度看待C語言
4.6.1 靜態數據
4.6.2 關於分號
4.6.3 指針和指針運算
4.6.4 聰明反被聰明誤
4.6.5 小結
4.7 減少函數調用的開銷
4.7.1 編譯器和結構化代碼
4.7.2 內聯函數
4.7.3 函數調用
4.7.4 參數傳遞
4.7.5 局部存儲
4.7.6 生成堆棧幀
4.7.7 返迴值
4.7.8 小結
4.8 精通結構布局
4.8.1 關鍵概念
4.8.2 位域
4.8.3 提示和技巧
4.9 C語言編程和存儲器
4.9.1 存儲器
4.9.2 段
4.9.3 小結
4.10 C/C++中的指針和數組
4.10.1 指針和指針運算
4.10.2 數組和指針
4.10.3 小結
4.11 C/C++中的動態存儲
4.11.1 C/C++存儲空間
4.11.2 C語言中的動態存儲
4.11.3 C++中的動態存儲
4.11.4 和動態存儲相關的問題
4.11.5 存儲空間碎片化
4.11.6 RTOS中的存儲管理
4.11.7 實時存儲解決方案
4.11.8 小結
第5章 C++
5.1 從管理的角度看嵌入式係統中的C++
5.1.1 嵌入式係統開發團隊
5.1.2 麵嚮對象編程
5.1.3 團隊管理和麵嚮對象方法
5.1.4 作為麵嚮對象語言的C++
5.1.5 開銷
5.1.6 前方的路
5.2 為什麼要從C轉嚮C++
5.2.1 隱藏具體實現的細節
5.2.2 重用類的代碼
5.2.3 重用通用的類
5.2.4 擴展操作符的功能
5.2.5 從基類中衍生新的類
5.2.6 通過函數原型避免錯誤
5.2.7 增加函數參數而不改變調用語句
5.2.8 使用更加簡單和安全的I/O
5.2.9 通過內聯函數提升性能
5.2.10 重載函數名
5.2.11 對嵌入式係統的支持
5.2.12 轉變的代價
5.2.13 嚮C++中引入C代碼
5.2.14 難點:設計對象
5.2.15 如果沒有齣現問題,就不要去改變
5.3 掃清通嚮C++的障礙
5.3.1 過渡策略
5.3.2 循序漸進
5.3.3 實現可重用性
5.3.4 編寫Clean C代碼
5.3.5 C+:接近C++
5.3.6 小結:前方的路
5.4 C++模闆的優勢與劣勢
5.4.1 什麼是模闆
5.4.2 模闆的實例化
5.4.3 模闆帶來的問題
5.4.4 多個模闆參數
5.4.5 模闆的其他應用
5.4.6 小結
5.4.7 後記
5.5 C++的異常處理
5.5.1 C語言中的錯誤處理
5.5.2 異常和中斷無關
5.5.3 C++的異常處理
5.5.4 特殊情況
5.5.5 EHS和嵌入式係統
5.5.6 小結
5.6 C++的代碼大小和性能
5.6.1 C++比C語言更高效嗎
5.6.2 C++對內存需求的影響
5.6.3 正確使用C++
5.6.4 小結
5.7 C++中的隻寫端口
5.7.1 封裝專業知識
5.7.2 問題的定義
5.7.3 C語言的解決方案
5.7.4 使用C++進行嘗試
5.7.5 重載操作符
5.7.6 對wop類進行增強
5.7.7 可重入性
5.7.8 使用RTOS
5.7.9 封裝專業知識
5.7.10 其他的可能性
5.7.11 前方的路
5.8 在C++中使用非易失性RAM
5.8.1 程序編製對類定義的需求
5.8.2 NVRAM的實現
5.8.3 C++的nvram類
5.8.4 繼續改進nvram類
5.8.5 小結
擴展閱讀
第6章 實時性
6.1 實時係統
6.1.1 實時係統的實現
6.1.2 處理循環
6.1.3 中斷
6.1.4 多任務
6.1.5 使用實時操作係統
6.2 嵌入式係統的可視化程序模型
6.2.1 哪種程序模型最適閤用來構建實時係統
6.2.2 為何要為實時係統建立模型
6.2.3 各種模型之間有什麼不同,各有什麼優缺點
6.2.4 什麼是單綫程程序模型
6.2.5 單綫程程序模型有什麼優缺點
6.2.6 輪詢循環是不是一個單綫程程序
6.2.7 狀態機是不是一個單綫程程序
6.2.8 什麼是多綫程係統
6.2.9 多綫程程序模型有哪些優缺點
6.2.10 多綫程真的同時運行嗎
6.2.11 如何獲取實時係統的多綫程環境
6.3 嵌入式係統的事件處理
6.3.1 事件
6.3.2 信號和事件是不是同一迴事
6.3.3 什麼樣的事件是時間敏感的
6.3.4 當偵測到一個異常,微處理器如何處理
6.3.5 所有的異常都一樣嗎
6.3.6 同步異常
6.3.7 異步異常
6.3.8 中斷是如何産生的和服務的
6.3.9 CPU保存的狀態是什麼
6.3.10 機器狀態就是綫程狀態嗎
6.3.11 異常處理程序應該用匯編語言還是C語言來寫
6.3.12 怎樣避免在異常處理程序上花費時間
6.4 中斷程序
6.4.1 設置中斷
6.4.2 中斷服務例程
6.4.3 中斷嚮量
6.4.4 初始化
6.4.5 小結
第7章 實時操作係統
7.1 RTOS的調試技術
7.1.1 概要
7.1.2 多進程的概念
7.1.3 執行環境
7.1.4 與目標機連接
7.1.5 調試模式
7.1.6 RTOS級的調試功能
7.1.7 代碼共享
7.1.8 任務級的斷點
7.1.9 任務相關性
7.1.10 內存管理單元
7.1.11 多處理器
7.1.12 小結
7.2 自己開發的RTOS調試解決方案
7.2.1 任務級調試的實現
7.2.2 任務級調試工具
7.2.3 小結
7.3 調試:堆棧溢齣
7.4 何時考慮使用商業化RTOS
7.4.1 商用化RTOS和自己開發RTOS
7.4.2 商業化RTOS的優點
7.4.3 商業化RTOS的缺點
7.4.4 為什麼要自己開發RTOS
7.4.5 不自己開發RTOS的理由
7.4.6 小結
7.5 移植RTOS
7.5.1 從一個RTOS轉移到另一個RTOS
7.5.2 代碼移植
7.5.3 封裝
7.5.4 驅動和其他
7.5.5 調試問題
7.5.6 小結
7.6 RTOS驅動程序開發簡介
7.6.1 設備驅動的兩個方麵
7.6.2 數據損壞
7.6.3 綫程控製
7.6.4 程序邏輯
7.6.5 小結
7.7 調度算法和優先級反轉
7.7.1 概要
7.7.2 實時性需求
7.7.3 調度算法
7.7.4 操作係統和應用的含義
7.7.5 小結
7.8 時間與優先級調度比較
7.8.1 RTOS調度
7.8.2 理想世界
7.8.3 現實世界中的優先級調度
7.8.4 不釋放控製權的時域限製
7.8.5 釋放控製權的時域限製
7.8.6 小結
7.9 嵌入式文件係統
7.9.1 嵌入式文件係統的需求
7.9.2 MS-DOS文件係統介紹
7.9.3 長文件名
7.9.4 格式化
7.9.5 分區
7.9.6 設備
7.10 OSEK:一種RTOS標準
7.10.1 OSEK簡介
7.10.2 OSEK需求
7.10.3 OSEK的任務
7.10.4 報警
7.10.5 錯誤處理
第8章 網絡
8.1 Wi-Fi簡介
8.1.1 無綫數據通信
8.1.2 IEEE 802.11
8.1.3 802.11基礎知識
8.1.4 Wi-Fi和藍牙
8.1.5 發展前景
8.2 哪些人需要Web服務器
8.2.1 簡介
8.2.2 三個重要的功能
8.2.3 Web服務器的運行
8.2.4 Web 服務器功能總結
8.2.5 其他需要考慮的地方
8.2.6 小結
8.3 SNMP介紹
8.3.1 為什麼使用SNMP
8.3.2 網絡管理者的職責
8.3.3 架構模型
8.3.4 公眾的誤解
8.3.5 應用級的管理者和代理
8.3.6 如何編寫MIB
8.3.7 術語
8.3.8 結論
8.4 下一代互聯網協議:IPv6
8.4.1 互聯網協議的局限
8.4.2 IP 第6版介紹
8.4.3 雙棧簡化過渡
8.4.4 IPv6如何工作
8.4.5 RFC支持
8.5 DHCP基礎
8.5.1 DHCP服務器
8.5.2 工作原理
8.5.3 RFC支持
8.6 NAT詳解
8.6.1 NAT詳解
8.6.2 RFC支持
8.6.3 支持的協議
8.6.4 應用級網關
8.6.5 私有網絡地址分配
8.7 PPP:點對點協議
8.7.1 介紹
8.7.2 PPP如何工作
8.7.3 PPP 詳解
8.7.4 RFC支持
8.8 SSL 介紹
8.8.1 介紹
8.8.2 SSL如何工作
8.8.3 一些SSL細節
8.9 DHCP調試小技巧
8.10 IP多播
電子與嵌入式係統設計譯叢:嵌入式軟件開發精解 epub pdf mobi txt 電子書 下載 2024
電子與嵌入式係統設計譯叢:嵌入式軟件開發精解 下載 epub mobi pdf txt 電子書