當前位置:首頁 » 生產設備 » 說明IO軟體的構成並說明什麼是設備驅動程序

說明IO軟體的構成並說明什麼是設備驅動程序

發布時間: 2021-01-11 18:46:57

1. 簡要說明Linux設備驅動程序中常用的ioctl方法和read/write方法的異同點

ioctl是iocontrol的縮寫,就是IO控制。
行為上:
簡單來說,如果你在寫驅動程序時候,碰回到一些IO操作,答在邏輯上不能歸類到read,不能歸類到write,那就可以認為是ioctl的部分。
read和write應該是寫入和讀出數據的,應該是作為單純的數據交換的方式來處理。而ioctl則是控制read和write一些選項的。比如:你做了一個通用的讀寫IO埠的驅動模塊。read和write是從埠讀寫數據的,但是更改讀寫的埠,這個操作應該如何處理呢?顯然用ioctl來實現比較合理。比如你的read和write是可以阻塞的,或者不能阻塞的,或者對設備文件的讀寫是可以並發的,或者是不可以並發的,這些都可以寫成可以用ioctl來配置的情況。後面為了可以用ioctl來實現模塊不同的IO特點。
參數上,ioctl的一般參數格式就是命令字(常量)+命令參數的方式。
read和write的參數格式都是數據緩沖區+數據目的地指針+長度。

2. 電腦程序總跳出PORTIO.DLL.可安裝的虛擬設備驅動程序之DII起始設置失敗。選擇「關

1.點開始菜單的運行,在裡面輸入 regedit,進入注冊表
2.查找 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\VirtualDeviceDrivers下 VDD的值是否包含 PORTIO.DLL,有的話將此值版清空,注意不要權刪除VDD項。
3.OK了.

3. i/o設備的驅動程序都存放在控制器上的ROM中嗎

是存放ROM中

4. I/O 設備的驅動程序都存放在什麼地方

您好,這樣的情況建議您下載最新版本的驅動精靈,或是直接在線升級一下驅動精靈。希望可以幫到您。

5. 安裝的時候出現IO錯誤

你可以用wow修復工具試試先!不行在看下面
出現I/O錯誤,無法訪問設備的解決方法

此修復工具對於西格嗎太方案的MP3"出現I/O錯誤,無法訪問設備」以及無法用隨機光碟驅動程序「Firemware Downlads"格式化的情況,專用修復工具!

使用方法:

首先把文件解壓到隨機光碟驅動程序安裝文夾....\SigmaTel\MSCN下,覆蓋掉部分文件。然後不要開機,聯好數據線後,一直按住menu/on/off(或開機鍵),當設備管理器里出現player recover後運行nandcleaner.bat,出現命令提示符窗口,按任意鍵繼續,出現固件刷新窗口(此時已為中文界面),勾選「Format Data Area」,按start,順利完成格式化和刷新固件工作,拔下機器
開機後,發現液晶屏不亮,也無字,接上電腦後能發現移動磁碟,點擊也能進入,再重新刷固件就可以里了,不過此時應把安裝好的驅動程序先卸載掉,把剩餘文件刪掉,因為有部分文件已被nandcleaner覆蓋。重新安裝隨機光碟驅動程序。不要開機 聯好線後,一直按住menu/on/off(或開機鍵),當設備管理器里出現player recover 後點擊firmware download..(就是MSCN Firmware Download),松開按鍵,我此時還是勾選了「Format Data Area」,點擊start,順利完成。

6. driverworks開發pci的驅動程序怎樣獲取資源的io空間地址

0 引言
如果把PC機作為控制系統的操作平台,匯流排作為一種先進的高性能32/64位局部匯流排正迅速取代原來的ISA匯流排的主導地位,以用於高速外設,並成為微型計算機系統的主流系統,因而也成為工程開發人員用於工業控制的首選。為了縮短開發周期,一般都採用專用的介面器件。本文就是採用PLX公司的PCI9052來把PCI匯流排上的操作轉換為對局部匯流排的操作,同時通過雙口RAM實現和下位機的存儲轉接。針對一般PCI匯流排開發時由於軟硬體分離使開發的軟硬體不能很好結合的現象,本文結合實例介紹了應用程序並給出了如何通過DriverStudio開發的PCI設備驅動程序來訪問PCI設備卡硬體資源的具體程序。
1 PCI的配置空間及其配置
PCI匯流排支持存儲器地址空間、I/O地址空間和配置空間等三個物理空間。其中,配置空間是PCI匯流排所特有的一個空間,PCI匯流排能實現即插即用的功能,正是通過它特有的配置空間來實現的。PCI配置空間的大小為256位元組,分為頭標區和設備有關區。直接影響設備特性的配置寄存器在頭標區,其他部分則因設備而異。PCI匯流排的配置空間通常與PCI介面晶元相關。該配置空間包括一系列的PCI配置寄存器。本文採用的PCI9052晶元的配置寄存器分為PCI配置寄存器和局部配置寄存器,二者都可以由PCI匯流排和串列EEPROM訪問。
在PCI配置寄存器中的設備ID、製造商ID、版本號、首區類代碼、類別代碼、指令寄存器和狀態寄存器等寄存器在所有的PCI設備中都必須實現,具體設置可參考文獻[1]。通常情況下,操作系統可使用這些寄存器的內容來決定該PCI設備的載入其驅動程序。
PCI匯流排最重要的功能之一是通過基地址寄存器和局部配置寄存器在地址空間重定位PCI設備。系統上電時,通過上層應用軟體能判斷系統中存在那些設備,並建立協調的地址映射。所以,基地址寄存器和局部配置寄存器是實現驅動程序的關鍵。
PCI配置寄存器提供有6個基地址寄存器(BASE0~BASE5)這些基地址都是系統中的物理地址,其中BASE0和BASE1是用來訪問局部配置寄存器的基地址,BASE0是映射到內存的基地址,BASE1是映射到I/O的基地址,可用於通過內存和I/O來訪問局部配置寄存器。這兩個基地址可固定用於PCI9052晶元的寄存器操作。
通過BASE2~BASE5四個空間最多可以訪問局部端所接的4個晶元,實現4個局部地址空間(局部空間0~3)的PCI匯流排訪問。PCI匯流排對局部端所接晶元的局部地址映射是通過4個寄存器組(PCI基地址寄存器,局部范圍寄存器,局部基地址寄存器,局部匯流排區域描述符)來實現的。這個組定義了每個空間以及相應局部空間的特性。它們將局部端的晶元通過局部端地址(在局部配置寄存器中設置)翻譯成PCI匯流排地址,也就是將本地的晶元映射到系統的內存或I/O口。而片選信號寄存器則是用來選定這些局部端所接的晶元的。這樣,用程序操作這一段內存(或I/O)實際上就是對本地晶元的操作。其映射關系如圖1所示。這些寄存器的內容必須在晶元復位時通過串列E2PROM進行載入,而正確配置E2PROM的內容則是使用PCI9052的關鍵。

本設計選取LAS0(Local Address Space 0)來訪問局部端的雙口RAM晶元中的2 KB定址空間,與其有關的寄存器有四個:LAS0范圍寄存器、LAS0局部基址寄存器、LAS0局部匯流排區域描述符和片選0基址寄存器。LAS0范圍寄存器規定了地址空間的大小。由於需要2 KB的內存空間,而計算機預留了32 KB空間(即8000H),所以其寄存器值為0xFFFF8000H,而類型則是不可預取的;LAS0局部基地址寄存器定義了設備卡資源上所佔用的基地址,它的最終目的是將這個基地址重新映射到PCI地址空間。由於基地址必須是32KB的整數倍,因此,為方便起見,可以將基地址定為00000000H,又由於位0為空間使能位,所以,寄存器的值為00000001H;LAS0局部匯流排區域描述符用來定義地址空間0的具體工作特性。
該匯流排採用16位匯流排寬度,工作方式定義為不使能突發和不預取,因此,該寄存器的數值初步確定為4043A1C0H,最終的值則需要不斷測試才能確定;片選0基址寄存器使用PCI9052的CS0#作為雙口RAM的片選信號,CS0#片選信號的起始地址和地址范圍由片選0基址寄存器設置,局部匯流排的容量是2 KB,第11位為1,基地址是該范圍的16倍,一般將倍數放置在范圍位之後,所以寄存器值設置為0xO008401。當從局部空間0基址開始的2 KB空間范圍落在CS0基地址寄存器所設置的范圍內,CS0端有效,這種方式可減少地址解碼得到的片選邏輯。
用PLX9052可將PCI匯流排上的操作轉換為對局部匯流排的操作,即通過LAD0~LAD7、RD、WR、CS等對局部端晶元訪問。如果系統分配給本卡的存儲空間為FFFF0000H~FFFF7FFFFH。那麼,當系統通過PCI匯流排訪問這個區域時,PLX9052就會應答,並將其轉換為局部地址0x0000H~0x07FFH,另外,PLX9052自身也有一些內部寄存器,它們被自動映射到另一片內存區域,可通過PCI匯流排直接訪問。
PCI9052提供了兩種類型的中斷源(硬體中斷和軟體中斷)。中斷可通過PCI9052中斷控制/狀態寄存器來(INTCSR)允許和禁止。PCI9052通過2個局部中斷引腳來實現硬體中斷,它們支持邊緣和電平觸發中斷,可以通過對INTCSR寄存器的編程來實現局部中斷,然後產生PCI中斷(INTA),並生成PCI中斷INTA#方式。PCI9052可以軟體方式產生中斷,設計時只需要將INTCSR寄存器的軟體中斷位設置為1即可。
2 驅動程序的開發
在開發PCI板卡功能驅動程序之前,首先要明白所需的PCI硬體資源,並針對設備卡的硬體資源來處理PCI設備的內存、埠的讀寫,以及中斷處理,從而實現PCI設備功能。
2.1 驅動程序在操作系統體系結構中的位置
操作系統結構可分為五層模型:
(1)用戶應用程序;
(2)IO管理層;
(3)驅動程序;
(4)HAL(硬體抽象層);
(5)硬體。
圖2給出了Windows2000操作系統驅動程序開發者所關心的特徵,一般情況下,軟體要麼在用戶模式中執行,要麼在內核模式下執行。從驅動開發的角度上看,WDM模型為存在於Win-dows2000系統中的驅動程序提供了一個參考框架。作為Windows2000系統結構開發人員,由於操作系統為應用程序,而在驅動程序和硬體之間提供有系統服務介面和平台相關操作,因此,設計時只需要關注應用程序和設備驅動程序的開發。

2.2 設備資源
PCI設備的硬體資源分配與管理是驅動程序很重要的部分,設備的硬體資源包括內存空間、I/O空間和中斷。由於PCI匯流排為PnP匯流排,PCI設備的硬體資源是由PCI配置機構動態分配給PCI配置寄存器的,因此,驅動程序首先需要取得這些資源才能操作硬體。當PnP管理器檢測到PCI設備時,系統就會發送IRP_MN_START_DEVICE的IRP給驅動程序,驅動程序調用OnStartDevice以啟動常式處理,並在啟動常式里獲取該IRP棧,同時把它包含的系統分配給該設備的資源信息。
用DriverStudio開發驅動程序時,應在Wizard中設置好PCI設備的資源。對於實際的PCI9052設備卡,其基地址寄存器0和1分別固定用於PCI9052局部寄存器的內存映射地址和I/O映射地址,基地址寄存器2則用於設備卡的內存映射地址,並使用局部中斷引腳來產生PCI中斷,以分別生成對應的KIoRange類、KMemoryRange類和KInterrupt類。這些配置信息由配置管理器發送到OnStartDevice中重載該成員函數,而開發者則不必再處理。在一般情況下,驅動程序無需再訪問PCI設備的配置空間,如果需要訪問,則可通過類KPciConfiguration,該類包含了通過向PCI匯流排發送瀆寫配置空間的IRP操作。也可定義類KRe-sourceAssignment來獲取PCI的埠地址和中斷號以及內存地址和大小,並把得到的資源放在用戶自己定義的變數中。
2.3 WDM驅動程序對硬體資源的訪問
獲取設備的硬體資源以後,就可以對硬體資源進行訪問了。對硬體的訪問一般包括I/O埠訪問和內存訪問,它們分別對應PCI配置空間的I/O空間和內存空間。從圖2可以看出,當應用程序需要訪問設備時,它就會調用Win32API函數(如ReadFile)。Win32子系統模塊通過調用平台相關的系統服務介面實現該API,而平台相關的系統服務則調用內核模式來支持常式。即在調用ReadFile函數時,首先到達系統的人口點,然後調用系統服務介面,最後由系統調用內核模式的服務常式。執行時首先檢查傳遞給它們的參數,然後創建一個「I/O請求包(IRP)」的數據結構,並把這個數據結構送到某個驅動程序的入口點執行IRP設備驅動程序,最後再訪問硬體。對於PIO方式的設備,一個IRP_MJ_READ操作將直接讀取設備的埠或設備的內存寄存器。一般會使用硬體抽象層(HAL)來訪問硬體。IRP貫穿於驅動程序之間,它在應用程序、驅動程序和設備之間起著橋梁作用,可稱之為內核態的「消息」。驅動程序完成一個I/O操作後,可通過調用一個特殊內核模式服務常式來完成該IRP,完成操作時再處理IRP的最後工作,以它使等待的應用程序恢復運行。
用DriverStudio開發驅動程序時,可根據配置聲明KIoRange類、KMemoryRange類和KInterrupt類來實現對內存空間、I/O空間、中斷的操作。在本例中,基地址寄存器0和1固定用於PCI9052晶元的操作寄存器內存映射地址和I/O映射地址,基地址寄存器2則用於雙口RAM的內存映射。通過一個外部引腳即可產生中斷。標識兩個KMem-oryRange類實例、一個KIoRange類實例和一個KInterrupt類實例的具體實現細節如下:
(1) I/O埠的訪問
I/O埠的訪問流程如圖3所示,應用程序通過API函數DeviceIoControl的調用,並調用驅動程序的分發常式DeviceControl,同時通過KIoRange類來實現對I/O映射空間的訪問。需要注意的是,當DeviceloControl非同步調用的時候,必須在驅動程序中添加取消常式,並在DeviceControl常式中阻止一個應用程序對其的多次調用。KIoRange類的成員函數outb、inb、outw、inw、ind、outd可分別用於從埠讀或寫一個位元組、字和雙字數據。在WDM中,對於I/O埠,系統可將其看成寄存器,一般用於數字傳輸量比較小的地方。在對PCI設備的訪問中,I/O埠的訪問通常比較頻繁。

(2) 內存的訪問
在基於DriverStudio開發的驅動程序中,向存儲器空間讀寫大量數據一般選用Write/Read函數,但對於一個實際存在的物理設備的訪問,在某一時刻只能進行一個操作,因而在訪問內存對象的時候,一般都要求一個IRP排隊的隊列,可通過設備類的成員函數QueueIrp將IRP插入隊列。DriverWorks提供有KDeviceQueue類,其成員函數StartIo用於處理設備對象的IRP隊列。具體的操作是通過KMemoryRange類來實現對設備內存映射空間的訪問。其訪問流程見圖4所示。需要注意的是,當IRP隊列為空時,調用QueueIrp時,系統將同步調用StartIo函數。

7. linux如何用驅動程序查看 計算機系統上的所有PCI設備的I/O配置信息。

# lspci -tv # 列出所有PCI設備

8. Intel(R) Management Engine Interface該設備無法啟動 I/O 設備的設置不正確或驅動程序的配置參數不正確

跟我的一樣,我的無線網卡也一起掛了,朋友有解決的方法嗎

9. i/o設備的驅動程序都存放在i/o控制器上的ROM中。這句話為什麼是錯的啊!

位置錯了,改改說法就不錯了

10. 單片機簡單I/O口設備的並口直接驅動,求解實現此功能的程序。剛學到這,不怎麼會,望大神給個答案。

做出來了:

就是這個電路圖,電路結構,和問題中的一樣。

熱點內容
線切割怎麼導圖 發布:2021-03-15 14:26:06 瀏覽:709
1台皮秒機器多少錢 發布:2021-03-15 14:25:49 瀏覽:623
焊接法蘭如何根據口徑配螺栓 發布:2021-03-15 14:24:39 瀏覽:883
印章雕刻機小型多少錢 發布:2021-03-15 14:22:33 瀏覽:395
切割機三五零木工貝片多少錢 發布:2021-03-15 14:22:30 瀏覽:432
加工盜磚片什麼櫸好 發布:2021-03-15 14:16:57 瀏覽:320
北洋機器局製造的銀元什麼樣 發布:2021-03-15 14:16:52 瀏覽:662
未來小七機器人怎麼更新 發布:2021-03-15 14:16:33 瀏覽:622
rexroth加工中心亂刀怎麼自動調整 發布:2021-03-15 14:15:05 瀏覽:450
機械鍵盤的鍵帽怎麼選 發布:2021-03-15 14:15:02 瀏覽:506