十年一觉程设梦|ipod
经典文章:十年一觉程设梦
华硕的一篇招聘广告。
※ 本文转录自 [Programming] 广告牌
发信人: weber1217.bbs@bbs.cis.nctu.edu.tw (weber), 广告牌: Programming
标 题: 十年一觉程设梦
发信站: 交大资科_BBS (Mon Jan 14 00:42:42 2008)
转信站: BanditNest-BBS!ctu-reader!ctu-gate!news.nctu!news.ntu!news.ee.ttu!csnew
Origin: 203-203-247-59.twt1.com.tw
十年一觉程设梦
本文可视为 “我的 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 就暗中帮了我一把.
2007 年四月某晚 8 点多时, 接到 Jerry 秘书的电话, 说要找我一起吃饭. 搭着 Jerry 的 Lexus 460 LS 加长豪华版, 去台北艺术大学吃饭. 席间才得知, 原来 Jonney 交代 Jerry 去执行百元计算机计划, 但 Jonney 一直对软件部分放心不下, 要 Jerry特别留意, Jerry 就请 HC 推荐合适的软件人员来帮他看软件这一块.
虽然 HC 大力推荐, 但 Jerry 担心我常跟其它软件部门有磨擦, HC 反问他, 是要找一个会打仗, 攻山头的人(对啦, 这种人死的最快, 无法享受胜利成果), 还是守成, 注重部门和谐圆容的主管 (
>>>QQ470681378