[ 轉貼 ] 十年一覺程設夢 ( 上 )


  一向充斥垃圾的 BBS 的 Programming 版,難得出現一篇不錯的文章。看完後才發現這原來是華碩 ( ASUS ) EeePC RD 主管的一篇徵才文,但因為寫得實在用心良苦,就將他收錄至此。


  但是因為篇幅實在太長,我重新排版成合適 HTML 顯示的 Layout 後,會拆成分上中下三篇貼出。這篇文章,真正能激發熱血的宅男工程師,讓我們體會到宅字的真諦:


  宅,因為專注!宅,因為無人能及的執行力!宅,因為無與倫比的熱情與信念!宅,因為萬代的鋼彈模型!


  總之華碩急徵宅男,不夠宅者勿入!





發信人: weber1217.bbs@bbs.cis.nctu.edu.tw (weber), 看板: Language

標 題: 十年一覺程設夢

發信站: 交大資科_BBS (Mon Jan 14 00:42:42 2008)

轉信站: SimFarm!zoonews.ee.ntu!news.kkcity.com.tw!ctu-peer!news.nctu!csnews.cs


  十年一覺程設夢


  本文可視為“我的 DDK 學習經驗”的續篇, 不談軟體技術, 而是寫我在華碩 10 年的職場經驗. 描述學會了 DDK 這套工具, 我是如何運用它, 在工作上落實創意, 供各位參考. 另外我的為官經驗, 可說是失敗中的失敗, 各位可引以為鑑.


  我在華碩的第一位老闆是 HC, 我日後對軟體價值的想法, 受到他的影響極深.


  他以前在宏碁是 Jonney 的助理, 參與天龍中文終端機開發計畫. 當時工作, 是用宏碁自行開發的 ASIC, 搭配 firmware 來處理中文顯示.


  這份工作累積的經驗, 讓他日後有能力自己開一家 VGA Chip IC 公司. 而也使他成為在華碩中最了解軟體價值的董事.


  他在華碩第一份工作, 是從無到有成立 VGA 部門. 當時 3D VGA Chip 霸主是加拿大 ATi , PM 大主管屬意這家公司, 預計與其全面合作. 但 HC從 Chip 架構及規格, 反而看好另一家風中殘燭的 nVidia. 那時候 nVidia 找過麗台跟其他家 VGA 卡廠商, 都吃閉門羹, 沒人想理它.


  部門內成立 3 條產品線, 分別使用 ATi , nVidia, S3 公司的晶片.


  當時與其他部門最大的不同處是, VGA 部門 RD 是以軟3: 硬1的分配. 成為公司部門中, 擁有人數最多, 水準最整齊, 都是台清交碩士畢業的軟體人員. 連我跟他面試時, 還被他嫌在資策會待太久, 怕染上不好習性.


  HC 的個性是, 技術不願受制於人. 他逼 nVidia 吐出所有的 VGA source code, 命令底下一組軟體工程師來做效能最佳化的工作. 我分配到的工作是, 做安裝光碟程式, 及用 X86 組合語言來加速 VGA Driver執行效能 ( 因當時有許多 2D/3D 指令是用 CPU 先處裡過, 然後再傳給 VGA 晶片處裡 ).


  因解掉 1 個 nVidia 驅動程式的 Bug, 使華碩 V3000 繪圖卡領先其他對手, 早 1 個月出貨, 打響公司在 3D VGA 市場的名號. 因為這一點貢獻, 經 HC 推薦, 而獲得 Jonney 額外的獎勵獎金.


  VGA 部門在所有同仁努力下, 不到 2 年時間內, 就擠下原先在台灣第一名的麗台.




  因在驅動程式這個領域的耕耘, 我獲得在資策會時, 做夢也不敢夢到的高額報酬, 有感於當時 ( 1997 年 ) BBS, 雜誌文章皆是財團法人, 學術界人士, 學生的論調, 鮮少來自工業界的聲音. 而且是一面倒向 MIS, 資料庫. 於是在 BBS 上寫篇 " 我的DDK學習經驗 " 文章, 鼓勵其他軟體從業人員, 朝驅動程式發展, 而不是只押寶在 MIS, 資料庫. 當時在 BBS 上引起支持 RAD Tool, MIS, VooDoo 學生的筆戰, 搞到連 HC 去交大演講招募工程師時, 現場都有學生嗆聲點名, 說要找我單挑. 回來後問我是不是覺得時間太閒, 沒事做. ( XD! 現在是 nVidia 還是 VooDoo 活下來 ? MIS 公司還是 IC 公司錢賺的多 ? )


  事隔 3 年後, 在台灣微軟 WinCE 技術研討會上, 有一名微軟工程師趨前自我介紹.


  他原本是在交大擔任助理, 看過該文後, 放棄原有安穩待遇的工作, 自願降薪一半, 投身驅動程式開發領域. 我相信, 經過 MS SmartPhone, SoC 的興起, 聯發科, 宏達電躍昇為股王後, 他現在應居要職領高薪, 遠比當交大助理, 來得更有成就感.


  HC 深信公版公 Driver, 絕對無法支撐起產品競爭力. 於是在不增加任何硬體成本下, 極力要求我們要用軟體來增加附加功能. 而我們也不負他所望, 連續推出 3D Glass, Game OSD, 3D See Through, Time-Shift, Smart Doctor, OverLock 等特殊軟體功能, 讓 Sales 在報章雜誌上, 有材料來連連為華碩繪圖卡創造話題.


  在不到 5 年內, 他成立的 VGA 部門, 成為世界第一品牌的VGA 卡公司. 而以往稱霸的外國 VGA 卡公司, Diamond 跟 Elsa 公司, 一個倒閉, 一個縮編.


  當 Win95 問世, 引發一波 MB 大換潮, 得以讓華碩連續蟬聯 3 年股王 ( 但套句台語, 搖擺沒落魄的久, 10 年內, 股價從 800 多元變成現在的 80 幾元 )


  而 MB 也需要搭配 Win95 驅動程式的安裝光碟出貨, MB 的主管 Jerry 向他要求軟體人力協助. 他就派我去成立 MB 軟體支援課. 我雖然心中不願, 但卻也不得不捨下喜歡的 VGA 驅動程式工作.


  當時的 MB 部門是以 EE 及 BIOS RD 為主導. 軟體支援課形同雞肋般, 扮演的角色, 僅比 QT 部門高一點而已. 工作內容僅是製作安裝光碟, 檢查驅動程式的穩定度. 不過因 MB 種類日益頻繁, 使這份工作變成繁瑣的制式工作. 也讓我心中不時思考, XD! 自己是 RD 還是高級 QT ?


  然而繁瑣工作還是要做, 最後受不了, 我模仿 Win95 Plug and Play 的 driver 安裝機制, 寫出半自動安裝程式, 將公司所有的 Chipset, Audio, Lan 等等 driver 全部放在一張光碟. 當放進光碟機時, 安裝程式自動啟動來偵測 MB 上所有 Device 的 PID/VID, 挑出正確的 driver 供使用者安裝.


  這套方法, 不僅讓這個軟體支援課逃出繁種無聊的工作, 也大大減少 PM 的安裝光碟庫存壓力. 不用一種 MB 就要準備一張光碟, 而是 Intel, SiS, VIA 晶片組系列的 MB, 各一張安裝光碟.


  而我就利用這多出來的工作時間, 私下做一些自己感興趣的題目. 因沒影響到 MB 出貨, 所以 MB PM Joe 跟 Jerry , 根本都不曉得我私下在搞什麼東西.




  有鑑於 Win95 後, MS 宣稱要停止支援 DOS. 我就將 DOS 版的 MB BIOS Flash 程式, 改寫成 Win 版的 WinFlash. 大概撈過界, 惹毛負責 DOS 版 Flash 程式的 RD, 而讓 BIOS Team 不願導入. 完成的 WinFlash 只好靜靜躺在硬碟中.


  過了半年, 當時公司為康柏 ( Compaq, 現被 HP 併購 ) 製作一款無軟碟機, 安裝 WinNT 的 PC. 原先的 DOS Flash 程式無法在其上使用. ( NT 上無法在 DOS 模式下去存取硬體, 也沒有軟碟可以 bootup DOS ).康柏限期要提供解決方法, 藉由康柏施加在 PM 的壓力, 讓這套塵封的 WinFlash 程式, 得以應用到產品上, 在市面流傳.


  而另一家 MB 公司微星, 在我完成 WinFlash 的 2 年後, 也做出做法不同但相同功能的程式, 並在雜誌上大打能在 Win 上作 BIOS flash 的廣告. 看見其他公司的重視程度, 想起自家公司的態度, 真覺得 MB 軟體部門只是個打雜部門, 絲毫不受重視.


  完成 WinFlash 後, 當時 WWW 網路剛興起不久, 洞悉到網路潛力, 我跟部屬合作開發 Asus LiveUpdate, 利用網路, 在 Win95 下來自動更新驅動程式跟 BIOS. 由於 Asus LiveUpdate 是由 Client 跟 Server 兩部分程式組成的. Client 端的檢查, 下載機制完成後, 尚須要後端 Server 的配合, 才能啟動. 但初期 MIS 部門根本無配合意願, 最後透過 HC 的影響力, 總算幫 VGA 部門 架設更新網站. 經過 3 年後, 微軟把類似概念的線上更新功能, 直接內建到 Win 2000. 而現在華碩官方軟體下載網頁, 及 MB/NB/VGA/EeePC 的安裝光碟上, 都存在著這套軟體.


  同一時期 Intel 在 MB 上推出 Health Monitor 的功能, 用來偵測 CPU 溫度, 風扇轉速, 及機殼入侵. 同時推銷網管軟體 LDCM ( Lan DeskTop Configuration Management ) 給公司來 bundle 在 intel 系列主機板上. 而 maintain LDCM 的工作就落到我頭上.


  因 LDCM 既有的 InstallShield 安裝程式, 需事先提供硬體設定檔, 註明 MB 有幾顆風扇, CPU 溫度範圍等資料. 我的天啊 ! 若每一片 MB 都要這樣搞, 那我豈不是被 LDCM 搞死?

  於是修改既有的 InstallShield 程式, 讓它能掛上 device driver. 在安裝過程去偵測有多少顆風扇, CPU 現在溫度, 然後動態產生硬體設定檔, 餵給後面的 LDCM 設定程式去正確執行安裝.


  後來上 LDCM 訓練課程時, 聽到 Intel 人員提到 Acer 一個軟體部門, 正在進行於 LDSM Client-Server 架構下, 從 Server 端把 BIOS / Application / Driver 安裝到 client 端. 於是自己獨力將 WinFlash 修改成 LDCM 能使用的 PLUG-IN module, 提供 MIS 人員直接在 Server 端更新 Client 端 BIOS 的功能.


  因為 Intel 限制 LDCM 只能用在 Intel chipset 系列的 MB 上. HC 叫我想辦法, 在 SiS / VIA Chipset MB 上提供相同功能的軟體. 於是就開發 PC Probe 這套軟體, 但也發現讓問題越來越複雜. 3 家晶片組公司 ( Intel, VIA, SiS ) 有各自不同的介面 / 地址去讀取 Health Monitor, 甚至同家不同系列的晶片組也有所不同, 有用 SMB Bus, 也有用 I2C Bus 的. 而 Health Monitor IC 來源, 也有 3 家 IC 公司提供. 產生一堆晶片組加 Monitor IC 的不同組合.


  做第一片 MB 時, 還覺得有趣. 但做到第 10 片 MB 時, 就覺得又煩又無聊. 所以一直在想, 有沒有一勞永逸的解決方法.




  當初是 1999 年, Win2000 beta 版還在測試, WDM DDK beta 版首度出現在 Win98 ME 上, ACPI BIOS 1.0 spec 也剛出爐.


  看完 ACPI Spec 後, 加上幾年的 Window Programming 經驗, 我察覺到 MS 想利用此一規格, 迫使各硬體系統廠商必須提供 ACPI BIOS, 來讓 Windows OS 能直接控制硬體. 並且把 BIOS 角色壓縮成 Boot Loader. 一但 OS 啟動後, 讓 BIOS 沒有主控權, 以避免 BIOS 影響 OS 運作. ( MS 夠邪惡, 但很明顯並未得逞, 直到現在, 在 Vista 上, programmer 還是可以用 device driver 下 SMI 指令, 讓BIOS 取得控制權 )


  看過 ACPI BIOS 規格跟 WDM DDK beta 版後, 我終於找到處理 Health Monitor IC Access 跟 BIOS Flash 的一勞永逸方法. 讓所有硬體存取相關的動作, 全部集中在 BIOS 的 ACPI ASL code 中, 由應用程式透過 ACPI driver 來讓 ACPI.SYS 執行對應的 ASL ocde. 如此就不用三天兩頭為 SMBus I/O port來改device driver.


  於是一頭栽進去, 偷偷在 Win98 ME 平台上開發 Asus ACPI Driver. 同樣的, 因為有把該做的工作完成, HC 檢查進度時, 沒發覺異樣, 所以才不會對我碎碎唸, 說做這個東西有什麼用.


  但是 ACPI Driver 需要 ACPI ASL code 配合才能啟動. 自知惹毛過 MB BIOS Team, 他們是不會幫忙的. 求人不如求己. 於是找剛成立的 NB BIOS RD 部門, 向其要了 Lotus NB 的 BIOS 原始碼, 自己邊看 ACPI BIOS Spec, 邊在 Lotus 上修改 ACPI ASL code.


  當花了 3 個月時間, 寫出 Asus ACPI Driver 跟對應的 ASL Code 時. 因深知此技術的發展潛力, 便主動開技術介紹會, 邀請 NB/MB BIOS RD 來參加. 但會議結束後, 沒有一個 BIOS RD 感到興趣.


  但我並不灰心, 因 Win2000 WHQL Logo program 規定 BIOS 一定要支援 ACPI. 我知道總有一天, Asus ACPI Driver 會派上用場. 只不過卻沒料到, 這 " 總有一天 ", 卻是在 3 年後才來到.




  2002 年, 公司 的 NB 種類增多. 原先 NB BIOS RD 是直接 program VGA, 在各家 VGA Chip 的 Frame Buffer 上畫 OSD ( On Screen Display ), 但多種不同的繁瑣 VGA Frame Buffer 定址, 讓 NB BIOS 主管 Jason 受不了, 因他有聽過我的 ACPI 技術介紹會, 於是私下請我幫忙解決.


  我當時也沒多想, 本著同公司就應互相幫助, 將 Asus ACPI Driver 原始碼提供出來, 做投影片, 並教 NB 軟體工程師如何移植到 NB 平台. HC 常跟我說, 我是做事的人, 但卻不是做官的料, 有股 RD 的技術狂熱, 卻不懂職場的遊戲規則. 但我毫不在意, 老是把他的話當耳邊風. 但這次無私的 ACPI 技術提供, 不僅沒有獲得任何回饋, ( NB 部門可沒因此而多發薪水股票給我 ). 反而種下 4 年後不愉快的起因.


  雖然那時是在做 MB 的事, 但還是會關心 VGA team 的發展. 把 MB 上學到的 Health Monitor 跟動態超降頻的概念, 介紹給 HC. 在大家一遍喊 VGA 超頻的時候, 逆勢提出降頻觀念. 我認為做文書處理或上網時, VGA 根本不需要啟動 3D Engine 跟拉高頻率. 於是在 VGA 上實作出 Smart Doctor 軟體, 依據 VGA/CPU 實際工作負荷, 來動態超降頻, 以避免 VGA 長期處於高熱超頻狀況, 降低正常使用期限.


  事隔 1 年半後, nVidia 公司受到其他 VGA 卡製造商的壓力, 將這項功能, 直接內建在 Driver 中. 可惜當初沒人告訴我要申請專利. 不過雖然如此, 這套動態超降頻功能, 已經領先其他對手早 1 年半.


  當 VGA 部門闖出名號後, HC 為了尋求下一波成長動力. 將目光擺在當時熱門的 IA 題材: Setop Box 跟 PDA 上. 但因 VGA 軟體人力不足, 想將軟體人力從 MB 部門抽回來, 於是詢問我的意願.


  但他同時也點出, MB 軟體支援課雖然工作無趣繁瑣, 但會影響 MB 出貨, 公司不能沒有這個課, 而且未來將會隨 MB 產能大幅成長變成一個大部門. 但我二話不說, 自廢武功, 自動解散 MB 軟體支援課. 將底下的台清資訊碩士, 從無趣工作中解放出來, 投入 Embedded System 研發專案中. 我也不再想當管理階層, 跟 PM review 進度跟開會, 我覺得是浪費生命.




  在 2002 年時, 掀起一股 IA 熱潮. " PC 已死, IA 當道 ". Embedded System, 如 WinCE 3.0, Embedded Linux, VxWork 紛紛跳上檯面. 我被分派去做以 Embedded Linux 為主 的 Setop Box 跟 Thin Client.


  當時曾接觸過 Luxsonor IC 公司, 原想用其 IC 在 Setop Box 上. Luxsonor 的華裔羅副總, 因意識到 PC 運算能力提升, 以硬體為主的 MPEG2 decoder 將倍受威脅, 後因理念不合, 於是自立門戶, 成立 InterVideo (IVI) DVD 播放軟體公司. 而 Luxsonor 在將 MEPG2 decoder IP 授權給聯發科後, 被 Cirrus Logic 併購.


  因 IA 口號正熱, 一些軟體工程師很容易從傳產股金主募得資金, 在國內外, 小型 Embedded Linux 公司如雨後春筍, 陸續冒出. 連 Mr. Taiwan 谷月涵, 也插花當網虎國際的執行長, 來搞股票上市上櫃. 就可知道這些公司分名是擺明想 A 錢, 用股票換鈔票.( XD! 我打電話給網虎 Sale 問些事情, 結果隔天他就發新聞稿, 說華碩即將採用網虎的 embedded linux )


  在 Setop Box 上的 Embedded Linux 上執行的 Browser 功能很陽春, 涵蓋 PC NetScape/IE 的功能不到 30%, 而他們又無法克服 TV resoultion 及 interlacing 問題. 最後淪落為無實用性的玩具. 我也因而勸阻 HC 入股某家美國 Embedded Linux公司的念頭.


  Settop box 做半年後收起來, 改做 Web Pad, 一共用 Transmata TM5400, NS GEODE, VIA C3 3 家 CPU 來開發原型機.


  開發Transmata TM5400 WebPAD 時, 我負責 BIOS 與負責硬體的同事 Alex, 僅僅兩人完成該 Prototype. 當時我們好像是在搞家庭代工, 什麼事都自己來, 我邊下 BIOS 命令, 他就用 LA 去抓硬體訊號. 那陣子, 雖然壓力大, 但也學到 Phoneix NoteBook BIOS 架構, 並得知更多 Window 與 BIOS 溝通介面.


  當時觸控面板的介面 IC 並無支援傳統 PS2 介面, 於是我寫個 Win98 驅動程式, 用南橋晶片空出來的 GPIO pin 去接收介面 IC 的輸出資料, 透過驅動程式將其轉化成 PS2 Mouse Event, 去模擬出一個 PS2 Mouse Driver. 這是我第一次用軟體驅動程式模擬出特定硬體介面的經驗.


  5 年前的 SoC 剛萌芽, 硬體省電能力很弱, LCD-TV, 跟 LCD Panel 價格昂貴. 原型機完成後, 因暸解成本昂貴, 功能有限. 我向 HC 建議, 不要導入市場. ( 有夠呆吧! 如果煽動成功, 讓老闆投錢投人, 起碼可以撈到個副理官位來做, 至於賺不錢, 那是他家的事, 反正有其他賺錢的部門在養, 怕什麼! )


  結果同時期有兩家公司, 大眾電腦跟旺? 做出 WebPAD 商品, 想也知道, 都賠賠賠, 成了 3 賠產品.


  IA 熱潮的泡沫, 不到 2 年就消失. 但 PDA 因有 Palm 及 WinCE PDA 的銷售成長, 得以繼續生存下來.




  HC 意識到趨勢變化, 停止 Steop Box, WebPad 開發, 將所有軟體人力投入 PDA 開發. 於是我被指派去做 Intel Bulverde VC ( Validated Customer ) 計畫.


  Bulverde 是顆 SoC, 非 CPU. 它將 ARM base CPU, VGA, Peripheral, Memory Controller 全部塞到 1 顆 Chip 中. VC 計畫是, 在 Intel 提供的 pre-alpha SoC 板子上, 架上 MS WinCE 3.0 OS, 寫程式去測試功能.


  當時是利用 ICE, 透過 JTAG 介面來 program SoC, 使 SoC 發出預期的控制訊號, 接著用 LA 去量訊號, 檢查是否正確. 然後每星期回報 Bug 給 Intel 做除錯之用. 簡言之, 就是寫程式幫 Intel 作 SoC 硬體功能驗證測試.


  在參與過 Setop Box, Thin Client, 及 Bulverde VC 計畫, 讓我無意中充實對 IC 規格和硬體設計方面的知識, 有時候當下看是不相干的工作經驗, 往往是日後技術提升的基石. 經歷這時期實作經驗, 對日後軟體設計, 有極大幫助. 但因部門政治因素, 外加 VGA 軟體主管離職. 不得不放下喜歡的 Bulverde VC 計畫, 再度聽從 HC 的安排, 轉任 VGA 軟體主管.


  HC 一直想為 VGA 部門尋找另一波成長動力. 於是指派我去執行 DVD Recorder 及 LCD-TV 專案.


  初接任 VGA 軟體副理一職時, 一位負責維護 Display Driver Hooking 機制的 RD, 提出可以將 Video 結合 3D Game 的點子時, 我贊同他的想法, 並加碼加派一位 RD 去做 MPEG4 壓縮跟網路即時通訊功能來配合. 做出全球首套支援 3D Game 的視訊軟體. Sale 部門看到這套軟體後, 取名為 Game Face 來大力促銷. 隨後因 HC 想在大陸成立一個軟體團隊, 我暫時放下 LCD-TV 案子, 前往蘇州, 武漢, 西安等地的大學去招募員工. ( 有人跑大連, 哈爾濱的路線, 11 月, 還好不是我 ) 因老婆不願舉家遷移到大陸, 在蘇州華鼎成立團隊雛型後就返台.


  在 LCD-TV / DVD Recorder 這些專案中, 我陸續接觸到 WIS, LSI, TI OMAP, Sigma Design, Trident, OPlus, Genesis, PixelWork, Morning Star 等各家的晶片. 這段期間大量接觸各類的 IC 公司, 也讀了一堆相關的 IC spec and datasheet, 我試著去比較各家晶片性能. 遇到不懂的規格名詞時, 就上 Google, 翻 paper, 從基礎理論去了解其規格背後的含義. 而墊下對消費性電子 IC 方面的知識.


  因為國外 IC Design 公司的規格書寫得非常詳細, 我從中接觸到MPEG 2/4, H.264, Scaler, DE-INTERLACE, 視訊規格, 以及色彩學等方面的知識.


  記得當時 Trident 代理商的某個 FAE 很臭屁, 欺負我沒摸過 LCD-TV Chip, 還說 LCD-TV Chip 很有深度, 技術很難懂, 要像他這樣的人才才能搞懂. 結果事後 K 過 paper 跟 Video Demystified後, 才知道他誇口的那些知識, 根本是入門級.


  做這些案子期間, 我觀察到一些 IC 公司只專注在硬體開發, 如 LSI, TI. 而其 IC 所需的 DSP firmware 或 embedded system 卻要系統廠商, 花錢向其他家軟體公司購買, 相關的 Video/Audio codec 授權問題, 也是由系統廠各自向 MPEG2/Dobly 談判. 對玩慣 WinTel 的我為此深感不解. 為何無法提供一套完整的方案, 卻還要系統廠到處張羅硬體,軟體,權利金等事項?


  相同時期, 隨著 SoC 蓬勃發展, 聯發科洞悉到系統廠的需求, 招募眾多軟體工程師, 搭配自家晶片, 提供完整的 solution, 在不到 4 年時間, DVD Recorder 方面就打敗 LSI, 手機晶片方面, 則是嚴重威脅到 TI. 逼得 TI 也出 Davanci SDK for WinCE. 如果 TI 還不親自提供完整 TurnKey Solution, 中低階, 甚至高階手機晶片, 被聯發科攻陷是指日可待.




  在 2000 年, 華碩獲利大幅衰退, Jonney 意識到主機板高毛利時代, 已經一去不返, 連精英都嚴重威脅到華碩 ( 股價 130 : 70 ), 一堆 VGA 部門的軟體工程師, 集體跳槽到精英.


  Jonney 開始推動巨獅計畫. 進行公司組織重整後, VGA 部門被劃給 Jerry. 我因而失去重視軟體功能 HC 的支持, 我曾經因案子無預警被中斷, 當面對著 HC 拍桌子, 但他心胸寬大有雅量, 沒把這件事放在心上, 日後反而常常在暗中拉我一把.


  直屬長官變成 VGA 部門的硬體經理. LCD-TV 專案也被迫停擺, 由 Jerry 新成立的數位家電部門來主導. 而底下的一些軟體工程師看苗頭不對, 全部跳去負責 VGA 卡的軟體單位.


  但上帝關起門時, 同時也為你開了另一扇窗. 2004 年時 MS 推出 Media Center, 並且全球數位電視陸續開播. 雖然處於冰凍狀態, 算是苦中尋樂吧, 花時間 K 數位電視訊號規格, 去了解 RF, IF, BF, demodulator,及 OFDM 編碼的原理. 從這些規格跟通訊編碼原理中, 找到屬於技術人員的樂趣. ( 數位電視訊號規格有牽涉到視訊壓縮, 因有看過 MPEG2/H.264 資料, 所以蠻快就進入狀況. 有燒香就有保佑, 有讀書就有收穫 )


  不久後, Jerry 對 Barebone 部門報以高度的期許, 於是我轉移陣地, 設立一個軟體團隊來支援 Barebone 部門, 雖然還掛在 VGA 部門, 但 VGA 部門最高主管早就不理我, 考績被打得很爛.


  在 BareBone 部門初期幫忙接 Samsung 的代工案及自有品牌 E-Spreso. 但後期 Barebone PM 部門換主管後, 無意朝創新發展, 以衝產量為優先. 也不管軟體功能, 把底下的工程師當工具來使用.


  為了不讓底下的軟體工程師閒閒沒事幹. 加上看到 MB/NB 朝消費性電子化的發展趨勢, 同時也知道 LCD Panel 的色彩缺陷性. 我不想浪費在 LCD-TV 專案上獲得的一些研究經驗, 於是開案子, 將 LCD-TV 色彩處理功能導入到 VGA/NB 上.


  初期我將這個概念跟專利草稿給另一家 IC 設計的子公司參考, 希望能共同開發. 但後來子公司毫無分享意願. 認清現實一面後, 靠人不如靠己, 我分配 2 名 RD, 成立 Cameleon ( 變色龍 ) 專案,從事 NB 上的色彩功能開發, 並將此觀念介紹給某位 NB 高級 PM.


  因為這位高階 PM 是工程師出身, 有過 TV CRT 的相關開發經驗, 知道此功能的實用性. 雖然NB 內部有阻力存在, 但他仍盡力協助我在 NB 部門內介紹這項功能.


  幸運的是, 當時 Toshiba 推出強調色澤鮮艷的 Qosmio NoteBook, 該 NB 加裝 1 顆我以前摸過的 Trident LCD-TV Chip, 用來處理色彩運算. 而公司代工的另一家日系公司也想要有類似功能. 要求 NB team 評估用日本 Jepico 影像處理 IC 在其代工 NB 上的可能性.


  就在日系公司派出技術科長來台灣, 討論代工 NB 的技術相關問題時. IC 子公司透過高層主管安排, 向其 demo 他們開發的色彩軟體功能. 而我是幸好有該 PM 的私下安排, 向日本科長展示 Cameleon.


  雖然IC 子公司想透過高層主管的政治影響力, 來左右日系公司的選擇. 但在看過 IC 子公司, Cameleon, 及 Jepico 3 種解決方案後, 基於擴充性, 效能, 及價格的考量. 日系公司決定採用 Cameleon, 並派出其 TV 部門技師, 提供調校色彩參數, 來配合 Cameleon 使用, 正式導入在日本銷售的 NB 上.


  因為日系公司採用, 形成強而有力的背書, 原先反對的人都默不出聲, 順利消除 NB 部門內部阻力, Sales 部門將 Cameleon 改名為 Video Splendid, 如同 Asus ACPI Driver 般, 成為公司 NB 的基本功能.


  由於 Jerry 所轄的 VGA/Barebone 部門主管, 無意朝創新發展, 只優先衝產量. 外加看到 XBox 360/ PS 3 研發售價消息不斷冒出, 以及 LCD-TV 低價化. 魔獸爭霸也放出消息要移植到 Xbox 360 上時, 我判斷高階 VGA 卡, DMA 及客廳式 PC, 絕對不是 Xbox 360 / PS 3 的對手.


  試問當一台 Blue-Ray BD, 40 GB HDD, WLAN 801g 無線上網, 3 顆 CPU 的 PS3 只賣台幣 1 萬 4 千時, 還會有多少人去買 1 張 1 萬多元的高階 VGA 卡 ?


  MS 跟 Sony 可以賣一台虧一台, 以後靠 content service 跟 game license 來獲利. 但 Dell, HP, Acer, Asus 有可能虧錢賣 PC/NB/VGA 嗎 ?


  NB 市場的 VGA 方案都是內建, VGA 卡公司是看的到吃不著. 同時 NB 長力道已經逐步趕上 Desktop 時. 看不出有其它位來發展機會, 於是離開 VGA 部門, 轉調到以系統為主的 NB 部門.




  公司一變大, 一些事情再也不是以技術優劣來考量. 原先以為在 NB Team 可以開發第 2 代的 ACPI Driver 及 Video Splenedid, 尤其是 ACPI BIOS 已經出到 3.0B 版, 而 ASUS ACPI Driver 還停留在 7 年前的 ACPI BIOS 1.0 時.


  但這些想法都被 NB 軟體大主管拒絕. 有次討論工廠測試流程時, 還跟我解釋 ACPI Driver 的功能. 當時心想, 他還以為 ACPI Driver 真的是他手下自行開發出來的.


  在不被重用, 近乎被冷凍的狀況下. 又開始自己找事做, 看到大部分人用 NB 時, 通常是用 Mouse 居多, 而 TouchPad 就白白浪費在那邊. 加上當時 iPod的觸控螢幕功能造成熱門話題. 所以交代部下去搞個將 TouchPad 當 Touch Panel 用的程式並申請專利.


  結果搞出來後, PM 對其興趣缺缺. 但卻沒料到,過 1 年半後, 在 2008 年 CES show 展上, NB Sales 把這個 TouchPad 功能當成一個賣點.


  因從 2004 WinHEC 資料得知, 微軟即將力推 MCE 2005 跟 Vista Premium (code name Diamond), 會拉升 NB 對 TV 功能需求. 又看到大陸工資成長的趨勢, 及公司內部如火如荼的 LSS 精實運動. 我想到用軟體自動化來做工廠檢測.


  當時 NB工廠大多依賴人工作檢測, 無法有精確的量化數據. 在 6 Sigma 的 DMCIA 步驟中, 需有 M (Measurement) 步驟提供量化數據, 以統計手法分析, 作為方案效果評估, 來找出引起品質差異化的關鍵.


  假想若能提供每月數十萬台的 NB 測試量化數據來加以分析, 又能加速測試流程, 減少作業員需求量. 對公司的硬體設計, 供應商的電子元件良率控制, 應當有所幫助.


  於是實際到工廠待一個下午, 發現作業員真辛苦, 因為工廠沒能力去寫測試程式, 為了測試 TV, Camera, Audio 的功能, 須操作繁複設定的商用應用程式 ( IVI Home Theate, Cyberlink Power Cinema, 3D Mark 2003), 以人眼人耳去判斷, 而長期沿用 DOS/Assembly 的單工觀念, 將刺是測試幾個小站, 一站一站去測, 絲毫沒利用到目前 CPU/Windows 的多工能力, 也無法執行驅動程式來測試 device 功能. 而在測試聲音時, NB 啦叭跟機具運轉的噪音, 此起彼落, 真是個惡劣工作環境.


  於是回來後寫個快速測試 TV/camera 的程式, 交給部屬, 由他修改介面, 依工廠需求, 協助導入 Digital/Analog TV 軟體檢測, 因 MCE 2005/Vista Premium 的 NB 產量持續成長, 對 TV 的檢測需求, 大幅成長. 這套方便的 TV/Camera 檢測程式很快就正式導入 NB 生產線, 頗受作業員的歡迎.


  受到順利導入的鼓舞, 我計畫接下來開發 Audio, WLAN, BlueTooth 等檢測功能. 再度請出 Google 大神, 上網查聲音相關的論文跟原理文章, 最後使用麻省理工學院的快速複利葉轉換程式庫( MIT FFTW), 以及參考普林斯頓聲音研究室 ( Princeton Sound Lab ) 的公開原始碼, 在 DirectSound 上寫一個可同時測錄放音功能的快速聲頻檢測程式, 來檢測 NB 聲音輸出入 的 Channel Balance, Frequency Response, Total Harmonic Distortion, Back Ground Noise Level 品質. 為了確保聲音檢測的正確性, 我拿商用音頻測試軟體 SpectraLab 來比對.


  但是要導入時, 又發生政治因素, 讓快速音頻檢測程式無法上線. 軟體主管單位擺明, 要導入的話, 就把原始碼全部公開給他們, 並提供訓練課程. 不然的話, 就別想導入.


  大概因接 2 連 3 惹毛其他軟體部門, 造成 NB 新主管在管理上的困擾. 最後他丟個 PC Camera 的案子給我做. 並告訴我只准做這個案子, 不要再亂想或亂碰其他案子, 免得跟其他部門起衝突. 好吧, 反正不是第一次, 我再度發揮苦中尋樂精神, 自我尋找技術人員的樂趣.


  於是跟幾家 Camera USB IC 公司接洽, 初期因剛接觸 PC Camera 領域, 對相關技術不懂. 於是把 PC Camera 整個軟硬體架構拆解掉, 從 Lens, CMOS sensor, 步進馬達, USB IC, UVC/WDM Capture driver, KsProxy, DirectShow 等硬韌軟體功能, 從頭到尾走過一次.


  知道影像清晰度跟色彩對 camera 非常重要, 就花時間做快速 Auto Focus, 因嫌 USB IC 的清晰度判斷能力太爛, 自己寫 MTF base 清晰判斷程式來取代. 並上網去讀 Glass/Plastic Len 鍍膜對色彩的影響, 以及 CCD vs CMOS sensor 的色彩處理物理特性的優略點分析.


  甚至到最後, 覺得 CMOS sensor 的硬體色彩處理功能 (3x3 matrix process), 還是無法真正解決色偏問題, 還找到 Nikkon 的色彩處理晶片專利文章, 來了解 Nikkon 單眼相機對色偏的解法.


  在看過 Micron CMOS Sensor 2020 的 datasheet 及 USB UVC Spec 後, 花了 2, 3 個月, 去修改 USB IC 8051 firmware, 利用 UVC Extension 介面從 Windows App 關掉 USB IC 的功能, 直接去 program CMOS sensor. 才發覺原來一開始被 USB IC 公司的 sales 給呼攏了.


  原來 USB IC 公司把 Micron 2020 優異的硬體功能關掉, 只開自家 IC 的影像處理功能. 而 Sales 宣稱其因 IC 具有特殊的附加功能, 如 AWB, Scaling, Sharpness detection 等, 所以要賣得比較貴.


  但單純從運算速度來看, USB IC 的 8051 根本比不上 Micron 2020 的 68H11. 而這些功能可以被 CMOS sensor, VGA Scaling 及 Window App 所取代, 而且效果遠遠超過它.


  因 PC Camera 硬體設計進度一直拖延, 要做不做的. 一直等也不是辦法. 為了證明自己不是只會放砲愛吹牛, 寫虛擬攝影機驅動程式, 用 UVC Extension 介面去控制步進馬達, 做出快速自動對焦. ( 1.2 秒, 可以更快, 但受限於馬達步進機構精密度的缺陷 )


  將擷取到的畫面導入 VGA Vertex/Pixel Shader, 去做 face detection. 同時研讀微軟北京軟體學院的電子白板相關論文. 想將電子白板的功能導入虛擬攝影機驅動程式. 但最後還是看出主管並無心去推動這個案子.


  經過 WinFlash, Asus ACPI Driver, Video Splendid 的推動經驗後, 我已經對由內部推動創新的方法絕望, 都要靠外部的市場壓力, 來彌平內部阻力, 一些被 PM/RD 主管輕視的軟體功能才能出頭.


  這時興起辭職去其他系統廠發展的想法. 但就如同電影 " 東方不敗 " 中所說 :

  "江湖在哪裡? 有人的地方就有江湖 !"


  其他系統廠也會存在相同狀況, 如果沒有總經理級的支持, 到時候鐵定也是被排擠的份. 在華碩起碼還有 HC 知道我是會做事的人. 還好過沒多久, 果真 HC 就暗中幫了我一把.


=== 未完待續 ===

留言

這個網誌中的熱門文章

SQL Deadlock 的處理經驗談

網站效能不佳?談『如何判定系統變慢原因』的簡易 SOP