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

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

You might also like

book

機器學習|工作現場的評估、導入與實作

by 有賀康顕, 中山心太, 西林孝

本書是專為想要將機器學習實際應用在工作上的讀者所寫的書,說明如何在職場上應用機器學習與資料分析的工具。 透過本書,您可以了解: .如何啟動機器學習的專案 .如何讓機器學習與現存的系統互動 .如何收集機器學習的資料 .如何建立假設與分析 .機器學習的基礎知識 .分門別類介紹機器學習演算法的各種特徵 .以阻絕垃圾郵件的範例說明如何評估離線預測模型的方法 .如何在機器學習的分類工作收集正確資料的方法 .使用統計學的檢定、因果推論、A/B測試驗證方案效果

book

設計聊天機器人|建立對話式體驗

by Amir Shevat

「Amir Shevat寫了一本所有設計師的書架上必備的藏書。」 -Nir Eyal, 熱門暢銷書《鉤癮效應:創造習慣新商機》作者 「Amir是最早的『機器人之星』。他提倡並教育世界關於這個新領域的知識,並確實地把《設計聊天機器人》撰寫成書並出版,沒有人做得比他更多。」 -Andy Mauro, Automat執行長 從Facebook Messeger到Kik,從Slack機器人到Google Assistant、Amazon Alexa,以及電子郵件機器人,新的對話式應用程式,使我們與軟體互動的方式產生巨大改變。這本實務導向的工具書將指引你如何設計並建構優質的對話式體驗。無論是新的消費型服務或企業內部流程系統,機器人都能幫助人們擁有更高的生產力。 本書適合設計師、產品經理以及企業家,透過實例,探索真實世界中機器人的能與不能。同時,提供實用的機器人設計模式,作為你開發機器人的工具庫。你將學會如何設計有效的機器人初次登場、各種對話流程、定義機器人個性,並在多元控件與文字間找到恰如其分的平衡。 ‧探索各種機器人的應用情境與最佳實務 ‧瞭解機器人的組成—例如品牌與個性、對話、進階介面控件—以及相關的設計模式 …

book

ANGULARJS建置與執行

by Shyam Seshadri, Brad Green

以結構化WEB APPS提高軟體生產率 「即便我是一位業餘的JavaScript開發人員,理解這本書對我而言並不困難。我欣賞本書起始的論述方式─使用AngularJS的理由,循序漸進的從起點開始走上這條學習路。本書提供的程式碼儲存庫(repository)也提供了巨大助益。」 ─Marc Amos──前端開發人員 本書提供完整資訊給想要使用AngularJS開發分支項目(side project)、附加工具或項目主體的讀者,從基礎到進階概念,逐步說明這個超框架(meta-framework)的應用,同時能了解如何開發出大型且可維護的高性能AngularJS應用程式。 透過兩位在Google從事AngularJS相關專案工程師的指引,讀者將能學到建置資料驅動(data-driven)應用程式所需的全部元件,學會使用宣告式程式設計(declarative programming)和模型─檢視─控制器(Model-View-Controller)範式,以及學習應用程式的單元測試(unit tests)。 ‧了解如何使用controllers搬移資料進出views ‧知道何時使用AngularJS服務而非使用controllers ‧與伺服器以非同步(asynchronously)方式通訊,儲存、取得與更新資料 ‧明白何時使用AngularJS過濾器,將資料與值轉變成不同的格式 ‧實作單一頁面(single-page)應用程式,利用ngRoute選擇views與瀏覽途徑 ‧探討基本與進階指令建立可重用元件 …

book

網頁互動式資料視覺化:使用D3

by Scott Murray

讓複雜的資料變得一目瞭然的方法 透過本書,您將了解如何在網路上建立並發佈您自己的互動式資料視覺化專案,即便您沒有處理資料視覺化或網頁開發的經驗。透過本書實作導向、容易上手的介紹,學習這門學問將更為簡單與充滿樂趣。作者Scott Murray將告訴大家D3的基礎概念和函式,D3是一個JavaScript的函式庫,可以讓您將資料用視覺化的形式呈現在網頁上。在本書當中,您將能增加網頁程式撰寫的技巧、學習使用諸如HTML與JavaScript等工具。 本書採用逐步導引的方法,適用於許多不同背景的人閱讀,不論您是沒有程式撰寫經驗的設計師或視覺藝術家、想探索資料新聞學這個領域的記者、或者任何想要將視覺化資料並加以分享的人,都能由本書中得到收穫。 .學習HTML、CSS、JavaScript與SVG的基礎概念 .由資料動態產生網頁元素,並套用視覺化規則加以美化 .建立長條圖、散佈圖、圓餅圖、堆疊長條圖、以及重力場版型 .使用順暢的動畫轉移效果,來呈現資料的改變 .透過互動性設計,幫助使用者以不同角度來探索資料 .使用資料建立客製化的地圖 .超過100個可下載的程式碼範例,可讓您親手實作 誰適合閱讀本書 本書是針對非程式設計師所撰寫的資料視覺化專書。如果您是藝術家或圖形設計師,具備視覺藝術技能,但卻沒有處理過資料的經驗或沒寫過程式,那您就是本書的目標讀者;若您是記者或研究員,手上有很多資料,但沒有視覺藝術技能或寫過程式,那您也是本書的目標讀者。