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)
- 目錄 (2/2)
- 第一章 導論
- 編譯器、程式語言及物件導向程式設計
- 嵌入式系統開發
- 除錯
- 其他挑戰
- 面對挑戰的原則
- 延伸閱讀
- 第二章 建立系統架構
- 建立系統圖表
- 方塊圖
- 控制階層
- 分層視圖
- 從圖表到架構
- 封裝模組
- 工作委派
- 驅動程式介面:Open、Close、Read、Write、IOCTL
- Adapter模式
- 其他介面概述
- 範例:日誌(Logging)介面 (1/2)
- 範例:日誌(Logging)介面 (2/2)
- 沙箱操作
- 延伸閱讀
- 第三章 把玩硬體
- 軟硬體整合
- 理想專案流程
- 機板 Bring-Up
- 閱讀Datasheet
- 出問題時應該找的Datasheet章節
- 對軟體工程師重要的內容
- 使用Datasheet評估元件
- 處理器是個語言
- 閱讀電路圖
- 準備除錯工具箱(與滅火器)
- 保持機板安全
- 工具箱
- 數位三用電表
- 示波器與邏輯分析儀
- 測試硬體(與軟體)
- 建立測試
- Flash測試範例
- 命令與回應
- Command模式
- 處理錯誤
- 一致的方法
- 錯誤處理函式庫
- 偵錯時脈錯誤
- 延伸閱讀
- 第四章 輸出、輸入與計時器
- 切換各種輸出方式
- 從暫存器開始
- 以接腳輸出
- 開啟LED
- 閃爍LED
- 故障排除
- 從Action中分離硬體
- 針對機板的標頭檔
- I/O處理程式碼
- 主迴圈
- Facade模式
- I/O的輸入
- 簡單的按鈕(Button)介面
- 短按按鈕
- 按鈕中斷
- 設定中斷
- 開關去抖動(Deboucing switches)
- 執行期變動
- 相依性注入
- 使用計時器
- 計時器組成
- 數學計算
- 計時器事件(Timer Ticks)間的等待
- 使用計時器
- 使用脈衝寬度調變(Pulse-Width Modulation)
- 產品出貨
- 延伸閱讀
- 第五章 管理活動流程
- 排程與作業系統基礎
- 工作
- 工作間的通訊
- 避免競賽情況
- 優先權倒置
- 狀態機
- 狀態機範例:紅綠燈控制器
- 以狀態為中心的狀態機
- 以狀態為中心的狀態機與隱藏的轉移
- 以事件為中心的狀態機
- State模式
- 表格驅動式狀態機
- 選擇狀態機實作方式
- 中斷
- 發生IRQ (1/2)
- 發生IRQ (2/2)
- 儲存執行環境
- 從向量表取得ISR
- 呼叫ISR
- 回復執行環境
- 使用時機
- 如何避免使用中斷
- 輪詢(Polling)
- 系統時脈(System Tick)
- 以時間為基礎的事件
- 微型排程器
- Watchdog
- 延伸閱讀
- 第六章 週邊通訊
- 不同型式的週邊
- 外部記憶體
- 按鈕與按鍵矩陣(Key Matrics)
- 感應器
- 驅動器
- 顯示器
- 各種不同的通訊方式
- 序列 (1/2)
- 序列 (2/2)
- 平行
- 乙太網路與WiFi
- 結合週邊與通訊
- 處理資料
- 提昇通訊穩定性
- 改變資料
- 改變演算法
- 延伸閱讀
- 第七章 更新程式
- 內建啟動程式(onboard bootloader)
- 自行建立更新程式
- 修改常駐更新程式
- Brick Loader
- 複製載入器到RAM
- 執行載入器
- 複製新程式到暫存空間
- 危險時刻:清除與程式化
- 重置到新程式
- 安全性
- 連結器命令稿
- 總結
- 第八章 耗費更少成果更多
- 程式空間
- 讀取對應檔(第一部分)
- 消去的程序
- 函式庫
- 函數與巨集
- 常數與字串
- RAM
- 移除malloc
- 讀取對應檔(第二部分)
- 暫存器與區域變數
- 函數鏈
- 全域(globals)的優缺點
- 記憶體覆載(overlay)
- 速度
- 效能分析
- 最佳化 (1/2)
- 最佳化 (2/2)
- 總結
- 延伸閱讀
- 第九章 數學
- 找出快速與慢速運算
- 取平均值
- 使用既有演算法
- 設計與修改演算法
- 多項式分解
- 泰勒展開式
- 常數除法
- 縮放輸入值
- 查找表 (1/2)
- 查找表 (2/2)
- 偽浮點數(Fake Floating-Point Numbers)
- 有理數
- 精確度
- 加法(與減法)
- 乘法(與除法)
- 判別錯誤
- 延伸閱讀
- 第十章 降低功耗
- 認識耗電量
- 離開時隨手關燈
- 關閉週邊
- 關閉未使用I/O設備
- 關閉處理器子系統
- 降低時脈節省電力
- 處理器休眠
- 以中斷為基礎的程式流程模型
- 主迴圈詳解
- 處理器Watchdog
- 避免經常喚醒
- 串聯的處理器
- 延伸閱讀
- 索引 (1/6)
- 索引 (2/6)
- 索引 (3/6)
- 索引 (4/6)
- 索引 (5/6)
- 索引 (6/6)
- 關於作者
- 出版記事
Product information
- Title: 建立嵌入式系統--傑出軟體的設計模式
- Author(s):
- Release date: October 2012
- Publisher(s): GoTop Information, Inc.
- ISBN: None
You might also like
book
機器學習|工作現場的評估、導入與實作
本書是專為想要將機器學習實際應用在工作上的讀者所寫的書,說明如何在職場上應用機器學習與資料分析的工具。 透過本書,您可以了解: .如何啟動機器學習的專案 .如何讓機器學習與現存的系統互動 .如何收集機器學習的資料 .如何建立假設與分析 .機器學習的基礎知識 .分門別類介紹機器學習演算法的各種特徵 .以阻絕垃圾郵件的範例說明如何評估離線預測模型的方法 .如何在機器學習的分類工作收集正確資料的方法 .使用統計學的檢定、因果推論、A/B測試驗證方案效果
book
設計聊天機器人|建立對話式體驗
「Amir Shevat寫了一本所有設計師的書架上必備的藏書。」 -Nir Eyal, 熱門暢銷書《鉤癮效應:創造習慣新商機》作者 「Amir是最早的『機器人之星』。他提倡並教育世界關於這個新領域的知識,並確實地把《設計聊天機器人》撰寫成書並出版,沒有人做得比他更多。」 -Andy Mauro, Automat執行長 從Facebook Messeger到Kik,從Slack機器人到Google Assistant、Amazon Alexa,以及電子郵件機器人,新的對話式應用程式,使我們與軟體互動的方式產生巨大改變。這本實務導向的工具書將指引你如何設計並建構優質的對話式體驗。無論是新的消費型服務或企業內部流程系統,機器人都能幫助人們擁有更高的生產力。 本書適合設計師、產品經理以及企業家,透過實例,探索真實世界中機器人的能與不能。同時,提供實用的機器人設計模式,作為你開發機器人的工具庫。你將學會如何設計有效的機器人初次登場、各種對話流程、定義機器人個性,並在多元控件與文字間找到恰如其分的平衡。 ‧探索各種機器人的應用情境與最佳實務 ‧瞭解機器人的組成—例如品牌與個性、對話、進階介面控件—以及相關的設計模式 …
book
ANGULARJS建置與執行
以結構化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
讓複雜的資料變得一目瞭然的方法 透過本書,您將了解如何在網路上建立並發佈您自己的互動式資料視覺化專案,即便您沒有處理資料視覺化或網頁開發的經驗。透過本書實作導向、容易上手的介紹,學習這門學問將更為簡單與充滿樂趣。作者Scott Murray將告訴大家D3的基礎概念和函式,D3是一個JavaScript的函式庫,可以讓您將資料用視覺化的形式呈現在網頁上。在本書當中,您將能增加網頁程式撰寫的技巧、學習使用諸如HTML與JavaScript等工具。 本書採用逐步導引的方法,適用於許多不同背景的人閱讀,不論您是沒有程式撰寫經驗的設計師或視覺藝術家、想探索資料新聞學這個領域的記者、或者任何想要將視覺化資料並加以分享的人,都能由本書中得到收穫。 .學習HTML、CSS、JavaScript與SVG的基礎概念 .由資料動態產生網頁元素,並套用視覺化規則加以美化 .建立長條圖、散佈圖、圓餅圖、堆疊長條圖、以及重力場版型 .使用順暢的動畫轉移效果,來呈現資料的改變 .透過互動性設計,幫助使用者以不同角度來探索資料 .使用資料建立客製化的地圖 .超過100個可下載的程式碼範例,可讓您親手實作 誰適合閱讀本書 本書是針對非程式設計師所撰寫的資料視覺化專書。如果您是藝術家或圖形設計師,具備視覺藝術技能,但卻沒有處理過資料的經驗或沒寫過程式,那您就是本書的目標讀者;若您是記者或研究員,手上有很多資料,但沒有視覺藝術技能或寫過程式,那您也是本書的目標讀者。