撰寫驅動程式的"必要性" 與 如何跨足這個領域 |
尚未結案
|
fnk
高階會員 發表:40 回覆:149 積分:102 註冊:2004-01-02 發送簡訊給我 |
各位先進, 大家好 !! 我有幾個問題想請教大家, 1. 為何要撰寫驅動程式 ??
我指的是"技術"部分, 也就是說.. 要跟週邊溝通, 一定要用驅動程式嗎 ? 因為, 我也有寫過一些I/O的小小小經驗, 在DOS, Linux, Windows下 都有嘗試過去控制 parallel port 和 com port, 進而去控制電氣, 或是跟單晶片進行溝通.. 因此, 要與週邊溝通..應該不一定要寫驅動程式吧 !! 因為..我沒有寫過任何的驅動程式.. 就可以跟週邊進行溝通了.. 那..想請教各位先進的是..為何現在的電腦一定要寫驅動程式...??? 有什麼好處..還是不寫有什麼壞處..??? 2. 若要跨足這個領域..應該先看什麼書..或資料...?? 若要在 Windows 上寫驅動程式...那要看那方面的書...??? 此外..能不能用BCB來寫驅動程式...?? 不好意思, 問題非常多, 希望大家能給我個方向..指引我一下, 謝謝 Orz..^^ ===========
有興趣,就能進步
===========
|
daniel__lee
高階會員 發表:18 回覆:124 積分:113 註冊:2002-11-10 發送簡訊給我 |
|
derrenbol1
中階會員 發表:5 回覆:113 積分:93 註冊:2004-12-09 發送簡訊給我 |
fnk您好: 1. 現代電腦的組成不光是硬體, 還有軟體, 當然指的就是作業系統. 未符合
該作業系統規範的操作可能會對作業系統造成損害, 輕者可能只是一時的
當機, 重者你可能要重灌系統(假設你寫到實體硬碟的話), 也可能不小心
你的程式還能夠存活, 所以作業系統儘可能要你寫驅動程式以適合該作業
系統, 換句話說, 一切都是卡在"作業系統". 你的觀點也沒錯, 其實在沒
有作業系統下, 你也可以直接控制電腦的週邊, 小弟常做這種事, 另一種
人就是BIOS工程師, "驅動程式"對他們而言是完全不須要的概念. 還有你
那些所謂"控制I/O"的經驗, 其實也未達須要寫驅動程式的地步, 如果你
想體驗一下的話, 你可以將Parallel或Serial Port的驅動程式從你的電
腦移除後, 你寫一個"驅動程式"再讓該Port能夠使用.
|
fnk
高階會員 發表:40 回覆:149 積分:102 註冊:2004-01-02 發送簡訊給我 |
引言: fnk您好: 1. 現代電腦的組成不光是硬體, 還有軟體, 當然指的就是作業系統. 未符合 該作業系統規範的操作可能會對作業系統造成損害, 輕者可能只是一時的 當機, 重者你可能要重灌系統(假設你寫到實體硬碟的話), 也可能不小心 你的程式還能夠存活, 所以作業系統儘可能要你寫驅動程式以適合該作業 系統, 換句話說, 一切都是卡在"作業系統". 你的觀點也沒錯, 其實在沒 有作業系統下, 你也可以直接控制電腦的週邊, 小弟常做這種事, 另一種 人就是BIOS工程師, "驅動程式"對他們而言是完全不須要的概念. 還有你 那些所謂"控制I/O"的經驗, 其實也未達須要寫驅動程式的地步, 如果你 想體驗一下的話, 你可以將Parallel或Serial Port的驅動程式從你的電 腦移除後, 你寫一個"驅動程式"再讓該Port能夠使用. >>< face="Verdana, Arial, Helvetica"> 首先, 先感謝derrenbol1大大的詳細解說, 其實, 我有修過一學期的RTOS(即時作業系統)的課.. 泰半是有關於作業系統的概念.. 再根據我之前所看的一些書..想請教大大.煩請大大看看我的觀念是不是正確.. 1. 驅動程式..其實是一個"小"程式..上接作業系統(即一切都要符合作業系統 的要求規則來玩)...下接受驅動的硬體(端看各家硬體廠商怎麼設計)... 好處是.. (1) 最上層的"程式設計師"只要透過作業系統的API... 就可以控制相同東西..但是不同廠家所出的產品.. 利如..Epson和Hp所出的印表機...對於程式設計師來講.. 只要下達Print(假設Windows有提供這樣的API).. 作業系統就會下達一連串的命令給驅動程式.. 驅動程式就會透過 parallel port 下達命令給印表機上的單晶片.. 當然HP和Epson的機台不同..上面單晶片下達的命令也不同.. 因此..各家才有自己的不同的驅動程式.. 又如..我們常用 VFW 來擷取影像, 這是Windows的API, 提供的一個介面.. 使得..不論是USB..IEEE1394..或是Frame Grabber... 只要其驅動程式有符合Windows的規範的.. 均可透過VFW這套API來進行影像擷取.. ==> 因此..第一點好處是..有驅動程式..可以達到責任區分.分離設計的原理.. 因為..程式設計師(寫AP)只要透過Windows所提供的API.. 就可以達到印東西..可以擷取影像(VFW API)..可以上網(WinSocket API).. 而不會我用Epson的印表機才能印東西.. 換成HP就不能印東西了... (2) ... 不知道還有什麼好處...>"< =========== 有興趣,就能進步 =========== |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
驅動程式是給寫應用程式的人方便的一種做法。
我以 C 語言來解說。
我們在用 RS232、 USB、硬碟、光碟、網路卡。。。。。。
這些的硬體控制。每一個都不一樣。
可是在 C 語言用它們。都可以用 open, read, write, close
這些 file 的函數來使用。
這真是太不可思議了。
可是。我們再往下看。
OPEN 這個函數所做的事是什麼????
就是依不同的file handle 去呼叫不同的”驅動程式”所提供的函數指標
來達成這些統一的功能。 當然。你如果不要使用作業系統。那當然可以不管它囉。
所以。我個人在玩單晶片時。(即使是 MIPS、ARM這種東西)我也不去考慮
作業系統。因為有了它。會有1.時序不好掌控。2.增加許多的硬體成本。(ROM就是要更多)。
所以,你要不要用個作業系統。每個人看法不同。
就這樣。希望你可以了解。驅動程式。是為了要讓硬、軟相容性變好的一個東東。
|
happosai
高階會員 發表:93 回覆:228 積分:109 註冊:2002-09-15 發送簡訊給我 |
1. 以USB為例,標準的USB硬體(如鍵盤、滑鼠、讀卡機),Windows 都已經
內建DRIVER,但是假如貴公司開發了一隻USB紅外線模組,那就非得自行
開發USB DRIVER不可了。從另外一個角度來看,DRIVER依照OS的規格實做
,使得OS可以提供AP一致性的介面,也算是一種"middleware",試想假如
OS沒有規範硬體控制的方法,豈不是天下大亂? 2. 學寫DRIVER說實話小弟也算新手,具小弟同事的說法,有用的DRIVER
通常都找不到可以參考的sample codes,很多DRIVER source code是上
游的IC設計公司提供的,所以真的想學會寫DRIVER,還是想辦法找家做
DEVICE的公司,拿到這些sample codes用力給他讀懂,才有可能真正學會
寫DRIVER。 P.S 現在PC硬體已經複雜到很難自學了,USB測試儀器據說高達百萬...
|
miyu
中階會員 發表:13 回覆:96 積分:91 註冊:2003-05-01 發送簡訊給我 |
引言: 1. 以USB為例,標準的USB硬體(如鍵盤、滑鼠、讀卡機),Windows 都已經 內建DRIVER,但是假如貴公司開發了一隻USB紅外線模組,那就非得自行 開發USB DRIVER不可了。從另外一個角度來看,DRIVER依照OS的規格實做 ,使得OS可以提供AP一致性的介面,也算是一種"middleware",試想假如 OS沒有規範硬體控制的方法,豈不是天下大亂?您的紅外線USB module, 對PC端的USB port作成HID device, 這樣就可以不用開發 USB driver 了.. :p 引言: 2. 學寫DRIVER說實話小弟也算新手,具小弟同事的說法,有用的DRIVER 通常都找不到可以參考的sample codes,很多DRIVER source code是上 游的IC設計公司提供的,所以真的想學會寫DRIVER,還是想辦法找家做 DEVICE的公司,拿到這些sample codes用力給他讀懂,才有可能真正學會 寫DRIVER。DDK sample有一個缺點就是, 通常要等你摸熟到一定程度以後才會恍然大悟, 了解原來寶庫在這邊. 雖然他離實際的產品有一段距離, 但是大架構基本上是具體而微的. 基本上, MS的東西讓我感冒的地方就是, 不能說不詳細, 也不能說他都沒給你提示, 但是等你看得懂那個東西的時候, 你已經屬於(這個領域)入門的Driver Engineer了... 而 Driver 的資料又異常的少.. 雖然我很想說, Windows Sources code真的是很有參考價值... 不過這個等於白講. fnk: 引言: (2) ... 不知道還有什麼好處...>"<一個是特權指令不會被濫用, 這個可以儘可能的去保護作業系統不會被無意或是惡意的破壞. 另一個是, OS可以以中介的角度去驅動週邊後, 他才能夠仲裁並管理系統資源, 該 queue 的 queue, 該拉 priority 的拉, 並且讓資源使用不會打架, 不會有deadlock的現象等等.. 當然, 大多數的硬體其實都有對應的驅動程式了, 大多數的情況下應該是不需要你自己去寫. 你可以透過 Deviceiocontrol() 去控制 driver, 透過 setup api 去處理硬體的資訊問題. --- 小葵..小葵有很多的夢想 等待薰下班回家, 並準備晚飯跟洗澡水 薰回家的時候, 對你說一聲 歡迎回家 在休息的日子, 兩個人坐在屋外的走廊上, 品嚐著我親自作的點心 薰如果累了, 替他搥搥肩; 冷了, 和薰一起擠著被爐 但是, 但是... 小葵最大的心願是...成為薰的..成為薰的妻子 |
fnk
高階會員 發表:40 回覆:149 積分:102 註冊:2004-01-02 發送簡訊給我 |
各位大大, 謝謝大家 !!
其實本身有在看一本網路上流傳的Linux Device Driver的聖經.O'REILLY出的..
有幾個問題想再請教各位先進, (1)就Windows和Linux而言..不知道是不是Device Driver的概念都可以相通呢??.. (2)若要寫Windows Driver需要那些工具(開發境境)勒??..DDK..還是WinDriver(JUNGO).. (3)另外..如同"暗黑破壞神"大大所講的..若只是單純要控制I/O..是不必寫Driver的..
但是..現存的OS..很多都會對I/O做保護..如Windows XP..Linux..
即寫AP的程式設計師..無法直接去控制I/O..而要透過Open..Write..Read.
等函式來控制I/O..這樣一來..速度上會很慢..
若我們能夠自己寫一個Driver..如並列埠的Driver..單純用來輸出High/Low訊號..
這樣..就不用透過OS...而可以直接穿過OS..來控制I/O..速度是不是會變快..
不知我的想法是否有錯... 各位大大..不好意思..我只是抱著學習討論的心態來跟大家討論...
若覺得我發的問題太多...那我可以再另譬一個主題...
大家一起來討論...^^ ===========
有興趣,就能進步
===========
|
derrenbol1
中階會員 發表:5 回覆:113 積分:93 註冊:2004-12-09 發送簡訊給我 |
To fnk : (1) OS留給Driver的是一層"抽象層", 你須要去了解這層介面的意義及如何
連接上這一層介面. 當然"抽象層"包裝成什麼副德性在Linux及Windows
是不太一樣, 但包裝的手法是大同小異, 基本上都是一組"空"的操作函
數要你去填, 寫Driver的書籍或OS的文件會告訴你, OS在何時何種條件
下會來呼叫這個函數, 該函數應該處理那些事情等等.
(2) 那兩套都可以, 看你的習慣, 我記得還有CompuWare公司出的那一套,
名稱忘了.
(3) 你的想法沒錯, 你可以查看本站有文章會介紹WinIo, 那一套就可以直
接在WinXP底下控制IO. 附帶的一點是, 作業系統的存在價值應該是看你在那個角度去看, 如果你只
是單純地從"控制某一項裝置"的觀點去看的話, OS的限制會令你很討厭, 但
如果你站在OS的設計這一層的話, 你不會想設計一個介面只會讓某種裝置使
用, 而應該是設計一層介面去適合某一類的裝置, 及在全部的裝置如何去做
管理, 這樣層層包裝下來, 自然控制時間就會拖很久. 我從事32位元微處理
器設計, 當客戶問我那套作業系統比較好時, 我第一個反應是會先問他們的
機器到底要處理到多複雜的事, 再決定是否他們該用OS, 或只要一個監控型
的程式即可達到目的.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |