—— 二十年嵌入式系統(tǒng)點(diǎn)滴回憶
北京麥克泰軟件技術(shù)有限公司 何小慶
2007 年底我發(fā)表了一篇文章“ 我與單片機(jī)和嵌入式系統(tǒng) 20 年 ” ,后經(jīng)熱心的媒體朋友推薦在幾個(gè)網(wǎng)站上刊登并受到了許多讀者關(guān)心和反饋。更多意見(jiàn)是希望我能把從業(yè)這20年心得分享給年輕的工程師朋友,仔細(xì)考慮一下的確很有道理。 20年時(shí)間電子技術(shù)已經(jīng)有幾代的變化,過(guò)去認(rèn)為的高新科技,今天是蘿卜白菜。但是掌握?qǐng)?jiān)實(shí)的專(zhuān)業(yè)基礎(chǔ),捕捉機(jī)遇,樹(shù)立信心一直都是不變應(yīng)萬(wàn)變的人生必修課程。我愿意借下面這篇短文和大家分享我的體會(huì),里面即有成功的喜悅,也有失敗的挫折、遺憾和惋惜。
硬件是本
1984 年大學(xué)畢業(yè),我被分配的第一份工作就和計(jì)算機(jī)硬件密切相關(guān)-測(cè)試和維修,研究所事業(yè)部領(lǐng)導(dǎo)的解釋也是合情合理的 —— 你是男同志,學(xué)自動(dòng)控制的,其他同屆分配來(lái)的多數(shù)是學(xué)計(jì)算機(jī)的,女同志也占多數(shù)。我開(kāi)始還老大不情愿,時(shí)不常地往科室里面跑,總想多學(xué)習(xí)點(diǎn)編程方面的技術(shù)。但是很快,同事們都跑過(guò)來(lái)找我請(qǐng)教了,因?yàn)槟莻€(gè)時(shí)候的計(jì)算機(jī)可要比現(xiàn)在的 PC 復(fù)雜得多,我們研究所的專(zhuān)業(yè)方向是工業(yè)控制,那就必須和外設(shè)、接口、驅(qū)動(dòng)打交道。如果一點(diǎn)不了解處理器、寄存器、接口電路、外設(shè)、程序是沒(méi)法設(shè)計(jì)和測(cè)試的。因?yàn)楣ぷ鞯奶攸c(diǎn),我首先學(xué)習(xí)和掌握的就是這些東西,例如,通過(guò)編寫(xiě) 8255 驅(qū)動(dòng)打印機(jī)的測(cè)試程序,可以完整地把 CPU 的 I/O 電路、 8255 器件和外接口測(cè)試好。一段時(shí)間以后,我對(duì)計(jì)算機(jī)的陌生、膽怯的心理一掃而光,上學(xué)時(shí)候更本沒(méi)有機(jī)會(huì)看的 CPU ,存儲(chǔ)器,磁盤(pán),電源現(xiàn)在都有機(jī)會(huì)親自組裝,親自把操作系統(tǒng)安裝上去(那時(shí)并不像現(xiàn)在的 WinXP 這樣簡(jiǎn)單),我們使用的是微型機(jī),光是操作系統(tǒng)的 8 寸軟盤(pán)就多達(dá)十幾張,或者幾盤(pán)磁帶,安裝一般需要幾小時(shí),而且系統(tǒng)還沒(méi)有任何中文標(biāo)志。
這些和硬件打交道的經(jīng)歷加上 2000 年我的研究生畢業(yè)設(shè)計(jì)課題—— 一個(gè)電網(wǎng)控制系統(tǒng)的項(xiàng)目,另外,下海后參加數(shù)字程控交換機(jī)、移動(dòng)電話基站的項(xiàng)目都是實(shí)實(shí)在在的硬件設(shè)計(jì),其中一個(gè)設(shè)計(jì)是基于 8086 的主板,另一個(gè)是設(shè)計(jì) 386 的主板,都要求運(yùn)行實(shí)時(shí)多任務(wù)操作系統(tǒng)。整個(gè)系統(tǒng)很復(fù)雜,當(dāng)時(shí)的器件集成度低,調(diào)試手段也沒(méi)有現(xiàn)在 ARM 的 JTAG 方便,但是掌握了硬件設(shè)計(jì),調(diào)試和生產(chǎn)的基礎(chǔ)對(duì)于我的專(zhuān)業(yè)素質(zhì)大有提高,這些經(jīng)歷為我之后投身嵌入式事業(yè)奠定了基礎(chǔ)。
學(xué)習(xí)的力量
大家都知道學(xué)習(xí)的重要性,我想說(shuō)的是,如果你熱愛(ài)現(xiàn)在的專(zhuān)業(yè),希望在這個(gè)方向上有更深發(fā)展,那么盡可能多地積累這個(gè)專(zhuān)業(yè)的知識(shí)是你未來(lái)成長(zhǎng)的基礎(chǔ)。 1988 年我得到一個(gè)考研的機(jī)會(huì),當(dāng)時(shí)的領(lǐng)導(dǎo)不希望我報(bào)考研究生,他表示計(jì)劃安排我到美國(guó)參加培訓(xùn),當(dāng)時(shí)能夠去美國(guó)的機(jī)會(huì)并不多,但我考慮再三后,還是決定放棄出國(guó)的機(jī)會(huì)。因?yàn)橥ㄟ^(guò)幾年的工作實(shí)踐,我深深感到自己計(jì)算機(jī)專(zhuān)業(yè)基礎(chǔ)知識(shí)不夠堅(jiān)實(shí),因我一九八幾年在大學(xué)本科學(xué)習(xí)的是 FOTRAN 語(yǔ)言和大型機(jī),而后來(lái)研究生課程的 C 語(yǔ)言和軟件工程的課程都更適合一九九幾年的情況。兩年的研究生學(xué)習(xí)雖然使我在某些方面損失了一些,卻為我之后十幾年突飛猛進(jìn)的成長(zhǎng)和進(jìn)步奠定了厚實(shí)的基礎(chǔ),也為我之后下海創(chuàng)業(yè)平添了一份自信和力量。
學(xué)習(xí)不僅是進(jìn)入學(xué)校學(xué)習(xí),更是一個(gè)持續(xù)持久的過(guò)程。從我最初在研究所里接觸微型機(jī)、單板機(jī)和實(shí)時(shí)操作系統(tǒng),到嵌入式操作系統(tǒng)、通信協(xié)議、嵌入式數(shù)據(jù)庫(kù),再到手機(jī)軟件,轉(zhuǎn)變相當(dāng)大,而專(zhuān)業(yè)領(lǐng)域卻一直以嵌入式系統(tǒng)為核心,這塊我投入的精力最大,也最喜愛(ài):從 VRTX , uC/OS-II 到 Linux 和 Montavista Linux ,對(duì)這些產(chǎn)品從了解、談判、市場(chǎng)、技術(shù)支持到培訓(xùn)、項(xiàng)目開(kāi)發(fā)我參與了幾乎所有過(guò)程。技術(shù)上,即使同屬于嵌入式操作系統(tǒng),彼此之間也有差異:內(nèi)核原理、 API 、 BSP 、文件、網(wǎng)絡(luò)、圖形模塊均不一樣,尤其是轉(zhuǎn)到嵌入式 Linux 后,我發(fā)現(xiàn)它和以前的嵌入式操作系統(tǒng)之間存在很大差異,轉(zhuǎn)變就要為之付出相應(yīng)的汗水、辛勞。
通信產(chǎn)業(yè)在 20 世紀(jì) 80 年代末蓬勃發(fā)展,國(guó)內(nèi)的通信企業(yè)紛紛仿效國(guó)外對(duì)手投入巨資研發(fā)先進(jìn)的通信設(shè)備。嵌入式操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議和開(kāi)發(fā)工具等嵌入式軟件立刻有了廣闊的用武之地。我從 1984 年開(kāi)始接觸實(shí)時(shí)操作系統(tǒng),當(dāng)轉(zhuǎn)向網(wǎng)絡(luò)協(xié)議,特別是電信協(xié)議時(shí),對(duì)我一個(gè)計(jì)算機(jī)專(zhuān)業(yè)的人,其困難可想而知了,即使只學(xué)習(xí)個(gè)皮毛也不得不下一番苦功夫,那怎么去學(xué)呢?我的方法是:一、向廠家學(xué) —— 我和公司的技術(shù)人員專(zhuān)門(mén)到波士頓附近的 Netplane 和加州附近的 Telenetworks 參加培訓(xùn),雖然花錢(qián)又吃力,但是收獲不少;二、向用戶(hù)學(xué) —— 東方通信和上海貝爾(現(xiàn)在的阿爾卡特)是我們的用戶(hù),記憶特別深刻的是東方通信,他們樸實(shí)熱情。如此反復(fù)幾十次的談?wù)摵团嘤?xùn)讓我和同事都很快成長(zhǎng)起來(lái)。
手機(jī)是90年代后流行的通信和消費(fèi)電子產(chǎn)品,中國(guó)企業(yè)也在此期間進(jìn)入這個(gè)領(lǐng)域。開(kāi)始是組裝生產(chǎn),后來(lái)是自主設(shè)計(jì)。手機(jī)雖小,五臟俱全,除了通信工作外,現(xiàn)在越來(lái)越多的手機(jī)增加了多媒體、 PDA 、照相、互聯(lián)網(wǎng)功能,這些多是典型的嵌入式系統(tǒng)。手機(jī)通訊部分一般是由基帶芯片公司設(shè)計(jì)完成,國(guó)內(nèi)手機(jī)廠商主要是完成應(yīng)用系統(tǒng)設(shè)計(jì)——嵌入式系統(tǒng)。因?yàn)楫?dāng)時(shí)與 montavista 合作,而摩托羅拉又在使用這個(gè)軟件,于是我們?cè)?2004 年進(jìn)入手機(jī)這個(gè)圈子,機(jī)遇是全球興起了一股智能手機(jī)浪潮, Nokia 使用 Symbian ,摩托羅拉使用 Linux, 還有微軟 windows mobile 得到了許多中國(guó)臺(tái)灣公司的支持,摩托羅拉 A760 系列在中國(guó)市場(chǎng)的巨大成功激勵(lì)了中國(guó)手機(jī)企業(yè)加入 Linux 智能手機(jī)開(kāi)發(fā)隊(duì)伍。
手機(jī)設(shè)計(jì)有相當(dāng)多的特殊要求,就電源管理而言,因?yàn)槭謾C(jī)是一個(gè)關(guān)鍵應(yīng)用裝置不同與一般的消費(fèi)電子產(chǎn)品,手機(jī)能耗的指標(biāo)好壞直接影響產(chǎn)品銷(xiāo)路,電源管理和應(yīng)用處理器、 OS( 比如 Linux) 、驅(qū)動(dòng)程序、應(yīng)用軟件、手機(jī)的硬件( LCD 大小等)都至關(guān)重要,我和公司技術(shù)人員花了大量的時(shí)間研究這個(gè)問(wèn)題,特別是基于 Linux 的電源管理的方式,公司技術(shù)人員通過(guò)支持我們的 montavista linux 手機(jī)用戶(hù)的實(shí)踐,理解和掌握了具體的方法。最近我和他們一起撰寫(xiě)的 “ 嵌入式系統(tǒng)電源管理軟件的比較 ” 剛剛在某雜志發(fā)表,有興趣的朋友可以交流。
嵌入式系統(tǒng)技術(shù)和知識(shí)更新很快,所以學(xué)習(xí)永遠(yuǎn)是進(jìn)步和成功的源泉。
堅(jiān)持才能成功
這里想要說(shuō)的是,無(wú)論做任何的事情總是有順利和不順利的時(shí)候,有失敗的悲傷,也一定會(huì)有成功的喜悅,但是無(wú)論如何一定要堅(jiān)持,堅(jiān)持才有希望。
90 年代初,決定下海本身是一個(gè)需要勇氣的事情,決定從事軟件就顯得與眾不同,而后來(lái)致力嵌入式軟件,就更需要有信心和毅力,更要耐得住寂寞、堅(jiān)持不懈——這是我的心得。
1995 年公司成立初期,我在向用戶(hù)介紹 VRTX 的時(shí)候,多數(shù)場(chǎng)合我必須先把嵌入式操作系統(tǒng)的基本知識(shí)講解一遍,然后再把一個(gè)多任務(wù)的程序演示一下給他們看,簡(jiǎn)單的可以是五個(gè)任務(wù)。這種情況是五個(gè)任務(wù)的優(yōu)先級(jí)相同,如果改變?nèi)蝿?wù)的優(yōu)先級(jí),顯示的情況就會(huì)發(fā)生變化,進(jìn)而需要演示使用調(diào)試工具顯示任務(wù)狀態(tài)和程序源代碼及斷點(diǎn)調(diào)試。整個(gè)的銷(xiāo)售過(guò)程很漫長(zhǎng),有時(shí)甚至是煎熬, 1 ~ 2 年是很正常的時(shí)長(zhǎng),但我沒(méi)有放棄,幾年的努力終于迎來(lái)了一點(diǎn)點(diǎn)收獲,開(kāi)發(fā)工具( MRI C/C++ 編譯器和 XRAY 調(diào)試器)在電信設(shè)備研究和開(kāi)發(fā)企業(yè)得到了認(rèn)可。當(dāng)時(shí)大多企業(yè)正在開(kāi)發(fā)基于 68302 的數(shù)據(jù)終端設(shè)備,急于尋找一套開(kāi)發(fā)工具。 VRTX 支持 X86 的 real-mode( 實(shí)模式 ) 版本也因?yàn)檐浖渲渺`活河豐富,使用簡(jiǎn)單,價(jià)格便宜在基于 186/386 的控制企業(yè)開(kāi)始使用,但是這些只是中國(guó)巨大的嵌入式軟件市場(chǎng)的冰山一角,等到真正冰雪開(kāi)始融化,已經(jīng)是 90 年代末了。這中間我也考慮過(guò)轉(zhuǎn)向其他的產(chǎn)品和市場(chǎng),也嘗試過(guò)硬件仿真器 , 測(cè)試工具等產(chǎn)品,但最終我和公司的同事還是堅(jiān)持下來(lái),到今天,嵌入式操作系統(tǒng)仍然是我公司的主力產(chǎn)品和方向。
uc/os-II 這個(gè)嵌入式操作系統(tǒng)的推廣過(guò)程和 VRTX 是相反的, VRTX 是要通過(guò)自己學(xué)習(xí),向用戶(hù)宣傳演示,讓用戶(hù)接受這個(gè)概念,讓用戶(hù)相信使用嵌入式操作系統(tǒng)的好處并能夠成功。而 uc/os-II 則是因?yàn)樽髡?Jean Labrosse 先生的一本書(shū)和他的中文版本在中國(guó)悄然流行起來(lái),也許是因?yàn)樵缙诘?uc/os 是完全免費(fèi)的軟件,而升級(jí)后 uc/os-II 是一個(gè)商業(yè)軟件。這件事情無(wú)論是原作者、業(yè)內(nèi)人士一開(kāi)始都沒(méi)有特別留意,由于國(guó)內(nèi)用戶(hù)的知識(shí)產(chǎn)權(quán)意識(shí)不強(qiáng),這幾年我們的壓力相當(dāng)大,一方面是廠家不理解,他們質(zhì)疑,既然中國(guó)有這么多人在使用這個(gè)軟件,為什么購(gòu)買(mǎi)商業(yè)授權(quán)的用戶(hù)卻是少而有少。另外一方面,公司每天收到大量的 uc/os 用戶(hù)信息,當(dāng)銷(xiāo)售員把電話打過(guò)去,真正有意向購(gòu)買(mǎi)者鳳毛麟角,要么就是不知道這是個(gè)商業(yè)軟件,要么就覺(jué)得價(jià)格太貴。廠家和公司內(nèi)部的抱怨都?jí)旱轿疫@里。我頂住了這些壓力,并堅(jiān)信只要 uc/os - II 做得好,用戶(hù)能夠用它設(shè)計(jì)出好產(chǎn)品,中國(guó)用戶(hù)還是愿意為 uc/os-II 買(mǎi)單的。況且它的價(jià)格只是某些國(guó)外同類(lèi)軟件的十分之一,并且沒(méi)有生成數(shù)量的限制。安撫好公司內(nèi)部,我和公司和同事多次與 Jean 溝通,最后我作了三個(gè)方面的安排:一、讓 Jean 寫(xiě)一封關(guān)于 uc/os-II 的版權(quán)聲明,我們翻譯成中文發(fā)表在麥克泰公司網(wǎng)站,在國(guó)內(nèi)主要嵌入式系統(tǒng)媒體發(fā)表;二、說(shuō)服國(guó)內(nèi)嵌入式硬件,工具和系統(tǒng)廠家通過(guò)購(gòu)買(mǎi)合法 uc/os 授權(quán)成為伙伴;三、重點(diǎn)專(zhuān)注在國(guó)內(nèi)的外資、上市、面向出口企業(yè)、國(guó)內(nèi)的半導(dǎo)體和大型設(shè)計(jì)機(jī)構(gòu)。經(jīng)過(guò)最近兩年的努力終于取得了一點(diǎn)成績(jī),如北京博創(chuàng)、廣州周立功等嵌入式系統(tǒng)公司已成為我們的合作伙伴;珠海矩力、南京南瑞、廣州數(shù)控、科學(xué)院 DSP 中心等已成為 uc/os-II 合法授權(quán)用戶(hù)。更加可喜的是通過(guò)我們?cè)趪?guó)內(nèi)的辛勤工作,得到了半導(dǎo)體公司和工具廠商如 NXP 、 ST 、 Xilinx 和 IAR 的認(rèn)可,他們一致認(rèn)為 uc/os-II 是一個(gè)應(yīng)用廣泛的嵌入式操作系統(tǒng)。公司內(nèi)部原本不看好這個(gè)產(chǎn)品的人也逐漸改變了看法。
產(chǎn)品之痛
沒(méi)有哪個(gè)企業(yè)家不想擁有自己的產(chǎn)品和技術(shù),我也一樣。我一直夢(mèng)想著自己的核心產(chǎn)品。在中國(guó)內(nèi)陸,一定的時(shí)間內(nèi),硬件和系統(tǒng)產(chǎn)品是企業(yè)做強(qiáng)做大的關(guān)鍵。許多成功企業(yè)的共同之處就在于他們有自己的核心強(qiáng)勢(shì)產(chǎn)品,如華為通信產(chǎn)品、聯(lián)想的 PC 、長(zhǎng)虹的電視、海爾的白色家電。
我和麥克泰在過(guò)去十幾年中,多次嘗試過(guò)自主開(kāi)發(fā)、和別人合作開(kāi)發(fā)產(chǎn)品,給我影響最深的是這樣一個(gè)例子: 1998 年中國(guó)通信蓬勃發(fā)展,設(shè)備制造企業(yè)也大干快上,他們對(duì)先進(jìn)的嵌入式硬件、軟件、工具等非常感興趣,數(shù)據(jù)通信也是當(dāng)時(shí)的發(fā)展熱點(diǎn),摩托羅拉公司的 Powerpc860 (現(xiàn)在的飛思卡爾)通信處理器尤其引人注目, 860 集成了一個(gè)通用的 CPU 和通信引擎構(gòu)成 4 個(gè)高速的 10/100M 以太網(wǎng)絡(luò),這對(duì)于當(dāng)時(shí)的數(shù)據(jù)設(shè)備和網(wǎng)絡(luò)管理設(shè)備都是非常適合的芯片。于是我們借鑒國(guó)外的一個(gè)硬件參考設(shè)計(jì),自己開(kāi)發(fā)了一款 860 硬件,取名叫 NETE860 ,它的特別之處是除了母板內(nèi)置的 100M 以太網(wǎng)外,還可以通過(guò) 4 個(gè)擴(kuò)展接口支持 10M,E1 接口,這在當(dāng)時(shí)市場(chǎng)上銷(xiāo)售的所有 860 的設(shè)計(jì)中是獨(dú)一無(wú)二的。最初我們移植了 VRTX RTOS 和 interniche TCP/IP( 硅谷的一家提供 TCP/IP 源代碼的公司 ) ,后來(lái)因?yàn)?Vxwork 逐漸在國(guó)內(nèi)流行了,我們又移植了 BSP 支持 Vxwork ,到再以后上海羅頓和交大希望在 NETE860 上使用開(kāi)源 Linux 開(kāi)發(fā)路由器,我們又把 hardhat linux (Montavista Linux 早期的一個(gè)開(kāi)源版本 ) 移植了上去。兩年的時(shí)間這個(gè)產(chǎn)品逐漸成熟起來(lái),有了一些銷(xiāo)路,但是由于初期的設(shè)計(jì)是一個(gè)參考設(shè)計(jì)平臺(tái),沒(méi)能充分考慮 OEM 的需求,這樣銷(xiāo)售上就沒(méi)有長(zhǎng)遠(yuǎn)的數(shù)量機(jī)會(huì),只能和我們開(kāi)發(fā)工具軟件搭配銷(xiāo)售。我利用多年在西南市場(chǎng)的關(guān)系,找到了一個(gè)合作開(kāi)發(fā)基于 NETE860 路由器的機(jī)會(huì),當(dāng)時(shí)甚至合作的公司名都已經(jīng)注冊(cè)下來(lái),但由于我和對(duì)方過(guò)于謹(jǐn)慎,另外,包括我在內(nèi)的公司管理層一直對(duì)需要長(zhǎng)期投入的 OEM 銷(xiāo)售和產(chǎn)品抱有一種將信將疑的態(tài)度,導(dǎo)致后來(lái)其他公司看到這樣的機(jī)會(huì),很快開(kāi)發(fā)出類(lèi)似的產(chǎn)品來(lái)。他們定位了 OEM ,加上開(kāi)源 Linux 開(kāi)始大行其道,這種免費(fèi)軟件配合硬件的模式立刻流行全國(guó)。 860 之后我們雖然敏感于 ARM 時(shí)代的到來(lái),開(kāi)始設(shè)計(jì) NETCARM ,但是不久就被淹沒(méi)在眾多 ARM 硬件的海洋里悄無(wú)聲息了。
之后的幾年,我和公司繼續(xù)嘗試過(guò)合作開(kāi)發(fā)數(shù)字監(jiān)控產(chǎn)品,委托別人開(kāi)發(fā)嵌入式調(diào)試工具等,終因時(shí)間長(zhǎng),收效漫而告終。久而久之我的信心慢慢消沉下來(lái),公司內(nèi)部的壓力和抵觸情緒也越來(lái)越大。我和公司的產(chǎn)品之路也這樣偃旗息鼓了。
今天回頭看看過(guò)去的道路和曾經(jīng)的同行,許多當(dāng)時(shí)名聲顯赫的公司已悄然無(wú)聲或不復(fù)存在,我慶幸自己和麥克泰還能夠生存下來(lái),同時(shí)我很仰慕像合肥的華恒,科銀京成(成都電子科大為開(kāi)發(fā)團(tuán)隊(duì))的同行們,他們不但能夠堅(jiān)持下來(lái),而且已經(jīng)有了相當(dāng)?shù)闹?,想必也?jīng)歷了一番驚濤駭浪。
結(jié)語(yǔ)
20年的時(shí)間是人生的一個(gè)片段,從20多歲風(fēng)華正茂的青年到沉穩(wěn)的中年是一個(gè)充滿(mǎn)幻想的過(guò)程。追逐理想的足跡,我走過(guò)了學(xué)生、工程師、創(chuàng)業(yè)者和管理者的道路。我熱愛(ài)嵌入式系統(tǒng)、我的工作、我學(xué)習(xí)和推廣過(guò)的產(chǎn)品、我的家人、老師、合作伙伴、同事以及許許多多的用戶(hù)和同行朋友們。如果再讓我選擇一次,我依然會(huì)選擇嵌入式軟件和嵌入式系統(tǒng),正如行業(yè)老前輩何立民老師所說(shuō) “ 嵌入式系統(tǒng)是一個(gè)無(wú)限大的系統(tǒng) ” ,它充滿(mǎn)著新奇、變化和智慧,像一個(gè)磁石永遠(yuǎn)吸引著我。
轉(zhuǎn)自《今日電子》