建立嵌入式系統--傑出軟體的設計模式

Book description

「《建立嵌入式系統》是想要進入有趣(且有錢賺)嵌入式系統世界的所有C語言程式設計師都必需讀的書。這本書寫作良好而且有趣,同時包含許多清晰的範例。」
-- Jack Ganssle, 作家與嵌入式系統專家

想要開發嵌入式系統嗎?嵌入式系統對效率有很高的要求,需要遵循有紀律的程式設計原則,結合傳統的軟體設計模式與嵌入式程式設計領域中特有的設計模式。本書提供了簡明的指導,協助你建立良好的程式設計實作方式,學習如何針對處理器而非作業系統建立架構,以及處理硬體限制與製造需求的獨特技巧。

本書作者Elecia White是嵌入式系統專家,建立過的系統涵蓋道路監控系統以及兒童玩具上的DNA掃描器。本書內容並非針對特定平台,適合中、高階程式設計師閱讀。

‧最佳化系統以降低成本並提高效能
‧在資源有限的環境中建立強固的軟體架構
‧涵蓋掃描器、馬達等I/O設備
‧以更少的資源達成更多的成果:降低使用的RAM、程式碼空間、處理器週期以及藉電量
‧學習如何在CPU中直接更新嵌入式程式碼
‧發現如何在小型處理器上實作複雜的數學計算
‧瞭解當你應徵嵌入式系統職位時,面試官在意的重點

Elecia White 是Logical Elegance創辦人,這是位於San Jose的嵌入式系統顧問公司。她喜歡新奇的小裝置,包含小型醫療器材、慣性量測元件(inertial measurement unit)、教育性玩具以及槍聲定位系統(gunshot location system)。

 

 

Table of contents

  1. 封面
  2. 書名頁
  3. 英文版權頁
  4. 前言
  5. 目錄 (1/2)
  6. 目錄 (2/2)
  7. 第一章 導論
  8. 編譯器、程式語言及物件導向程式設計
  9. 嵌入式系統開發
  10. 除錯
  11. 其他挑戰
  12. 面對挑戰的原則
  13. 延伸閱讀
  14. 第二章 建立系統架構
  15. 建立系統圖表
  16. 方塊圖
  17. 控制階層
  18. 分層視圖
  19. 從圖表到架構
  20. 封裝模組
  21. 工作委派
  22. 驅動程式介面:Open、Close、Read、Write、IOCTL
  23. Adapter模式
  24. 其他介面概述
  25. 範例:日誌(Logging)介面 (1/2)
  26. 範例:日誌(Logging)介面 (2/2)
  27. 沙箱操作
  28. 延伸閱讀
  29. 第三章 把玩硬體
  30. 軟硬體整合
  31. 理想專案流程
  32. 機板 Bring-Up
  33. 閱讀Datasheet
  34. 出問題時應該找的Datasheet章節
  35. 對軟體工程師重要的內容
  36. 使用Datasheet評估元件
  37. 處理器是個語言
  38. 閱讀電路圖
  39. 準備除錯工具箱(與滅火器)
  40. 保持機板安全
  41. 工具箱
  42. 數位三用電表
  43. 示波器與邏輯分析儀
  44. 測試硬體(與軟體)
  45. 建立測試
  46. Flash測試範例
  47. 命令與回應
  48. Command模式
  49. 處理錯誤
  50. 一致的方法
  51. 錯誤處理函式庫
  52. 偵錯時脈錯誤
  53. 延伸閱讀
  54. 第四章 輸出、輸入與計時器
  55. 切換各種輸出方式
  56. 從暫存器開始
  57. 以接腳輸出
  58. 開啟LED
  59. 閃爍LED
  60. 故障排除
  61. 從Action中分離硬體
  62. 針對機板的標頭檔
  63. I/O處理程式碼
  64. 主迴圈
  65. Facade模式
  66. I/O的輸入
  67. 簡單的按鈕(Button)介面
  68. 短按按鈕
  69. 按鈕中斷
  70. 設定中斷
  71. 開關去抖動(Deboucing switches)
  72. 執行期變動
  73. 相依性注入
  74. 使用計時器
  75. 計時器組成
  76. 數學計算
  77. 計時器事件(Timer Ticks)間的等待
  78. 使用計時器
  79. 使用脈衝寬度調變(Pulse-Width Modulation)
  80. 產品出貨
  81. 延伸閱讀
  82. 第五章 管理活動流程
  83. 排程與作業系統基礎
  84. 工作
  85. 工作間的通訊
  86. 避免競賽情況
  87. 優先權倒置
  88. 狀態機
  89. 狀態機範例:紅綠燈控制器
  90. 以狀態為中心的狀態機
  91. 以狀態為中心的狀態機與隱藏的轉移
  92. 以事件為中心的狀態機
  93. State模式
  94. 表格驅動式狀態機
  95. 選擇狀態機實作方式
  96. 中斷
  97. 發生IRQ (1/2)
  98. 發生IRQ (2/2)
  99. 儲存執行環境
  100. 從向量表取得ISR
  101. 呼叫ISR
  102. 回復執行環境
  103. 使用時機
  104. 如何避免使用中斷
  105. 輪詢(Polling)
  106. 系統時脈(System Tick)
  107. 以時間為基礎的事件
  108. 微型排程器
  109. Watchdog
  110. 延伸閱讀
  111. 第六章 週邊通訊
  112. 不同型式的週邊
  113. 外部記憶體
  114. 按鈕與按鍵矩陣(Key Matrics)
  115. 感應器
  116. 驅動器
  117. 顯示器
  118. 各種不同的通訊方式
  119. 序列 (1/2)
  120. 序列 (2/2)
  121. 平行
  122. 乙太網路與WiFi
  123. 結合週邊與通訊
  124. 處理資料
  125. 提昇通訊穩定性
  126. 改變資料
  127. 改變演算法
  128. 延伸閱讀
  129. 第七章 更新程式
  130. 內建啟動程式(onboard bootloader)
  131. 自行建立更新程式
  132. 修改常駐更新程式
  133. Brick Loader
  134. 複製載入器到RAM
  135. 執行載入器
  136. 複製新程式到暫存空間
  137. 危險時刻:清除與程式化
  138. 重置到新程式
  139. 安全性
  140. 連結器命令稿
  141. 總結
  142. 第八章 耗費更少成果更多
  143. 程式空間
  144. 讀取對應檔(第一部分)
  145. 消去的程序
  146. 函式庫
  147. 函數與巨集
  148. 常數與字串
  149. RAM
  150. 移除malloc
  151. 讀取對應檔(第二部分)
  152. 暫存器與區域變數
  153. 函數鏈
  154. 全域(globals)的優缺點
  155. 記憶體覆載(overlay)
  156. 速度
  157. 效能分析
  158. 最佳化 (1/2)
  159. 最佳化 (2/2)
  160. 總結
  161. 延伸閱讀
  162. 第九章 數學
  163. 找出快速與慢速運算
  164. 取平均值
  165. 使用既有演算法
  166. 設計與修改演算法
  167. 多項式分解
  168. 泰勒展開式
  169. 常數除法
  170. 縮放輸入值
  171. 查找表 (1/2)
  172. 查找表 (2/2)
  173. 偽浮點數(Fake Floating-Point Numbers)
  174. 有理數
  175. 精確度
  176. 加法(與減法)
  177. 乘法(與除法)
  178. 判別錯誤
  179. 延伸閱讀
  180. 第十章 降低功耗
  181. 認識耗電量
  182. 離開時隨手關燈
  183. 關閉週邊
  184. 關閉未使用I/O設備
  185. 關閉處理器子系統
  186. 降低時脈節省電力
  187. 處理器休眠
  188. 以中斷為基礎的程式流程模型
  189. 主迴圈詳解
  190. 處理器Watchdog
  191. 避免經常喚醒
  192. 串聯的處理器
  193. 延伸閱讀
  194. 索引 (1/6)
  195. 索引 (2/6)
  196. 索引 (3/6)
  197. 索引 (4/6)
  198. 索引 (5/6)
  199. 索引 (6/6)
  200. 關於作者
  201. 出版記事

Product information

  • Title: 建立嵌入式系統--傑出軟體的設計模式
  • Author(s): Elecia White
  • Release date: October 2012
  • Publisher(s): GoTop Information, Inc.
  • ISBN: None