線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:8584
推到 Plurk!
推到 Facebook!

撰寫驅動程式的"必要性" 與 如何跨足這個領域

尚未結案
fnk
高階會員


發表:40
回覆:149
積分:102
註冊:2004-01-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-01 03:43:30 IP:203.160.xxx.xxx 未訂閱
各位先進, 大家好 !! 我有幾個問題想請教大家, 1. 為何要撰寫驅動程式 ?? 我指的是"技術"部分, 也就是說.. 要跟週邊溝通, 一定要用驅動程式嗎 ? 因為, 我也有寫過一些I/O的小小小經驗, 在DOS, Linux, Windows下 都有嘗試過去控制 parallel port 和 com port, 進而去控制電氣, 或是跟單晶片進行溝通.. 因此, 要與週邊溝通..應該不一定要寫驅動程式吧 !! 因為..我沒有寫過任何的驅動程式.. 就可以跟週邊進行溝通了.. 那..想請教各位先進的是..為何現在的電腦一定要寫驅動程式...??? 有什麼好處..還是不寫有什麼壞處..??? 2. 若要跨足這個領域..應該先看什麼書..或資料...?? 若要在 Windows 上寫驅動程式...那要看那方面的書...??? 此外..能不能用BCB來寫驅動程式...?? 不好意思, 問題非常多, 希望大家能給我個方向..指引我一下, 謝謝 Orz..^^ =========== 有興趣,就能進步 ===========
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-02 10:12:07 IP:61.218.xxx.xxx 未訂閱
你所提到的parallel port 和 com port與I/O控制不盡相同,簡單的說如果PC上裝了一張PCI的I/O卡要去控制外面的馬達.... 那你還可以用parallel port 和 com port的寫法去控制嗎?? 以下有篇文章 你可以閱讀一下 應該會有一些收穫 http://bbs.ee.ntu.edu.tw/boards/Programming/12/19.html ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
derrenbol1
中階會員


發表:5
回覆:113
積分:93
註冊:2004-12-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-02 20:24:23 IP:210.202.xxx.xxx 未訂閱
fnk您好:      1. 現代電腦的組成不光是硬體, 還有軟體, 當然指的就是作業系統. 未符合      該作業系統規範的操作可能會對作業系統造成損害, 輕者可能只是一時的      當機, 重者你可能要重灌系統(假設你寫到實體硬碟的話), 也可能不小心      你的程式還能夠存活, 所以作業系統儘可能要你寫驅動程式以適合該作業      系統, 換句話說, 一切都是卡在"作業系統". 你的觀點也沒錯, 其實在沒      有作業系統下, 你也可以直接控制電腦的週邊, 小弟常做這種事, 另一種      人就是BIOS工程師, "驅動程式"對他們而言是完全不須要的概念. 還有你      那些所謂"控制I/O"的經驗, 其實也未達須要寫驅動程式的地步, 如果你      想體驗一下的話, 你可以將Parallel或Serial Port的驅動程式從你的電      腦移除後, 你寫一個"驅動程式"再讓該Port能夠使用.      
fnk
高階會員


發表:40
回覆:149
積分:102
註冊:2004-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-03 03:05:18 IP:203.160.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-03 10:20:39 IP:221.169.xxx.xxx 未訂閱
驅動程式是給寫應用程式的人方便的一種做法。 我以 C 語言來解說。 我們在用 RS232、 USB、硬碟、光碟、網路卡。。。。。。 這些的硬體控制。每一個都不一樣。 可是在 C 語言用它們。都可以用 open, read, write, close 這些 file 的函數來使用。 這真是太不可思議了。 可是。我們再往下看。 OPEN 這個函數所做的事是什麼???? 就是依不同的file handle 去呼叫不同的”驅動程式”所提供的函數指標 來達成這些統一的功能。 當然。你如果不要使用作業系統。那當然可以不管它囉。 所以。我個人在玩單晶片時。(即使是 MIPS、ARM這種東西)我也不去考慮 作業系統。因為有了它。會有1.時序不好掌控。2.增加許多的硬體成本。(ROM就是要更多)。 所以,你要不要用個作業系統。每個人看法不同。 就這樣。希望你可以了解。驅動程式。是為了要讓硬、軟相容性變好的一個東東。
happosai
高階會員


發表:93
回覆:228
積分:109
註冊:2002-09-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-03 11:04:32 IP:211.75.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-03 12:05:25 IP:65.96.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-03 13:12:59 IP:140.124.xxx.xxx 未訂閱
各位大大, 謝謝大家 !! 其實本身有在看一本網路上流傳的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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-02-03 16:15:45 IP:210.202.xxx.xxx 未訂閱
To fnk : (1) OS留給Driver的是一層"抽象層", 你須要去了解這層介面的意義及如何 連接上這一層介面. 當然"抽象層"包裝成什麼副德性在Linux及Windows 是不太一樣, 但包裝的手法是大同小異, 基本上都是一組"空"的操作函 數要你去填, 寫Driver的書籍或OS的文件會告訴你, OS在何時何種條件 下會來呼叫這個函數, 該函數應該處理那些事情等等. (2) 那兩套都可以, 看你的習慣, 我記得還有CompuWare公司出的那一套, 名稱忘了. (3) 你的想法沒錯, 你可以查看本站有文章會介紹WinIo, 那一套就可以直 接在WinXP底下控制IO. 附帶的一點是, 作業系統的存在價值應該是看你在那個角度去看, 如果你只 是單純地從"控制某一項裝置"的觀點去看的話, OS的限制會令你很討厭, 但 如果你站在OS的設計這一層的話, 你不會想設計一個介面只會讓某種裝置使 用, 而應該是設計一層介面去適合某一類的裝置, 及在全部的裝置如何去做 管理, 這樣層層包裝下來, 自然控制時間就會拖很久. 我從事32位元微處理 器設計, 當客戶問我那套作業系統比較好時, 我第一個反應是會先問他們的 機器到底要處理到多複雜的事, 再決定是否他們該用OS, 或只要一個監控型 的程式即可達到目的.
系統時間:2024-05-04 18:47:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!