浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 其它綜合

CAN通信卡的Linux設(shè)備驅(qū)動程序設(shè)計實現(xiàn)

發(fā)布時間:2007/8/29 0:00:00 訪問次數(shù):506

    摘要:介紹了Linux下設(shè)備驅(qū)動程序的結(jié)構(gòu),描述了CAN通信卡設(shè)備驅(qū)動程序的軟件框架以及如何將CAN設(shè)備驅(qū)動程序加入到Linux系統(tǒng)內(nèi)核中。討論了具體實現(xiàn)中為了提高通信效率和通信能力,改進(jìn)設(shè)備驅(qū)動程序的緩沖區(qū)管理以及利用Linux的特點合理設(shè)計中斷處理程序。

    關(guān)鍵詞:Linux操作系統(tǒng) 設(shè)備驅(qū)動程序 CAN通信卡 中斷處理程序

目前,許多工業(yè)現(xiàn)場如電力系統(tǒng)、化工系統(tǒng)等大量使用控制器局部網(wǎng)(CAN-Controller Area Network)現(xiàn)場總線網(wǎng)絡(luò),CAN通信卡作為計算機的外設(shè)將計算機接入CAN網(wǎng)絡(luò)。市場上有不少CAN通信卡,但基本上都不帶Linux驅(qū)動程序,當(dāng)需要在Linux下使用CAN通信卡設(shè)備時,需自己開發(fā)Linux的驅(qū)動程序。開發(fā)Linux驅(qū)動程序不但要求程序員要非常熟悉Linux系統(tǒng),而且要熟悉Linux驅(qū)動程序開發(fā)的規(guī)范。本文將詳細(xì)介紹CAN通信卡的Linux驅(qū)動設(shè)備程序的設(shè)計和實現(xiàn)。

1 CAN通信卡的Linux設(shè)備驅(qū)動程序結(jié)構(gòu)

Linux系統(tǒng)內(nèi)核通過設(shè)備驅(qū)動程序與外圍設(shè)備進(jìn)行交互,設(shè)備驅(qū)動程序是Linux內(nèi)核的一部分,它是一組數(shù)據(jù)結(jié)構(gòu)和函數(shù),這些數(shù)據(jù)結(jié)構(gòu)和函數(shù)通過定義的接口控制一個或多個設(shè)備。對應(yīng)用程序而言,設(shè)備驅(qū)動程序隱藏了設(shè)備的具體細(xì)節(jié),對各種不同設(shè)備提供一致的接口,一般來說是把設(shè)備射為一個特殊的設(shè)備文件,用戶程序可以象對普通文件一樣對此設(shè)備文件進(jìn)行操作。

Linux將每個設(shè)備看作一個文件,即可以像對待文件那樣使用read、write等系統(tǒng)調(diào)用進(jìn)行讀寫。Linux的設(shè)備文件分為兩類:一是字符設(shè)備,只能對該類設(shè)備進(jìn)行順序讀寫,對外提供字節(jié)流方式的操作;二是塊設(shè)備,可以對該類設(shè)備進(jìn)行隨機訪問,一般是磁盤設(shè)備等大容量存儲設(shè)備。CAN通信卡設(shè)備屬于字符型設(shè)備。

對設(shè)備的訪問是由設(shè)備驅(qū)動程序提供的。Linux的設(shè)備驅(qū)動程序可以用模塊的方式加載入內(nèi)核,設(shè)備驅(qū)動程序與Linux系統(tǒng)的關(guān)系如圖1所示。

1.1 CAN通信卡設(shè)備的特點

控制器局部網(wǎng)(CAN)屬于現(xiàn)場總線的范疇,它是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò)。由于其性能優(yōu)異、價格低兼,很快被推廣到工業(yè)測控現(xiàn)場。

CAN通信卡硬件實現(xiàn)CAN定義的物理層和數(shù)據(jù)鏈路層功能,收發(fā)報文中數(shù)據(jù)長度為0~8個字節(jié),有2032個報文標(biāo)識符。工作時通過報文標(biāo)識符確定總線訪問優(yōu)先權(quán),高優(yōu)先級報文具有低延遲時間,數(shù)據(jù)傳送速率可編程(最高為1Mbps)。發(fā)送期間若丟二氧化碳仲裁或由于出錯而破壞的報文可自動重發(fā)。具有成組和廣播報文功能。

當(dāng)CAN通信卡接收到一個報文時,數(shù)據(jù)保存在CAN通信卡上的接收緩存器中,并產(chǎn)生一接收中斷。當(dāng)一個報文被成功發(fā)關(guān)垢,發(fā)送緩沖器可再次被訪問,產(chǎn)生一個發(fā)送中斷信號。CAN通信卡發(fā)送報文,將數(shù)據(jù)送入CAN通信卡上的發(fā)送緩存器中,CAN通信卡將數(shù)據(jù)串行化發(fā)到CAN總線上。

1.2 CAN通信卡設(shè)備驅(qū)動程序的任務(wù)

由于CAN一幀的數(shù)據(jù)長度最大為8個字節(jié),可以用多幀的Hilon A協(xié)議來使CAN傳輸數(shù)據(jù)任意長。CAN通信卡驅(qū)動程序主要完成按照Hilon A協(xié)議解包接收和打包發(fā)送任務(wù),并要對接收的多幀進(jìn)行管理。

CAN通信卡驅(qū)動程序應(yīng)該完成以下任務(wù):

(1)為應(yīng)用程序提供通過CAN卡發(fā)送和接收任意長度數(shù)據(jù)的能力;

(2)為應(yīng)用程序提供設(shè)備CAN卡上CAN控制器運行參數(shù)的能力;

(3)以阻塞或非阻塞方式讀寫CAN設(shè)備文件;

    摘要:介紹了Linux下設(shè)備驅(qū)動程序的結(jié)構(gòu),描述了CAN通信卡設(shè)備驅(qū)動程序的軟件框架以及如何將CAN設(shè)備驅(qū)動程序加入到Linux系統(tǒng)內(nèi)核中。討論了具體實現(xiàn)中為了提高通信效率和通信能力,改進(jìn)設(shè)備驅(qū)動程序的緩沖區(qū)管理以及利用Linux的特點合理設(shè)計中斷處理程序。

    關(guān)鍵詞:Linux操作系統(tǒng) 設(shè)備驅(qū)動程序 CAN通信卡 中斷處理程序

目前,許多工業(yè)現(xiàn)場如電力系統(tǒng)、化工系統(tǒng)等大量使用控制器局部網(wǎng)(CAN-Controller Area Network)現(xiàn)場總線網(wǎng)絡(luò),CAN通信卡作為計算機的外設(shè)將計算機接入CAN網(wǎng)絡(luò)。市場上有不少CAN通信卡,但基本上都不帶Linux驅(qū)動程序,當(dāng)需要在Linux下使用CAN通信卡設(shè)備時,需自己開發(fā)Linux的驅(qū)動程序。開發(fā)Linux驅(qū)動程序不但要求程序員要非常熟悉Linux系統(tǒng),而且要熟悉Linux驅(qū)動程序開發(fā)的規(guī)范。本文將詳細(xì)介紹CAN通信卡的Linux驅(qū)動設(shè)備程序的設(shè)計和實現(xiàn)。

1 CAN通信卡的Linux設(shè)備驅(qū)動程序結(jié)構(gòu)

Linux系統(tǒng)內(nèi)核通過設(shè)備驅(qū)動程序與外圍設(shè)備進(jìn)行交互,設(shè)備驅(qū)動程序是Linux內(nèi)核的一部分,它是一組數(shù)據(jù)結(jié)構(gòu)和函數(shù),這些數(shù)據(jù)結(jié)構(gòu)和函數(shù)通過定義的接口控制一個或多個設(shè)備。對應(yīng)用程序而言,設(shè)備驅(qū)動程序隱藏了設(shè)備的具體細(xì)節(jié),對各種不同設(shè)備提供一致的接口,一般來說是把設(shè)備射為一個特殊的設(shè)備文件,用戶程序可以象對普通文件一樣對此設(shè)備文件進(jìn)行操作。

Linux將每個設(shè)備看作一個文件,即可以像對待文件那樣使用read、write等系統(tǒng)調(diào)用進(jìn)行讀寫。Linux的設(shè)備文件分為兩類:一是字符設(shè)備,只能對該類設(shè)備進(jìn)行順序讀寫,對外提供字節(jié)流方式的操作;二是塊設(shè)備,可以對該類設(shè)備進(jìn)行隨機訪問,一般是磁盤設(shè)備等大容量存儲設(shè)備。CAN通信卡設(shè)備屬于字符型設(shè)備。

對設(shè)備的訪問是由設(shè)備驅(qū)動程序提供的。Linux的設(shè)備驅(qū)動程序可以用模塊的方式加載入內(nèi)核,設(shè)備驅(qū)動程序與Linux系統(tǒng)的關(guān)系如圖1所示。

1.1 CAN通信卡設(shè)備的特點

控制器局部網(wǎng)(CAN)屬于現(xiàn)場總線的范疇,它是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò)。由于其性能優(yōu)異、價格低兼,很快被推廣到工業(yè)測控現(xiàn)場。

CAN通信卡硬件實現(xiàn)CAN定義的物理層和數(shù)據(jù)鏈路層功能,收發(fā)報文中數(shù)據(jù)長度為0~8個字節(jié),有2032個報文標(biāo)識符。工作時通過報文標(biāo)識符確定總線訪問優(yōu)先權(quán),高優(yōu)先級報文具有低延遲時間,數(shù)據(jù)傳送速率可編程(最高為1Mbps)。發(fā)送期間若丟二氧化碳仲裁或由于出錯而破壞的報文可自動重發(fā)。具有成組和廣播報文功能。

當(dāng)CAN通信卡接收到一個報文時,數(shù)據(jù)保存在CAN通信卡上的接收緩存器中,并產(chǎn)生一接收中斷。當(dāng)一個報文被成功發(fā)關(guān)垢,發(fā)送緩沖器可再次被訪問,產(chǎn)生一個發(fā)送中斷信號。CAN通信卡發(fā)送報文,將數(shù)據(jù)送入CAN通信卡上的發(fā)送緩存器中,CAN通信卡將數(shù)據(jù)串行化發(fā)到CAN總線上。

1.2 CAN通信卡設(shè)備驅(qū)動程序的任務(wù)

由于CAN一幀的數(shù)據(jù)長度最大為8個字節(jié),可以用多幀的Hilon A協(xié)議來使CAN傳輸數(shù)據(jù)任意長。CAN通信卡驅(qū)動程序主要完成按照Hilon A協(xié)議解包接收和打包發(fā)送任務(wù),并要對接收的多幀進(jìn)行管理。

CAN通信卡驅(qū)動程序應(yīng)該完成以下任務(wù):

(1)為應(yīng)用程序提供通過CAN卡發(fā)送和接收任意長度數(shù)據(jù)的能力;

(2)為應(yīng)用程序提供設(shè)備CAN卡上CAN控制器運行參數(shù)的能力;

(3)以阻塞或非阻塞方式讀寫CAN設(shè)備文件;

-->
相關(guān)IC型號

熱門點擊

 

推薦技術(shù)資料

羅盤誤差及補償
    造成羅盤誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!