新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > LonWorks現(xiàn)場總線設(shè)備驅(qū)動設(shè)計與實現(xiàn)

LonWorks現(xiàn)場總線設(shè)備驅(qū)動設(shè)計與實現(xiàn)

作者:劉 廣 石婷婷 時間:2008-06-04 來源:中國測控網(wǎng) 收藏

  1  引言

  新設(shè)備及新的接口規(guī)范等的不斷出現(xiàn),使得操作系統(tǒng)的設(shè)備驅(qū)動部分的開發(fā)工作層出不窮。我們在基于的開發(fā)中,首先遇到了現(xiàn)場總線設(shè)備的驅(qū)動程序問題。于是我們對的驅(qū)動程序?qū)崿F(xiàn)機制進(jìn)行了深入研究,并開發(fā)了現(xiàn)場總線設(shè)備的驅(qū)動程序。

本文引用地址:http://m.butianyuan.cn/article/83666.htm

  2  關(guān)于現(xiàn)場總線

  現(xiàn)場總線是一種工業(yè)數(shù)據(jù)總線,是連接智能現(xiàn)場設(shè)備和自動化系統(tǒng)的高可靠的數(shù)字式、雙向傳輸?shù)耐ㄐ偶夹g(shù),可方便地構(gòu)成全數(shù)字化的分布式現(xiàn)場控制網(wǎng)絡(luò)。對于防護(hù)工程這種工程軸線長、監(jiān)控測點分散的系統(tǒng),特別適合采用現(xiàn)場總線技術(shù)構(gòu)成工程的分布式智能化控制系統(tǒng)。

  在各種現(xiàn)場總線中,LonWorks總線技術(shù)以其在技術(shù)先進(jìn)性、可靠性、開放性、拓?fù)浣Y(jié)構(gòu)靈活性等方面獨特的優(yōu)勢,為集散式監(jiān)控系統(tǒng)提供了很強的實現(xiàn)手段。使其特別適合于建筑的樓宇自動化系統(tǒng)。根據(jù)防護(hù)工程是一種特殊的地下建筑工程以及其布局特點,特別適合采用LonWorks現(xiàn)場總線技術(shù)實現(xiàn)其內(nèi)部設(shè)備的自動化監(jiān)控。

  網(wǎng)絡(luò)接口卡是主計算機與LonWorks網(wǎng)絡(luò)的接口,使計算機能夠完成與LonWorks節(jié)點之間的數(shù)據(jù)交換。在我們設(shè)計的中,采用專門的LonWorks現(xiàn)場總線接口卡作為CPU與Lon- Works現(xiàn)場總線網(wǎng)絡(luò)之間的接口設(shè)備。

  2.1  LonWorks現(xiàn)場總線網(wǎng)卡的原理

  了解LonWorks現(xiàn)場總線卡的工作原理,對編寫驅(qū)動程序是必要的,故我們首先給出其工作原理,并對此作一些必要的解釋。圖1是嵌入式LonWorks網(wǎng)卡的硬件電路方框圖。

       

                        圖1 ISA網(wǎng)卡的硬件電路方框圖

  過去實現(xiàn)微控制器與ISA總線的接口一般使用8155、8255,電路復(fù)雜,調(diào)試?yán)щy,在本網(wǎng)卡的設(shè)計中,使用可編程邏輯陣列(CPLD)來實現(xiàn)與ISA總線的接口邏輯,只用一個芯片就完成了所有功能,大大簡化了網(wǎng)卡的電路。

  2.2  LonWorks現(xiàn)場總線網(wǎng)卡的工作過程

  計算機與微控制器之間數(shù)據(jù)交換接口的應(yīng)用程序框圖如圖2、3所示。在程序框圖中,主要實現(xiàn)了計算機與微控制器之間讀寫數(shù)據(jù)、置標(biāo)志位和清除標(biāo)志位的功能。CPLD內(nèi)部實現(xiàn)了存儲數(shù)據(jù)和標(biāo)志位的寄存器。

       

                                     圖2  主機寫數(shù)據(jù)程序框圖

        

                                  圖3 從機接收數(shù)據(jù)程序框圖

  3  LonWorks現(xiàn)場總線網(wǎng)卡設(shè)備驅(qū)動實現(xiàn)

  我們在平臺上開發(fā)和設(shè)計了LonWorks現(xiàn)場總線網(wǎng)卡的軟件。軟件部分由應(yīng)用程序和設(shè)備驅(qū)動程序兩部分構(gòu)成,這里首先主要討論的是設(shè)備驅(qū)動程序部分。在Linux平臺上實現(xiàn)對硬件的驅(qū)動支持可以有兩種方式:一種是直接在用戶空間來實現(xiàn);另一種是使用Linux內(nèi)核中提供的機制來實現(xiàn)。考慮到用戶空間驅(qū)動程序的局限性,比如為了訪問特權(quán)指令(I/O指令)必須做一些影響系統(tǒng)安全的設(shè)置等等,我們在開發(fā)中采用了第二種方式。

  3.1  Linux的可加載模塊機制

  Linux內(nèi)核提供了兩種機制來開發(fā)設(shè)備驅(qū)動程序:一種是直接把驅(qū)動程序鏈接到內(nèi)核中:另一種則是通過稱為Linux可加載模塊的機制來開發(fā)可動態(tài)加載和卸載的驅(qū)動模塊。而第一種方式可以在后一種方式成功后,采用與內(nèi)核一起提供的配置工具和接口來完成。所以,我們只研究可加載模塊機制。

  Linux作為單核結(jié)構(gòu)其效率比較高,但是系統(tǒng)靈活性不足,為了平衡這兩者的關(guān)系,它提供了可動態(tài)加載機制。利用這種機制我們可以開發(fā)Linux內(nèi)核模塊,并且可以動態(tài)的對它加載和卸載。Linux下的設(shè)備驅(qū)動程序一般都支持這種方式,且模塊被加載到內(nèi)核后,它就可以任意的利用核心提供的各種資源和服務(wù)了。為了讓模塊利用核心提供的資源,Linux內(nèi)核維護(hù)了一張所有內(nèi)核資源的符號表(在接下來的部分我們稱它為內(nèi)核資源符號表),用于在模塊載入時解決對相應(yīng)資源的引用問題。并且,Linux允許模塊的堆棧操作,由此一個模塊可以使用其他模塊所提供的資源。也就是說:一個模塊對另一個模塊的資源的使用與其對內(nèi)核資源的使用非常相似,不同的只是這些服務(wù)的資源從屬于另一個模塊而已。每當(dāng)一個模塊被加載Linux就會有一個修改內(nèi)核資源符號表的過程,將該模塊所提供的服務(wù)和資源加入進(jìn)去,這樣另一個模塊載入時,如果需要就可以引用這個模塊的資源了。而卸載一個模塊時,就要知道當(dāng)前模塊是否正在被使用。如果沒有被使用,在卸載時要能夠通知該模塊它將被卸載,以便由它自己釋放已被它占用的系統(tǒng)資源。然后,Linux還要從內(nèi)核資源符號表中刪除所有該模塊提供的資源和服務(wù)。

  從上面的原理分析可知,內(nèi)核模塊編寫時應(yīng)該具有兩個主要的接口函數(shù):init_module()用于在模塊加載時由加載模塊的工具調(diào)用,以便于注冊一些必要的服務(wù)和申請一些資源。cleanup_module()用于在模塊卸載時由刪除模塊的工具來調(diào)用,清除掉由init_module()所做的工作,從而使內(nèi)核模塊可以安全的卸載。其中對init_module()調(diào)用的一種工具是在根用戶執(zhí)行insmod命令來加載模塊時執(zhí)行。而對于cleanup_module()的調(diào)用是在根用戶使用rmmod命令來卸載模塊時執(zhí)行。

  3.2  Linux下設(shè)備驅(qū)動程序

  系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核和應(yīng)用程序之間的接口,設(shè)備驅(qū)動程序是操作系統(tǒng)內(nèi)核和機器硬件之間的接口。設(shè)備驅(qū)動程序為應(yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是一個設(shè)備文件,可以通過相應(yīng)的系統(tǒng)調(diào)用象操作普通文件一樣對硬件設(shè)備進(jìn)行操作。

  (1) Linux設(shè)備分類

  Linux系統(tǒng)的設(shè)備分為字符設(shè)備(char device),塊設(shè)備(block device)和網(wǎng)絡(luò)設(shè)備(network device)三種。字符設(shè)備是指存取時沒有緩存的設(shè)備,如系統(tǒng)的串口設(shè)備/dev/cua0, /dev/cual。塊設(shè)備的讀寫則都有緩存來支持,只能以塊為單位進(jìn)行讀寫,并且塊設(shè)備必須能夠隨機存取(random access),即不管塊處于設(shè)備的什么地方都可以對它進(jìn)行讀寫,字符設(shè)備則沒有這個要求。塊設(shè)備主要包括硬盤軟盤設(shè)備,CD-ROM等。網(wǎng)絡(luò)設(shè)備在Linux里做專門的處理。Linux的網(wǎng)絡(luò)系統(tǒng)主要是基于BSD unix的socket機制。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉