這本書講得是嵌入式系統的軟體開發,嵌入式系統的形貌多樣,這本書將系統開發者所應俱備的基礎摘要出來,值得研讀。此書共有六大篇,分別為:
- 硬件篇:嵌入式軟體的開發常常脫離不了對硬體的直接控制,所以基礎的硬體知識在一開始就說明。當然,實際開發時仍需與硬體工程師請教細節。
- 工具篇:作者花了非常大的篇幅介紹了makefile的撰寫,makefile作為C語言的主要建置工具,能夠善用它的能力規劃出模組化、易分工的開發環境變得非常重要,但現實業界的工程師真的了解的卻不多,使得許多SDK釋出後,客戶問題一大堆...除了makefile,也簡要說明了gcc、binutils、ld、gdb...利器善事,雖不難,但很重要。
- 編程語言篇:嵌入式系統中,C語言的使用佔據核心地位,所以俱備解讀C語言轉換成組合語言的過程同樣也是必須的。在這篇中,作者一步步說明x86上的轉換,並畫了許多示意圖,相當實用。
- 設計篇:軟體設計的重點在於設計。這是再明白不過的道理,但許多業界的工程師卻對設計的概念非常缺乏或觀念偏差。如何在模組化、效率與開發時程取得平衡?這篇涵蓋的幾個章節值得一看。比較可惜的是,沒有舉出其他類似專案的手法作為對照比較,這個部份可以閱讀其他設計書籍來補充。
- 操作系統篇:這篇是這本書的血肉。作者實現了一個在user space運行的OS - ClearRTOS,藉由實現部份作業系統的功能,展現嵌入式系統的核心軟體技術。跟著實作其中的功能,我們可以知道context switch、scheduling、stack overflow detection、synchronization...如何完成,知道如何實現簡易版本對我們理解業界使用的複雜作業系統有很大幫助,可以很快地抓到其重點。
- 質量保證篇:這篇講述了一些提升軟體質量的方式。作者不打高空,提出的方法與技巧都已經時間驗證。像是:單元測試、assertion、coding style、static analysis、dynamic analysis、profiling...都可以為軟體品質帶來立竿見影的好處。
我們可以看到,完成嵌入式系統的軟體設計需要多少功夫,這些知識必須扎扎實實地被軟體工程師所理解才行。雖然每一個篇章都有更多書籍與專案可供參考,但我覺得這本書提出了一個門檻,如果不完全理解此書內容,甚至很難說自己是個合格的嵌入式軟體工程師。 :-)
留言
張貼留言