多年以前,我設計了一個基于Intel 80C188的產品,需要一個實時內核。在前一家雇主那里工作時,我一直在使用一個知名的內核(以下我稱為內核 A),但該內核對我當時設計的產品來說是太貴了。我找到了一個廉價的內核(當時大約1000美元以下我稱為內核 B),并且開始了我的設計工作。為了讓我那幾個很簡單的任務運行起來,竟花了我兩個月時間。我一天到晚給該廠商打電話求援。該廠商聲稱內核B是用C語言寫的,可我還得用匯編語言給程序中每個對象除實話,雖然該廠商很耐心,而我實在是煩透了!產品的開發也耽誤了。我真是不想再花時間去調試那個廉價的內核了。后來得知我是該廠商的第一個客戶,這個內核實際上沒有完全測試和調試過。
還是回到正路上來,我決定使用內核A。五個用戶的價格是5000美元,此外,我的每個產品還要付200美元的內核使用費。在當時,那可是一筆很大的開支。就算是花錢買個心里踏實吧。花了兩天時間,內核轉起來了。項目進展到3個月上,我的一個工程師發現內核好像有毛病(bug)。當內核中的這個毛病確認無疑以后,我把我的代碼寄給了該廠商。此時,廠商提供的90天的擔保已經過期了。為了得到答復,我還得支付每年500美元的維護費。我和銷售商爭辯了好幾個月,他們應該盡快糾正這一處毛病才是。我實際是在為他們做好事。可是,他們不予理睬。最后,我只好認了,又簽了程序維護合同。而該廠商6個月以后才改正了那個毛病。是的,6個月以后!我簡直氣壞了,最要緊的是,我的產品開發耽誤了。花了將近一年的時間,內核A才在我的產品中穩定運行。然而,我得承認,從此以后,內核A再沒有什么問題了。
漸漸的,我自然會想到,寫個實時內核有那么難嗎?不就是不斷地保存、恢復CPU的那些寄存器嘛。于是我決定試試寫一個自己的實時內核,主要用業余時間、晚上和周末。也花了大約一年的時間才使內核轉起來,它在某些方面還比內核A好。我并不想開公司去賣這個內核,因為當時市場上已經有大約50個實時內核的產品。
我想到給雜志寫篇文章,打算投《C語言用戶雜志》(《C User’s Journal 》)因為內和是用C寫的,我聽說該雜志每頁給100美元的稿費,而其他雜志一般是每頁75美元。我的文章大約有70頁。這筆稿費對我寫內核所花時間是不錯的補償。很不幸,文章拒載了。有兩個原因,一個是文章太長,雜志不愿意連載。另一個原因是,他們也不愿意“又登一篇關于內核的文章”。
我決定轉向《嵌入式系統編程》(《Embedded System Programming》)雜志,因為我的內核是為嵌入式應用設計的。我和該雜志的編輯Mr.Tyler Sperry聯系,告訴他我的實時內核想在他的雜志上發表,得到的答復和《C語言用戶雜志》是一樣的,我們不要“又是一篇關于內核的文章”。我告訴他們,我的實時內核和他們的不一樣,是占先式的,可以和許多商業上出售的內核產品競爭,源代碼可以放在《嵌入式系統編程》雜志網站的留言板(BBS)上。我每周要給Mr.Tyler打兩三個電話,幾乎是求他發表我的文章。他終于同意了,大概是我的電話打得他煩了。我的文章從70頁壓縮到30頁,連載在1992年5月期和6月期雜志上。該文章幾乎是1992年最熱門的文章。頭一個月,就有500多人從《嵌入式系統編程》雜志的網站留言板上下載我的源程序。Tyler先生真怕實時內核的商家們會要了他的命,因為在他的雜志上刊登了實時內核的源碼,這使商家們感到不安。我猜測,商家們一定已經認識到μC/OS(當時稱作μCOS)的質量和功能。該文章實際上是第一次把實時內核的內在工作原理曝光,一些過去的秘密公開了。幾乎是文章在《嵌入式系統編程》雜志上刊登出來的同時,R&D出版社的Bernard (昵稱Berny)Williams雜志來電話了。《C語言用戶雜志》就是這家出版社出的,此時距我最初與該雜志聯系已有6個月了。
我留言給我的妻子,說他對我的文章感興趣。我回電話給他,“你不覺得你有點太晚了嗎?我的文章已經在《嵌入式系統編程》雜志上發表了”。Berny只是說,“不,不,你沒明白我的意思,因為文章那么長,我打算出一本書”。起初,Berny只是想簡單地把我手上已有的那些出成一本大約80頁的書。我告訴他,如果寫成一本書的話,我打算寫得更好一些。以后,我又花了大約6個月的時間增加書的內容,就成了本書第一版的那個樣子。書大約有250頁。我把實時內核的名字由μCOS改成μC/OS,因為《嵌入式系統編程》雜志的讀者一直稱為“mucus”,那個自發音像英語的“痰”,讓人聽起來不舒服。回想起來,這可能是第一次給實時內核起名字。總之,實時內核μC/OS就這樣誕生了。開始時,書銷售的很慢,Berny和我計劃在書的適用期內能售出4000到5000冊,可是照開始時的銷售速率,能賣出去2000冊就不錯了。Berny堅持說,讓人知道這本書需要時間。于是他連續在《C語言用戶雜志》雜志上刊登廣告,一直持續了一年。約在書正式出版一個月之前,我第一次參加了在加利弗尼亞州圣克拉拉(Santa Clara)舉行的嵌入式系統會議,那是1992年的9月,我第一次見到Tyler Sperry先生,我給他看了即將出版的書的草稿。他很快地翻了翻,問我愿不愿意在下一屆嵌入式系統會議上做個講演。下屆會議在亞特蘭大召開。那再好不過了,我說我愿意。但我講些什么呢?他建議我講怎樣使用“小實時內核”。路上,我想,我這是怎么了?我從來沒有在那么多人面前講過話,到時候我自己就蒙了怎么辦?如果我講的都是些很平常的知識……人們可都是花了不少錢來聽會的。以后的6個月中,我準備了講稿。后來的會上,聽我課的有70多人。起初的20多分鐘里,我出的汗至少有1磅多。課后,約有15人上前來表示非常喜歡我的課,也喜歡我那本書。我得到了1993年在圣克拉拉舉行的會議的邀請,可我沒能參加,我參加了1994年波士頓舉行的會議。從那以后,每次嵌入式系統會議上都有我的例行演講。過去幾年中,我進了會議的顧問委員會(Advisory Committee),最近的幾次會上,每次的會議我都要做至少三次講演,每次的聽眾都在200到300人之間。會議對我的講演的評價總是在前10%。
至今,μC/OS的書已售出了15,000多冊。我收到并答復的來自世界各地的電子郵件超過1000份。1995年,《μC/OS The Real Time Kernel 》被翻譯成日語在《接口》(《Interface》)雜志上刊登。μC/OS已經被移植到以下一些CPU上。
Analog 設備公司 AD21xx
ARM公司 ARM6,ARM7
日立公司 64180,H8/3xx, SH 系列
Intel公司 80x86 (Real and PM), Pentium , Pentium Ⅱ, 8051, 8052,
MCS-251, 80196, 8096
三菱公司 M16和M32
摩托羅拉公司 PowerPC, 68K, CPU32, CPU32+, 68HC11, 68HC16
飛利浦公司 XA
西門子公司 80C166和TriCore
TI公司 TMS320
Zilog公司 Z-80 and Z-180
1994年,我決定寫第二本書,《Embedded System Building Blocks, Complete and Ready-to-use Modules in C》。由于某些原因,此書不如μC/OS那么流行,雖然書中很多信息在其他地方是找不到的。我始終認為,對于剛剛步入嵌入式世界的人們來說,這是一本理想的書。
1998年,我開通了μC/OS的正式網站,打算在該網站上放進移植、應用短文、相關網站、常見問題解答(FAQ)、μC/OS和μCOS-Ⅱ的版本更新等。只是這都要花時間去做。
回到1992年,我絕沒有想到寫篇文章會改變我的生活方式,實際上確實是這樣,我遇到了很多非常有趣的人,交了很多好朋友。我還是回答收到的每一個電子郵件。我確信,如果你寫給我什么的話,回應你是我的責任。
|