今天學長跟我們分享寫driver的經驗,他說:
如果是寫windows的driver還算OK,因為chip都有統一的標準,所以學會一種,其他的很快就上手。在這種情況下,windows才是老大,不遵守windows的規定,chip就會賣不好。
可是embedded system的chip各家爭鳴,沒有一個統一的規格,chip的design不一樣、optimization作法不同、甚至流程都不一樣。所以這裡好不容易搞定一個,下次遇到不一樣的chip,全部都要重弄,沒辦法包成library重複使用。
再加上寫driver只有spec.可以看,沒有說明文件,沒有好用的debug tool,只能一直測測測測測,有時候測出問題,也沒辦法確定是hardware還是driver出錯,只能用各種方法try(考驗想像力?)。或是自己測沒有問題,送到客戶那邊才又被退貨,因為客戶使用的data我們剛好沒測到之類的。有時候發生問題,但不會造成當機,只是performance會變差,又只有在很小的機率會遇到這樣的情況,所以很難debug。
如果沒有電機背景的話,對硬體架構、流程不熟悉,寫driver就變得吃力了。
就因為寫driver需要電機背景、會coding,也許再加上一點經驗,所以很少人會。(原來是這樣!~)
也因此寫driver的人通常要價都比一般的工程師高,
所以,聽說寫driver是一件很賺錢的事?
難怪MIT要把EE和IE合在一起。

MIT 是指美國那間?美國各大學的 computer science 通通都是 EE/IE 都有教啊,是只有在台灣才有分。
Comment by jeffhung — August 16, 2006 @ 10:25 pm
是喔…Orz
我在MIT的表妹說她們是分學程的,只要學程有修完就能拿到學位,所以你可以只有EE,或只有IE,或者EE/IE都修完就是雙學位囉。
不過她好像已經畢業在上班了 @@
Comment by afoofa — August 16, 2006 @ 11:02 pm
寫 driver 在 windows 上要有工具,加上熟該裝置協定就會容易寫。 embedded system 大都是 bsd/vxworks/linux 等系統,寫driver 倒是很直覺,不過除錯如果沒有 ICE (in-circuit emulator)就會變得很困難。 (x86,arm,mips 等皆有 ice可用)
工欲善其事,必先利其器。
Comment by cphacker — August 22, 2006 @ 4:51 pm