新聞中心
一、簡介

隨著計算機技術的不斷發(fā)展,人們在使用計算機處理各種任務時需要不斷地與計算機進行交互。輸入設備作為與計算機交互的重要方式之一,在計算機系統(tǒng)中擔任著重要的角色。Linux作為一款自由、開放源碼的操作系統(tǒng),存在著許多不同的輸入設備驅動程序,針對輸入設備的多樣性,Linux輸入設備的多驅動處理是非常重要的。
二、基礎知識
輸入設備是指人們通過鍵盤、鼠標、觸摸屏等設備向計算機發(fā)送信息和指令的設備。輸入設備的使用需要有對應的驅動程序來實現設備與計算機的交互。Linux輸入設備驅動可以簡單分為兩種類型:字符設備驅動和輸入設備驅動。
字符設備驅動是一種讀寫數據的設備驅動,字符設備驅動會將輸入設備上的按鍵值轉換為簡單的文本型字符,并通過與驅動程序通訊的接口將該字符傳遞給用戶空間。
輸入設備驅動則是一種特殊的字符設備驅動,專門用于與輸入設備進行交互。輸入設備驅動將輸入設備的數據轉換為具有特定格式的內核事件,并通過內核事件接口傳遞給用戶空間。
輸入設備驅動包含了下面的概念:
– 輸入設備的描述:輸入設備驅動程序需要對輸入設備進行描述,包括設備名稱、設備類型和設備的詳細信息。
– 輸入設備主動事件:輸入事件是輸入設備傳送給系統(tǒng)的事件。
– 中斷處理:當輸入設備生成事件時,在系統(tǒng)中斷,中斷處理程序將事件從輸入設備中讀出。
– 內核事件接口:內核事件接口用于將事件傳遞給用戶空間。
– 用戶態(tài)事件處理:用戶態(tài)應用程序通過讀取內核事件接口獲得內核事件,并執(zhí)行需要的操作。
三、多驅動處理
在現代的Linux系統(tǒng)中,存在著越來越多不同類型的輸入設備,例如鼠標、鍵盤、觸摸屏等。因此,對于各種輸入設備的多驅動處理顯得尤為重要。
多驅動處理的實現需要做到以下點:
– 驅動程序的自動加載:對于不同的輸入設備,我們需要不同的驅動程序來實現對它們的交互。因此,在使用輸入設備時,需要自動加載相應的驅動程序。
– 輸入設備的統(tǒng)一管理:輸入設備可以有多種不同的驅動程序,它們可以同時對同一設備進行操作。因此,需要對輸入設備進行統(tǒng)一管理,使其能夠正確地與多個驅動程序進行交互。
– 驅動程序的共享:多個應用程序可能需要同時使用同一個輸入設備的多個不同事件,因此,需要實現驅動程序之間的信息共享。
Linux內核提供了一種多驅動處理機制來實現對輸入設備的統(tǒng)一管理和驅動程序的共享。這種機制基于輸入設備的總線,每個輸入設備都會被掛在相應的總線上。
對于輸入設備的自動加載,Linux內核提供了一個稱為”驅動模塊自動加載”(Automatic Module Loading)的機制。當檢測到新設備時,內核會自動檢查它所連接的總線和設備類型,并自動加載相應的設備驅動。
對于輸入設備的統(tǒng)一管理和驅動程序的共享,Linux內核提供了一種事件接口來實現。用戶空間應用程序使用事件接口讀取輸入設備產生的事件,不同的輸入設備驅動程序通過事件接口注冊回調函數,實現不同事件的處理。
四、
在現代計算機系統(tǒng)中,輸入設備作為一種重要的交互方式,在系統(tǒng)設計中占據著很重要的地位。Linux系統(tǒng)作為一款成熟的操作系統(tǒng),對于不同類型的輸入設備提供了多種驅動程序。對于多種不同類型的驅動程序,Linux內核提供了一種多驅動處理機制來實現對輸入設備的統(tǒng)一管理和驅動程序的共享。這種機制的實現,使得使用輸入設備的操作更加方便和高效。
相關問題拓展閱讀:
- 如何在嵌入式LINUX中增加自己的設備驅動程序
如何在嵌入式LINUX中增加自己的設備驅動程序
您好,這樣的情況建議您下載最新版本的驅動精靈,或是直接在線升級一下驅動精靈。希望可以幫到您。
Linux驅動程序的使用可以按照兩種方式編譯,一種是靜態(tài)編譯進內核,另李指一種是編譯成模塊以供動態(tài)加載。由于uClinux不支持模塊動態(tài)加載,而且嵌入式LINUX不能夠象桌面LINUX那樣靈活的使用inod/rmmod加載卸載設備驅動程序,因而這里只介紹將設備驅動程序靜態(tài)編譯進uClinux內核的方法。
下面以UCLINUX為例,介紹在一個以模塊方式出現的驅動程序test.c基礎之上,將其編譯進內核的一系列步驟:
(1)
改動test.c源帶代碼
之一步,將原來的:
#include
#include
char
kernel_version=UTS_RELEASE;
改動為:
#ifdef
MODULE
#include
#include
char
kernel_version=UTS_RELEASE;
#else
#define
MOD_INC_USE_COUNT
#define
MOD_DEC_USE_COUNT
#endif
第二步,新建函數int
init_test(void)
將設備注冊寫在此處:
result=register_chrdev(254,”test”,&test_fops);
(2)將test.c復制到/uclinux/linux/drivers/char目錄下,并且在/uclinux/linux/drivers/char目錄下mem.c中,int
chr_dev_init(
)函數中增加如下代碼:
#ifdef
CONFIG_TESTDRIVE
init_test();
#endif
(仔散3)在/uclinux/linux/drivers/char目錄下Makefile中增加如下代碼:
ifeq($(CONFIG_TESTDRIVE),y)
L_OB+=test.o
Endif
(4)在/uclinux/linux/arch/m68knommu目錄下config.in中字符設備段里增加如下代碼:
bool
‘support
for
testdrive’
CONFIG_TESTDRIVE
y
(5)
運行make
menuconfig(在menuconfig的字符設備選項里你可以看見我們剛剛添加的’support
for
testdrive’選項,并且已經被選中念擾氏);make
dep;make
linux;make
linux.text;make
linux.data;cat
linux.text
linux.data
>
linux.bin。
(6)
在
/uclinux/romdisk/romdisk/dev/目錄下創(chuàng)建設備:
mknod
test
c
254
并且在/uclinux/appsrc/下運行make,生成新的Romdisk.s19文件。
到這里,在UCLINUX中增加設備驅動程序的工作可以說是完成了,只要將新的linux.bin與Romdisk
嵌入式linux技術
嵌入式Linux是按照嵌入式操作系統(tǒng)的要求而設計的一滾輪種小型操作系統(tǒng),它由一個Kernel(內核)及一些根據需要進行定制的系統(tǒng)模塊組成。Kernel一般只有幾百kB左右,即使加上其它必須的模塊和應用程序,所需的存儲空間也很小。它具有多任務、多進程的系統(tǒng)特征,有些還具有實時性。一個小型的嵌入式Linux系統(tǒng)只需要引導程序、Linux微內核、初始化進程3個基本元素。運行嵌入式Linux的CPU可以是x86、Alpha、Sparc、MIPS、PPC等。與這些芯片搭配的主板都很小,通常只有一張PCI卡大小,有的甚至更小。嵌入式Linux所需的存儲器不是軟磁盤、硬盤、Zip盤、CD-ROM、DVD這些眾所周知的常規(guī)存儲器,它主要使用Rom、CompactFlash、M-Systems的DiskOnChip、Sony的MemoryStick、IBM的MicroDrive等體積極小(與主板上的BIOS大小相近),且存儲容量不太大的存儲器。它的內存可以使用普通的內存,也可以使用專用的RAM。
與其它嵌入式操作系統(tǒng)相比,Linux的源代碼是開放的,不存在黑箱技術。Linux作為一種可裁剪的軟件平臺系統(tǒng),很可能發(fā)展成為未來嵌入式設備產品的絕佳資源。Linux與生俱來的優(yōu)秀網絡血統(tǒng)更為今后的發(fā)悉坦展鋪平了一條寬廣平坦的大路。因此,在保持Linux內核系統(tǒng)更小、更穩(wěn)定、更具價格競爭力等優(yōu)勢的同時,對系統(tǒng)內核進行實時性優(yōu)化,更加使之能夠適應對工業(yè)控制領域高實時性的要求。這也正是嵌入式linux操作系統(tǒng)在嵌入式工控系統(tǒng)中的發(fā)展所在。同時也使Linux成為嵌入式操作系統(tǒng)中的新貴。
標準的Linux內核通常駐留在內存中,每一個應用程序都是從磁盤運到內存上執(zhí)行。當程序結束后,它所占用的內存就被釋放,程序就被下載了。而在一個嵌入式系統(tǒng)里,可能沒有磁盤。有兩種途徑可以消除對磁盤的依賴,一是在一個簡單的系統(tǒng)里,當系統(tǒng)啟動后,內核和所有的應用程序都存在內存里。這是大多數傳統(tǒng)的嵌入式系統(tǒng)的工作模式,同樣Linux。第二種就是linux所特有的功能,因為Linux已經大陸信有能力“加載”和“卸載”程序,因此,一個嵌入式系統(tǒng)就可以利用它來節(jié)省內存。一個比較典型的系統(tǒng)有大約8MB到16MB的閃存和8MBRAM而閃存可以被用作文件系統(tǒng)。用閃存驅動程序作為從閃存到文件系統(tǒng)的界面就是一種選擇。當然,也可以用一個閃存磁盤。用閃存來擺脫系統(tǒng)對一個磁盤的需求(依賴)具有DiskOnChip技術以及CmopactFlash卡等方式。
用來連接FlashMemory和文件系統(tǒng)的程序都以文件形式存儲在Flash文件中,需要時可以裝入內存,這種動態(tài)的、根據需要加載的能力是支持其它一系列功能的重要特征。它能使初始化代碼在系統(tǒng)引導后被釋放。實際上,Linux同樣還有很多內核外運行的公用程序,這些程序通常在初始化時運行一次,以后就不再運行。而且,這些公用程序可以用它們相互共有的方式一個接一個地按順序運行。這樣,相同內存空間可以被反復使用以“召入”每一個程序,就象系統(tǒng)引導一樣。這樣可以節(jié)省內存,特別是那些配置一次以后就不再更改的網絡堆棧。如果將Linux可加載模塊的功能包括在內核里,驅動程序和應用程序就都可以被加載。由于它可以檢查硬件環(huán)境并且為硬件裝上相應的軟件,從而消除了用一個程序占用許多FlashMemory來處理多種硬件的復雜性。另外,軟件的升級更加模塊化,可以在系統(tǒng)運行時在Flash上升級應用程序和加載驅動程序,其配置信息和運行時間參數可以作為數據文件儲存在Flash中。
嵌入式工業(yè)控制網絡的實現方案
基于嵌入式linux的工控系統(tǒng)以嵌入式微處理器為核心來運行嵌入式Linux操作系統(tǒng)。應用程序可通過網絡進行更新,并可通過鍵盤進行人機對話,數據可通過LCD現場顯示,重要數據可用文件形式保存在Flash等閃存存儲器中;數據和報警信息可通過串口向上位機傳輸,也可以通過以太網向工業(yè)以太網或Inernet發(fā)布,用戶還可通過網絡實現遠程監(jiān)控和遠程維護。更為關鍵的是,可充分利用Internet上已有的軟件和協(xié)議(如:ftp,http以及ApachePHPMySQL等應用程序)迅速搭建前臺數據采集系統(tǒng),以實現測控系統(tǒng)和后臺管理系統(tǒng)的通訊。圖1所示是這種實現方案的系統(tǒng)框圖。這種方式的優(yōu)點有:
(1)不需專用的通信線路即可用現成的INTER-NET網絡將數據傳送到任何地方。
(2)不僅能夠傳遞數據信號,也可以傳遞音頻和圖像信號。
(3) 由于目前的INTERNET協(xié)議是現成和公開的,因此,利用大到幾十兆的 Microsoft IE瀏覽器,或小到只有600kB的Mosaic瀏覽器都可以對網絡數據進行讀取。
11 根文件渣含系統(tǒng)并添或梁察加自己的程序衫茄
關于linux輸入設備有多個驅動的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
成都網站營銷推廣找創(chuàng)新互聯,全國分站站群網站搭建更好做SEO營銷。
創(chuàng)新互聯(www.cdcxhl.com)四川成都IDC基礎服務商,價格厚道。提供成都服務器托管租用、綿陽服務器租用托管、重慶服務器托管租用、貴陽服務器機房服務器托管租用。
當前題目:Linux輸入設備多驅動處理 (linux輸入設備有多個驅動)
網頁路徑:http://www.fisionsoft.com.cn/article/cojoidc.html


咨詢
建站咨詢
