2018年1月6日 星期六

幾本書與一段往事

一晃眼就 2018了,這幾個月忙著工作沒時間更新 blog,剛好趁最近解決一個大 bug 來寫篇文章刷一下存在感

Micro C/OS-II


這本書至少有 10 年的歷史,因為目前正在服務的公司使用它開發產品就翻出來複習(強調一下,人家已經用了好多年了,產品也一直持續出貨)。

10 年前某 HMI 公司老闆叫我研究 uC/OS-II 能不能替換公司已經用了很多年的 DIY OS,印象中我三天就移植 uC/OS-II 成功(不是筆者太強,而是這東西原本就沒有很多人想的複雜),後來授權費也談好了,但是最後仍然沒採用。(10 幾年前也因為好玩,移植了一個可以在 x86 上開機的版本)。

後來該公司被外商併購,老外找了一個號稱噴射戰鬥機使用的 RTOS,當時還因此到歐洲出差上課(還是第一次出國!)。這套 RTOS 用起來很麻煩,要用他的專屬編譯器,沒有原始碼,會鎖定安裝的電腦,一次只能一個人使用...聽說離職之後這套高大上 RTOS 就無人問津,最後 License 由母公司買回,大夥繼續用土砲 OS。(幾年後有家公司技術經理打過來閒聊說是想交個朋友,對方表示他們用的正是 uC/OS-II,只能說當初眼光沒錯)

當年涉獵 uC/OS-II 之後常常跟很多老前輩在論壇上筆戰,一堆單晶片時代過來的老前輩大都覺得這種東西多此一舉,多年以後 RTOS 變成顯學,對岸也一堆人自己寫書詮釋 uC/OS-II,還一路寫到 uC/OS-III。現在台灣也在大學部開設 RTOS 課程(如成功大學)。

當然會有人要跟筆者辯論說,當年 CPU 多差,現在 CPU 多快多便宜才有機會用 RTOS...以 CPU cost 來說當然現在一定比當年便宜,但要比速度的話那就不合邏輯了,因為筆者現在使用 ARM7/9 與 10 年前用的 ARM7/9 在速度上相比也沒有到 486 與 i7 這種差別(當年用過的那顆 StrongARM 甚至比我現在使用的 ARM9 還快),而且 uC/OS-II 非常精簡消耗記憶體極少,而且 10 年前就有 Embedded Linux 了,沒理由 Linux 這種大傢伙可以跑而這種超小型 RTOS 居然跑不動。

與其說什麼硬體的進步,倒不如說是人心的轉變,Max Karl Ernst Ludwig Planck 有一句名言:

一個新的科學真理取得勝利並不是通過讓它的反對者們信服並領悟,而是通過這些反對者們最終死去,熟悉它的新一代成長起來。」

李開復在演講時說 AI 取代人類工作在美國要 15-20 年,在中國只要 10 年,很多人誤解成這是拍中國馬屁,筆者的見解是中國因為沒有美國的「包袱」所以才能衝那麼快,有人做過一個大白話的比喻,一般人是吃路邊攤->牛排->龍蝦鮑魚這樣的順序,但中國是直接跳到龍蝦鮑魚。

在 RTOS 這件事上恐怕也是一樣,當台灣還深陷用 ppt  跟老闆簡報 ->被質疑->再討論的無窮迴圈時,中國大概已經直接跳進去抱著用用看也不會死的心態下去 try 了,等到台灣在大學部開課時人家已經玩了不知道多少年了。FreeRTOS 的作者(現已經被挖角到 Amazon 做 IoT,現在當紅的 ESP8266也採用 FreeRTOS, RealTek 也有採用)也表示中國的下載率世界第一,大概又有人要跟我說人家人多啊...噗

所以李開復雖然沒有提到台灣,但是我猜台灣大概要 50 年吧?

Embedded Systems Building Blocks: Complete and Ready-to-Use Modules in C


這本書也有 10 年了,大概是筆者出社會以來唯一認真讀完的原文書,講到這個就好笑,幸福 M 企業的主管還在會議室一堆高層面前質疑我沒有讀英文資料的能力,當下我也蠻無言的,筆者英文雖差,但這種東西還算看得懂。

最近也是因為工作上的原因拿出來複習,裡面的 code  仍然很好用,講白了這就是一種 design pattern (跟是不是 uC/OS-II 沒關係,因為作者也是 uC/OS-II 作者)。

當年 k 這本書是為了了解 RTOS 上如何控制硬體,不用說拿這本書跟人討論時也是一遍質疑聲,現在如果還有人要跟我筆戰這個的話,我大概也只能苦笑。

lwIP - A Lightweight TCP/IP stack


也是大概 10 年前就玩過 S3C4510B + uC/OS-II + LwIP 的組合了,沒想到現在 FreeRTOS or uC/OS-II + LwIP 早就遍地開花(前面提到的 ESP8266 , RealTek Ameba),光是簡體相關書籍就好幾本,當時也是向老闆極力推薦這個組合,大概是人微言輕,最後仍然沒被採用。

聽說上面這本書的前一版已經絕版,正版被炒到天價,還有一堆網拍出「影印版」(我這輩子只聽過影印原文書第一次聽到有人影印簡體書的),如果沒人用會有這種事嗎?

我想說的是...

現在 Linux kernel 都出到 4.x 版也可以打 Real Time patch,還有 IntervalZero, IN-TIME RTOS 這種居然可以跟 Windows 共存分享 CPU 核心的黑科技 RTOS,大概會有人覺得還討論 uC/OS-II, FreeRTOS 這些東西不合時宜吧?但這些小型 RTOS 仍然有硬體消耗資源少,開機速度快的優勢(有些行業開機速度慢你就不要來談生意了),以開發來說往往只需要一套 Keil C 就夠了,不像 Linux 光是架設環境就要弄掉一整天(就算有 Yocto 這種東西跟 Keil C 只需要按下 F7  相比仍然相差太多)。而且你覺得 Amazon 挖角 FreeRTOS 作者是吃飽沒事幹嫌錢太多膩?

其實筆者想要說的是,當年為何沒被採用,事後常常證明筆者眼光沒錯啊?通過這些年的實踐與反省,筆者的心得是在台灣如果要推廣一套新技術新觀念:
  • 要有面對被質疑挑戰的勇氣
  • 要有能力把複雜技術整理成 ppt 懶人包簡報給高層聽的本事,你要是不小心講的太深,甚至是某個英文單字發音不夠標準,這些「高層」會認為你這人能力不行,這樣要怎麼跟 PM 溝通,怎麼帶領那些頭角崢嶸的年輕弟兄?(你不知道心理學家早就告訴你,成功的企業家是既沒耐性又沒同理心的嗎?沒聽過霸道總裁嗎?沒聽過海邊老闆拍桌子罵人嗎?)
  • 以上兩點做不到,就要對該技術有至死不渝的愛,跟他凹下去,等到開花結果的那一天。
也難怪現在簡報課動則兩天就要收好幾萬,還有什麼辦公室政治的權謀課程也有一堆人去上(如果現在大家都知道台灣白領假日在忙著進修什麼了吧?),只能說筆者太遲鈍沒抓到趨勢,在這裡留個註解與教訓給諸位參考參考

2018/1/9 更正與補充:

小弟這兩天才想起 1995 年交大胡竹生老師就寫了一本即時多工核心程式設計(當時當然是有看沒有懂),也許 1995 年交大就開課了,但變成顯學顯然是多年之後的事了(這裡指的顯學當然是指台灣,國外老早就用 RTOS 打造戰鬥機與太空船了)。

2018/1/12 再補充

當時除了 uC/OS-II 還有 survey 另一個頗知名的 RTOS - ThreadX,不過授權費實在太嚇人,老闆看到報價臉都綠了,據說當時 HP 印表機多有採用。

2 則留言: