日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Linux輸入設(shè)備多驅(qū)動(dòng)處理 (linux輸入設(shè)備有多個(gè)驅(qū)動(dòng))

一、簡(jiǎn)介

隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,人們?cè)谑褂糜?jì)算機(jī)處理各種任務(wù)時(shí)需要不斷地與計(jì)算機(jī)進(jìn)行交互。輸入設(shè)備作為與計(jì)算機(jī)交互的重要方式之一,在計(jì)算機(jī)系統(tǒng)中擔(dān)任著重要的角色。Linux作為一款自由、開放源碼的操作系統(tǒng),存在著許多不同的輸入設(shè)備驅(qū)動(dòng)程序,針對(duì)輸入設(shè)備的多樣性,Linux輸入設(shè)備的多驅(qū)動(dòng)處理是非常重要的。

二、基礎(chǔ)知識(shí)

輸入設(shè)備是指人們通過(guò)鍵盤、鼠標(biāo)、觸摸屏等設(shè)備向計(jì)算機(jī)發(fā)送信息和指令的設(shè)備。輸入設(shè)備的使用需要有對(duì)應(yīng)的驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)設(shè)備與計(jì)算機(jī)的交互。Linux輸入設(shè)備驅(qū)動(dòng)可以簡(jiǎn)單分為兩種類型:字符設(shè)備驅(qū)動(dòng)和輸入設(shè)備驅(qū)動(dòng)。

字符設(shè)備驅(qū)動(dòng)是一種讀寫數(shù)據(jù)的設(shè)備驅(qū)動(dòng),字符設(shè)備驅(qū)動(dòng)會(huì)將輸入設(shè)備上的按鍵值轉(zhuǎn)換為簡(jiǎn)單的文本型字符,并通過(guò)與驅(qū)動(dòng)程序通訊的接口將該字符傳遞給用戶空間。

輸入設(shè)備驅(qū)動(dòng)則是一種特殊的字符設(shè)備驅(qū)動(dòng),專門用于與輸入設(shè)備進(jìn)行交互。輸入設(shè)備驅(qū)動(dòng)將輸入設(shè)備的數(shù)據(jù)轉(zhuǎn)換為具有特定格式的內(nèi)核事件,并通過(guò)內(nèi)核事件接口傳遞給用戶空間。

輸入設(shè)備驅(qū)動(dòng)包含了下面的概念:

– 輸入設(shè)備的描述:輸入設(shè)備驅(qū)動(dòng)程序需要對(duì)輸入設(shè)備進(jìn)行描述,包括設(shè)備名稱、設(shè)備類型和設(shè)備的詳細(xì)信息。

– 輸入設(shè)備主動(dòng)事件:輸入事件是輸入設(shè)備傳送給系統(tǒng)的事件。

– 中斷處理:當(dāng)輸入設(shè)備生成事件時(shí),在系統(tǒng)中斷,中斷處理程序?qū)⑹录妮斎朐O(shè)備中讀出。

– 內(nèi)核事件接口:內(nèi)核事件接口用于將事件傳遞給用戶空間。

– 用戶態(tài)事件處理:用戶態(tài)應(yīng)用程序通過(guò)讀取內(nèi)核事件接口獲得內(nèi)核事件,并執(zhí)行需要的操作。

三、多驅(qū)動(dòng)處理

在現(xiàn)代的Linux系統(tǒng)中,存在著越來(lái)越多不同類型的輸入設(shè)備,例如鼠標(biāo)、鍵盤、觸摸屏等。因此,對(duì)于各種輸入設(shè)備的多驅(qū)動(dòng)處理顯得尤為重要。

多驅(qū)動(dòng)處理的實(shí)現(xiàn)需要做到以下點(diǎn):

– 驅(qū)動(dòng)程序的自動(dòng)加載:對(duì)于不同的輸入設(shè)備,我們需要不同的驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)對(duì)它們的交互。因此,在使用輸入設(shè)備時(shí),需要自動(dòng)加載相應(yīng)的驅(qū)動(dòng)程序。

– 輸入設(shè)備的統(tǒng)一管理:輸入設(shè)備可以有多種不同的驅(qū)動(dòng)程序,它們可以同時(shí)對(duì)同一設(shè)備進(jìn)行操作。因此,需要對(duì)輸入設(shè)備進(jìn)行統(tǒng)一管理,使其能夠正確地與多個(gè)驅(qū)動(dòng)程序進(jìn)行交互。

– 驅(qū)動(dòng)程序的共享:多個(gè)應(yīng)用程序可能需要同時(shí)使用同一個(gè)輸入設(shè)備的多個(gè)不同事件,因此,需要實(shí)現(xiàn)驅(qū)動(dòng)程序之間的信息共享。

Linux內(nèi)核提供了一種多驅(qū)動(dòng)處理機(jī)制來(lái)實(shí)現(xiàn)對(duì)輸入設(shè)備的統(tǒng)一管理和驅(qū)動(dòng)程序的共享。這種機(jī)制基于輸入設(shè)備的總線,每個(gè)輸入設(shè)備都會(huì)被掛在相應(yīng)的總線上。

對(duì)于輸入設(shè)備的自動(dòng)加載,Linux內(nèi)核提供了一個(gè)稱為”驅(qū)動(dòng)模塊自動(dòng)加載”(Automatic Module Loading)的機(jī)制。當(dāng)檢測(cè)到新設(shè)備時(shí),內(nèi)核會(huì)自動(dòng)檢查它所連接的總線和設(shè)備類型,并自動(dòng)加載相應(yīng)的設(shè)備驅(qū)動(dòng)。

對(duì)于輸入設(shè)備的統(tǒng)一管理和驅(qū)動(dòng)程序的共享,Linux內(nèi)核提供了一種事件接口來(lái)實(shí)現(xiàn)。用戶空間應(yīng)用程序使用事件接口讀取輸入設(shè)備產(chǎn)生的事件,不同的輸入設(shè)備驅(qū)動(dòng)程序通過(guò)事件接口注冊(cè)回調(diào)函數(shù),實(shí)現(xiàn)不同事件的處理。

四、

在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,輸入設(shè)備作為一種重要的交互方式,在系統(tǒng)設(shè)計(jì)中占據(jù)著很重要的地位。Linux系統(tǒng)作為一款成熟的操作系統(tǒng),對(duì)于不同類型的輸入設(shè)備提供了多種驅(qū)動(dòng)程序。對(duì)于多種不同類型的驅(qū)動(dòng)程序,Linux內(nèi)核提供了一種多驅(qū)動(dòng)處理機(jī)制來(lái)實(shí)現(xiàn)對(duì)輸入設(shè)備的統(tǒng)一管理和驅(qū)動(dòng)程序的共享。這種機(jī)制的實(shí)現(xiàn),使得使用輸入設(shè)備的操作更加方便和高效。

相關(guān)問(wèn)題拓展閱讀:

  • 如何在嵌入式LINUX中增加自己的設(shè)備驅(qū)動(dòng)程序

如何在嵌入式LINUX中增加自己的設(shè)備驅(qū)動(dòng)程序

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

Linux驅(qū)動(dòng)程序的使用可以按照兩種方式編譯,一種是靜態(tài)編譯進(jìn)內(nèi)核,另李指一種是編譯成模塊以供動(dòng)態(tài)加載。由于uClinux不支持模塊動(dòng)態(tài)加載,而且嵌入式LINUX不能夠象桌面LINUX那樣靈活的使用inod/rmmod加載卸載設(shè)備驅(qū)動(dòng)程序,因而這里只介紹將設(shè)備驅(qū)動(dòng)程序靜態(tài)編譯進(jìn)uClinux內(nèi)核的方法。

下面以UCLINUX為例,介紹在一個(gè)以模塊方式出現(xiàn)的驅(qū)動(dòng)程序test.c基礎(chǔ)之上,將其編譯進(jìn)內(nèi)核的一系列步驟:

(1)

改動(dòng)test.c源帶代碼

之一步,將原來(lái)的:

#include

#include

char

kernel_version=UTS_RELEASE;

改動(dòng)為:

#ifdef

MODULE

#include

#include

char

kernel_version=UTS_RELEASE;

#else

#define

MOD_INC_USE_COUNT

#define

MOD_DEC_USE_COUNT

#endif

第二步,新建函數(shù)int

init_test(void)

將設(shè)備注冊(cè)寫在此處:

result=register_chrdev(254,”test”,&test_fops);

(2)將test.c復(fù)制到/uclinux/linux/drivers/char目錄下,并且在/uclinux/linux/drivers/char目錄下mem.c中,int

chr_dev_init(

)函數(shù)中增加如下代碼:

#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中字符設(shè)備段里增加如下代碼:

bool

‘support

for

testdrive’

CONFIG_TESTDRIVE

y

(5)

運(yùn)行make

menuconfig(在menuconfig的字符設(shè)備選項(xiàng)里你可以看見我們剛剛添加的’support

for

testdrive’選項(xiàng),并且已經(jīng)被選中念擾氏);make

dep;make

linux;make

linux.text;make

linux.data;cat

linux.text

linux.data

>

linux.bin。

(6)

/uclinux/romdisk/romdisk/dev/目錄下創(chuàng)建設(shè)備:

mknod

test

c

254

并且在/uclinux/appsrc/下運(yùn)行make,生成新的Romdisk.s19文件。

到這里,在UCLINUX中增加設(shè)備驅(qū)動(dòng)程序的工作可以說(shuō)是完成了,只要將新的linux.bin與Romdisk

嵌入式linux技術(shù)

嵌入式Linux是按照嵌入式操作系統(tǒng)的要求而設(shè)計(jì)的一滾輪種小型操作系統(tǒng),它由一個(gè)Kernel(內(nèi)核)及一些根據(jù)需要進(jìn)行定制的系統(tǒng)模塊組成。Kernel一般只有幾百kB左右,即使加上其它必須的模塊和應(yīng)用程序,所需的存儲(chǔ)空間也很小。它具有多任務(wù)、多進(jìn)程的系統(tǒng)特征,有些還具有實(shí)時(shí)性。一個(gè)小型的嵌入式Linux系統(tǒng)只需要引導(dǎo)程序、Linux微內(nèi)核、初始化進(jìn)程3個(gè)基本元素。運(yùn)行嵌入式Linux的CPU可以是x86、Alpha、Sparc、MIPS、PPC等。與這些芯片搭配的主板都很小,通常只有一張PCI卡大小,有的甚至更小。嵌入式Linux所需的存儲(chǔ)器不是軟磁盤、硬盤、Zip盤、CD-ROM、DVD這些眾所周知的常規(guī)存儲(chǔ)器,它主要使用Rom、CompactFlash、M-Systems的DiskOnChip、Sony的MemoryStick、IBM的MicroDrive等體積極小(與主板上的BIOS大小相近),且存儲(chǔ)容量不太大的存儲(chǔ)器。它的內(nèi)存可以使用普通的內(nèi)存,也可以使用專用的RAM。

與其它嵌入式操作系統(tǒng)相比,Linux的源代碼是開放的,不存在黑箱技術(shù)。Linux作為一種可裁剪的軟件平臺(tái)系統(tǒng),很可能發(fā)展成為未來(lái)嵌入式設(shè)備產(chǎn)品的絕佳資源。Linux與生俱來(lái)的優(yōu)秀網(wǎng)絡(luò)血統(tǒng)更為今后的發(fā)悉坦展鋪平了一條寬廣平坦的大路。因此,在保持Linux內(nèi)核系統(tǒng)更小、更穩(wěn)定、更具價(jià)格競(jìng)爭(zhēng)力等優(yōu)勢(shì)的同時(shí),對(duì)系統(tǒng)內(nèi)核進(jìn)行實(shí)時(shí)性優(yōu)化,更加使之能夠適應(yīng)對(duì)工業(yè)控制領(lǐng)域高實(shí)時(shí)性的要求。這也正是嵌入式linux操作系統(tǒng)在嵌入式工控系統(tǒng)中的發(fā)展所在。同時(shí)也使Linux成為嵌入式操作系統(tǒng)中的新貴。

標(biāo)準(zhǔn)的Linux內(nèi)核通常駐留在內(nèi)存中,每一個(gè)應(yīng)用程序都是從磁盤運(yùn)到內(nèi)存上執(zhí)行。當(dāng)程序結(jié)束后,它所占用的內(nèi)存就被釋放,程序就被下載了。而在一個(gè)嵌入式系統(tǒng)里,可能沒(méi)有磁盤。有兩種途徑可以消除對(duì)磁盤的依賴,一是在一個(gè)簡(jiǎn)單的系統(tǒng)里,當(dāng)系統(tǒng)啟動(dòng)后,內(nèi)核和所有的應(yīng)用程序都存在內(nèi)存里。這是大多數(shù)傳統(tǒng)的嵌入式系統(tǒng)的工作模式,同樣Linux。第二種就是linux所特有的功能,因?yàn)長(zhǎng)inux已經(jīng)大陸信有能力“加載”和“卸載”程序,因此,一個(gè)嵌入式系統(tǒng)就可以利用它來(lái)節(jié)省內(nèi)存。一個(gè)比較典型的系統(tǒng)有大約8MB到16MB的閃存和8MBRAM而閃存可以被用作文件系統(tǒng)。用閃存驅(qū)動(dòng)程序作為從閃存到文件系統(tǒng)的界面就是一種選擇。當(dāng)然,也可以用一個(gè)閃存磁盤。用閃存來(lái)擺脫系統(tǒng)對(duì)一個(gè)磁盤的需求(依賴)具有DiskOnChip技術(shù)以及CmopactFlash卡等方式。

用來(lái)連接FlashMemory和文件系統(tǒng)的程序都以文件形式存儲(chǔ)在Flash文件中,需要時(shí)可以裝入內(nèi)存,這種動(dòng)態(tài)的、根據(jù)需要加載的能力是支持其它一系列功能的重要特征。它能使初始化代碼在系統(tǒng)引導(dǎo)后被釋放。實(shí)際上,Linux同樣還有很多內(nèi)核外運(yùn)行的公用程序,這些程序通常在初始化時(shí)運(yùn)行一次,以后就不再運(yùn)行。而且,這些公用程序可以用它們相互共有的方式一個(gè)接一個(gè)地按順序運(yùn)行。這樣,相同內(nèi)存空間可以被反復(fù)使用以“召入”每一個(gè)程序,就象系統(tǒng)引導(dǎo)一樣。這樣可以節(jié)省內(nèi)存,特別是那些配置一次以后就不再更改的網(wǎng)絡(luò)堆棧。如果將Linux可加載模塊的功能包括在內(nèi)核里,驅(qū)動(dòng)程序和應(yīng)用程序就都可以被加載。由于它可以檢查硬件環(huán)境并且為硬件裝上相應(yīng)的軟件,從而消除了用一個(gè)程序占用許多FlashMemory來(lái)處理多種硬件的復(fù)雜性。另外,軟件的升級(jí)更加模塊化,可以在系統(tǒng)運(yùn)行時(shí)在Flash上升級(jí)應(yīng)用程序和加載驅(qū)動(dòng)程序,其配置信息和運(yùn)行時(shí)間參數(shù)可以作為數(shù)據(jù)文件儲(chǔ)存在Flash中。

嵌入式工業(yè)控制網(wǎng)絡(luò)的實(shí)現(xiàn)方案

基于嵌入式linux的工控系統(tǒng)以嵌入式微處理器為核心來(lái)運(yùn)行嵌入式Linux操作系統(tǒng)。應(yīng)用程序可通過(guò)網(wǎng)絡(luò)進(jìn)行更新,并可通過(guò)鍵盤進(jìn)行人機(jī)對(duì)話,數(shù)據(jù)可通過(guò)LCD現(xiàn)場(chǎng)顯示,重要數(shù)據(jù)可用文件形式保存在Flash等閃存存儲(chǔ)器中;數(shù)據(jù)和報(bào)警信息可通過(guò)串口向上位機(jī)傳輸,也可以通過(guò)以太網(wǎng)向工業(yè)以太網(wǎng)或Inernet發(fā)布,用戶還可通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和遠(yuǎn)程維護(hù)。更為關(guān)鍵的是,可充分利用Internet上已有的軟件和協(xié)議(如:ftp,http以及ApachePHPMySQL等應(yīng)用程序)迅速搭建前臺(tái)數(shù)據(jù)采集系統(tǒng),以實(shí)現(xiàn)測(cè)控系統(tǒng)和后臺(tái)管理系統(tǒng)的通訊。圖1所示是這種實(shí)現(xiàn)方案的系統(tǒng)框圖。這種方式的優(yōu)點(diǎn)有:

(1)不需專用的通信線路即可用現(xiàn)成的INTER-NET網(wǎng)絡(luò)將數(shù)據(jù)傳送到任何地方。

(2)不僅能夠傳遞數(shù)據(jù)信號(hào),也可以傳遞音頻和圖像信號(hào)。

(3) 由于目前的INTERNET協(xié)議是現(xiàn)成和公開的,因此,利用大到幾十兆的 Microsoft IE瀏覽器,或小到只有600kB的Mosaic瀏覽器都可以對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行讀取。

11 根文件渣含系統(tǒng)并添或梁察加自己的程序衫茄

關(guān)于linux輸入設(shè)備有多個(gè)驅(qū)動(dòng)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都網(wǎng)站營(yíng)銷推廣找創(chuàng)新互聯(lián),全國(guó)分站站群網(wǎng)站搭建更好做SEO營(yíng)銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價(jià)格厚道。提供成都服務(wù)器托管租用、綿陽(yáng)服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽(yáng)服務(wù)器機(jī)房服務(wù)器托管租用。


網(wǎng)頁(yè)名稱:Linux輸入設(shè)備多驅(qū)動(dòng)處理 (linux輸入設(shè)備有多個(gè)驅(qū)動(dòng))
文章路徑:http://www.dlmjj.cn/article/cojoidc.html