本書作者邱毅凌先生後來又出版了一本「嵌入式系統開發之道:菜鳥成長日誌與專案經理的私房菜」。雖然書名有些不同,但其實就是這本書的第二版。第二版頁數大幅增加至 900 餘頁,內容雖然更為充實,但閱讀所需的精力稍微多了些。
兩個版本其實都值得嵌入式系統的從業人員們閱讀。只可惜年份已久,兩個版本都已絕版。想找到它們,可能得在二手市場碰碰運氣了……
2021/11/15 更新
雖然很少資訊系的學生會立志當個嵌入式系統的程式員;但事實上,在台灣從事這方面工作的程式員不在少數。因為我們日常生活會遇到太多的嵌入式系統了:冷氣機、洗衣機、電冰箱、電磁爐……什麼冠上「微電腦」的幾乎都有嵌入式系統;電視機有一個嵌入式系統,電視機遙控器裡也有一個嵌入式系統;DVD player、遊樂器也算是嵌入式系統;電子錶、手機、PDA、電子字典、電子雞……所有你想得到的電子產品幾乎都屬於嵌入式系統的範疇。
正因為人才需求高,市面上和嵌入式系統程式設計相關的書籍、補習班課程等亦多如牛毛。這些書大多是學院派的,從理論出發。偶有書名冠上「實作」的,也僅只於列出程式的範例。很少書籍從現實出發,告訴你在職場上會到什麼樣的問題、該朝什麼樣的方法解決。很幸運的是,《現代嵌入式系統開發專案實務》(以下簡稱《實務》)就是一本這樣的書;而且更幸運的是,這本書是台灣人寫成的、土生土長的中文原創書(相信曾被劣質翻譯書或是中國大陸電腦術語荼毒過的人都能了解這件事情有多重要)。
《實務》最大的特點,就是從目前台灣業界的現實面出發,點出專案團隊人力缺乏、內部各小組互有摩擦、老闆客戶常有無理要求……等真相。這點要歸功於作者擁有的十數年專案開發經驗(而非數十篇學術論文)。書中提到的要點及案例,字字璣珠,句句血淚。只要曾在業界有些經驗的人,讀這本書應會不時露出會心的微笑(或是苦笑)。
也許是想要突顯出「實務」的特性,也許是希望讀者能更輕鬆地消化書中的觀念,《實務》的內文採用技術書籍少見的「劇情對話式」文體,描述一位剛從學校畢業的資訊科系碩士從無到有,學習嵌入式系統開發流程的經過。全文的主要內容,就是這位「菜鳥」和「專案經理」及各小組的「老鳥」間的對話。菜鳥所代表的是學院派、主流電腦系統的思維(動輒上 GHz 的 32/64-bit CPU、數百 MB 甚至上 GB 的記憶體、還有用不完的硬碟空間);而老鳥們則代表了業界和嵌入式系統的現實(微處理只有數十 MHz、資料記憶體只有幾 KB、讀寫 NAND ROM 還要考慮效率問題)。藉由菜鳥和老鳥之間的對話,我們可以清楚地看到「學院 vs 實務」以及「PC vs 嵌入式系統」的不同之處。再加上詼諧不艱澀的文筆,讀者們可以快速而專注地了解嵌入式系統的特性。
書中的這位「菜鳥」以成為全才為目標,因此隨著書中專案的進行,被派到各個不同的部門了解學習……作者藉由這個方法帶領讀者了解專案團隊中每個小組的工作內容,也同時大略地介紹了專案開發的流程。書中提到一件重要的觀念:學硬體的人不要怕軟體,學軟體的人也不要怕硬體。在專案人數普遍不足的情況下,軟體人員遇到簡單的硬體問題需要澄清時,最快的方法是靠自己做簡單的實驗,不要等枯等別人來幫忙。相同的,其他小組人員的工作,我們也不是永遠不會碰到。所以了解每個專案人員負責扮演的角色不僅是專案經理的工作,了解這些知識對每個專案成員都有好處。
而本書最最重要的一個觀念,就是作者不斷強調的:「一法通,萬法通」。嵌入式系統使用的處理器種類繁多,再加上不同的單晶片 (SoC) 實作,是永遠學不完的。因此一個嵌入式系統的工程師學習的目標並不是把手中的晶片研究透徹(那是賣你晶片的廠商的工作),而是要了解「嵌入式系統有什麼特性」;等到真的把晶片和 data sheet(有人喜歡叫它 "data shit"....)拿到手後,再把觀念套上去。作者在書中舉出案例時,也不忘提醒讀者什麼是重要的,什麼是旁枝末節大概看懂就好。
對於專案開發的細節而言,《實務》稍嫌深度不足;但一本五百多頁的書要顧及廣度,深度本來就不能苛求。況且這本書著重的是觀念,細節方面書中列出不少經典書籍供參考。我認為這本書可以當成進入嵌入式系統開發的引門磚,看完之後再看書單上的書,應該更有感覺。
由此衍生出來的另一個尷尬問題是:這本書的主要目標讀者應該是嵌入式系統的生手,尤其是資訊本科系畢業的學生,但他們對嵌入式系統了解得太少,讀起來可能沒什麼感覺(而且還可能會有「我才不會去寫這種低階的程式呢!」這樣的自傲);而對有經驗的人來說,它讀起來又比較像是小說,列出我們已經知道的事,還有我們無力解決的現實。到最後可能只有那些糊里糊塗踏進這個業界的新手從中獲益最多。
當然,這本書不是聖經,有些觀念應用上還是要考慮現實的狀況和個人/公司的習慣,不是不能改變的。像是書中提到 memory-mapped registers 是否要用 register 的名稱做為 symbol 的問題,我個人的看法就和作者不同。另外書中還有一些小錯誤,或是跟業界用語不同的地方(例如業界通常以 micro processor/uP 稱呼嵌入式系統的處理單元,而非稱之為 CPU)。不過瑕不掩瑜,無損這本書的價值。(但若是作者能在這本書的官方網頁中提供 errata 的話,那就更完美了)
總而言之,這本書是中文計算機原創書中難得一見的好書!強力推薦給正在這個業界中努力求生存、以及將要進入這個業界的勇士們。另外,我也要推薦給資訊科系的學弟妹們。書中描述的情景可能就是你們的未來工作上會遇到的問題。即使將來不走這條路,書中的內容也可以和課本上的微電腦組織架構互相比較驗證。而且這本書寫得那麼輕鬆,就算是當故事書看也不錯啦!