今天工作,跟同事聊起Driver的內容,忽然想起前陣子發生的趣事...
前陣子朋友問我,我在做什麼工作,我只跟他簡單說:「Driver」,他立刻回應:「那你開的是哪種車?公車還是計程車?」
因此我就以這個笑話為出發,把故事說完吧!
聽到我差點笑倒,解釋說:「是驅動程式的Driver!不是開車的Driver啊!」
當然,我又被繼續追問,什麼是Driver了?
我解釋說,一個Chip,他可能有很多Reg要調,可能有一些Timing問題。而我們就是要負責去解決....
好吧,這對非本行的人來講簡直就像瘋子在講話一樣。於是我只好再舉實例了,我知道他喜歡玩四輪驅動車,因此就問....
「如果你想要設計出一台會跑的小車子,你需要什麼?」
「至少需要馬達、輪子吧?」
「好,我們有了馬達,四個輪子,那我們至少能做出台會往前跑的車子了。但是只會往前跑,遲早會撞山吧?」
「當然了」
「所以,我們要一個Sensor,來辨別車子前面的障礙物,這樣你還能理解嗎?」
「當然,但不夠吧?」
「接著當然是教車子怎麼自己轉彎囉!」
「那怎麼教呢?」
我就告訴他:所以我們需要Driver嘛!(雙關,司機、驅動程式)
這可勾起他的興趣了,他要我進一步解釋~
「我們可以放一台電腦到車子裡面,電腦會根據Sensor辨別出的障礙物,來判別什麼時候需要轉彎,這能理解吧」
「可以~可是,電腦這麼大台,你要怎麼裝進去」
「SOC你總該聽過吧?電腦說穿了,就是各種邏輯電路的組合,而現在我們已經可以把這些功能,都給裝進一個小小電腦-Chip裡」
「恩....這還能理解,假設電腦裝進去了,也有電池供電了~接著勒?」
「有了電腦,當然就要有軟體,這個軟體,就是所謂的Driver,他會根據電腦(晶片)有的功能,來教會這台車子怎麼開車囉!」
朋友大感不解:「這樣講太快了吧!能說的更具體嗎?」
我說:「這樣問吧,要怎麼控制車子轉彎?」
「可能需要輪軸之類的控制裝置?」
「是的,用最簡單解釋就是,Sensor那邊發現前面有障礙物了,他會把有障礙物的訊息通知給晶片。晶片裡有一套演算法,會算出轉彎路徑。最後把怎麼轉彎的方法,告訴輪軸」
「更精確來說,Sensor所感應到的資料,可能是一連串的RAW,類似0101...的訊號,當然,我們晶片內會有硬體去處理這些訊號,將之轉成如YUV之類更有意義訊息,在繼續經過一連串的轉換,最後得到向左轉、向右轉,當然也是類似0101之類訊息,最後就由邏輯電路來控制步進馬達,完成我們需要的轉彎動作」
「這一連串傳遞訊息給晶片、控制輪軸的動作,就是由Driver來完成!」
「果然就是個稱職的司機(Driver)嘛!」朋友笑著說
「是的,這就是Driver,我現在工作就是在設計這名司機....」
留言列表