2009

【書評】現代嵌入式系統開發專案實務

本書作者邱毅凌先生後來又出版了一本「嵌入式系統開發之道:菜鳥成長日誌與專案經理的私房菜」。雖然書名有些不同,但其實就是這本書的第二版。第二版頁數大幅增加至 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 的話,那就更完美了)

總而言之,這本書是中文計算機原創書中難得一見的好書!強力推薦給正在這個業界中努力求生存、以及將要進入這個業界的勇士們。另外,我也要推薦給資訊科系的學弟妹們。書中描述的情景可能就是你們的未來工作上會遇到的問題。即使將來不走這條路,書中的內容也可以和課本上的微電腦組織架構互相比較驗證。而且這本書寫得那麼輕鬆,就算是當故事書看也不錯啦!

恭賀新禧


(點小圖可以看大圖)

轉眼間,2008 年(或者該說是戊子年)又過去了,2009 年(或是己丑年)來了。
去年在個人以及國家社會世界都發生了許多事。
有些是好的,但也有不少是壞的(尤其是對世界而言....)。
但願這一切不好的事情都能趕快過去。

然後也希望女兒能快樂平安地長大。 🙂

新年快樂!

[串連]「我家的年夜飯」:一個邀請(by 老貓)

看起來是個相當有趣的計劃。 🙂

來響應一下好了。 XD

(反正這個部落格已經乾枯很久了....orz)

======= 以下為轉載 =======


「我家的年夜飯」:一個邀請(by 老貓

除夕夜,你家的年夜飯吃什麼呢?

這幾天我忽然好奇起來,全台灣有這麼多來自不同地方的人群,我們過的雖然是同樣的年,可是除夕夜裡我們吃的東西到底差多少呢?

我家祖籍是莆田(也就是媽祖的家鄉,萬一你不知道的話),這些年來,我娘會回憶她小時候吃過的莆田菜,憑記憶在除夕那天指導幾道料理,莆田式的蚵仔
煎,莆田式的海菜等,另外時候她會從「冰冰好料理」學到幾樣台式小點,當場小試手藝加進年菜裡。除了初一一大早祭祖的炒米粉,我家過年的飲食歷來相當隨
和。

這幾年實際在廚房掌廚的三嫂,她是江西人,江西雖然只跟福建隔一座武夷山,卻已經是中國著名的「辣區」了。每年她一定要炒一道回鍋肉作為鄉愁的憑
據:百分之五十的紅辣椒搭配青蔥和豬肉片,辣椒下鍋的那一刻,方圓五公尺內,每個人都拚命打噴嚏(但那些愛吃辣的人則會響起一陣歡呼)。

二哥和我兩家遠居外鄉,回去一趟總會帶上一些各自的地方名產,今年我買了公司附近「信遠齋」的醬肘子和燻雞宅配回去,當成年夜飯的一道冷盤。我家的年夜飯有台式傳統,也有閩中風格,還有贛式特色外加北方即食。是一個多元文化匯集的結果。

今年我希望能夠記錄一下除夕夜裡,我家餐桌上的文化風景,拍照分享。我也希望能邀請更多人,一起來記錄大家各自的年夜飯,拍幾張照片,讓我們看見不同地方,不同人群,年夜飯到底會有多不同。這個文化風景是我們大家自己家族生活的一部分,也是所有族群點滴交會的小歷史。

今年除夕,你願意接受這個邀請嗎?

 ※ ※ ※

這是「我家的年夜飯」部落格串連的邀請,如果你願意接受這個邀請,請:

一、先完整轉載本文;
二、在除夕夜拍下你家的年夜飯,簡介那些菜色,貼回你的部落格;
三、把你的文章網址貼到本文迴響區分享給我們。

 ※ ※ ※