<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于uclinux 的CAN總線(xiàn)嵌入式驅動(dòng)編程

基于uclinux 的CAN總線(xiàn)嵌入式驅動(dòng)編程

作者: 時(shí)間:2013-04-06 來(lái)源:網(wǎng)絡(luò ) 收藏

  1 引言

  早期應用于八位單片機軟件設計的嵌入式系統主要為前后臺系統(或超循環(huán)系統),程序大約在幾千行以?xún)?,由兩部分組成,即其應用程序是一個(gè)無(wú)限的循環(huán),循環(huán)中調用函數完成相應的操作,屬于后臺行為;其中斷服務(wù)程序處理異步事件,屬于前臺行為.隨著(zhù)嵌入式系統功能越來(lái)越龐雜,如友好的人機界面、網(wǎng)絡(luò )化、遠程監控等.各種任務(wù)的優(yōu)先級不同,傳統的設計方法無(wú)法完成,程序長(cháng)達數萬(wàn)行,程序員必須同繁瑣的底層硬件打交道,這樣效率低下.現代電子技術(shù)的發(fā)展為嵌入式微處理器提供了更多的外設,通用的如串口、并口、以太網(wǎng)口、現場(chǎng)總線(xiàn)、USB口等.基于免費自由軟件Linux發(fā)展而來(lái)的嵌入式系統,是一種免費的嵌入式操作系統.系統具有內核小、效率高、源碼開(kāi)放、性能穩定、大量的開(kāi)發(fā)工具、良好的開(kāi)發(fā)環(huán)境等特點(diǎn),并且各種應用程序豐富,是進(jìn)行嵌入式系統開(kāi)發(fā)的最優(yōu)秀工具之一.

  2 操作系統簡(jiǎn)介

  uclinux 系統主要由用戶(hù)進(jìn)程、系統調用接口、uclinux 內核、硬件控制器等四部分組成.用戶(hù)進(jìn)程是用戶(hù)根據自己的設計和功能要求開(kāi)發(fā)的應用程序,通過(guò)調用系統的功能函數來(lái)實(shí)現系統功能;系統調用接口通過(guò)系統調用實(shí)現用戶(hù)與系統內核的接口,這些調用和服務(wù)也可以看成是系統內核的一部分;uclinux 內核是操作系統的靈魂,它抽象了許多硬件細節,將所有的硬件抽象成統一的虛擬接口,使程序可以以一種統一的方式進(jìn)行數據處理,它主要包括基于優(yōu)先級的進(jìn)程調度、內存管理、文件系統、網(wǎng)絡(luò )接口、進(jìn)程間通訊等五部分;硬件控制器則包含了系統需要的所有可能的物理設備.以上四個(gè)部分之間的每個(gè)子系統都只能跟鄰近的系統進(jìn)行通信。

  uclinux 的設備管理系統是嵌入式操作系統的重要組成部分,它可以分為:下層、與設備相關(guān)的,即所謂的設備驅動(dòng)程序,直接與相應的設備打交道,并向上提供一組訪(fǎng)問(wèn)接口;以及上層、與設備無(wú)關(guān),根據輸入輸出請求,通過(guò)特定設備驅動(dòng)提供的接口,與設備進(jìn)行通信.如通用的串口、網(wǎng)卡等驅動(dòng)程序在uclinux 中都可以找到.

  3 uclinux驅動(dòng)編程原理

  uclinux嵌入式系統不能象Linux一樣動(dòng)態(tài)加載驅動(dòng)程序模塊,而只能同內核一起編譯,與應用程序、其他驅動(dòng)程序一起固化到可擦寫(xiě)的Flash上,驅動(dòng)程序長(cháng)駐內存,是靜態(tài)驅動(dòng)程序.uclinux系統根據設備性質(zhì)的不同,將設備分為四種類(lèi)型:字符設備(char)、塊設備(block)、網(wǎng)絡(luò )接口( net )和其他設備驅動(dòng)程序模塊.在下載的uclinux源代碼包中,可以在uclinux/linux/drivers目錄下面看到通用設備如char,block, net, cdrom, scsi, sound等.系統對于每個(gè)設備都對應一個(gè)主設備號和一個(gè)次設備號,不同的設備可以對應相同的主設備號,應用程序訪(fǎng)問(wèn)設備通過(guò)不同的次設備號來(lái)識別和區別設備.在Linux系統/dev目錄下通過(guò)輸入ls -l命令可以查到系統已注冊的設備,因此編寫(xiě)新的驅動(dòng)程序時(shí)必須向系統注冊
該設備.在uclinux系統中,通過(guò)register_chrdev函數實(shí)現注冊.

  uclinux系統將所有硬件抽象成虛擬的文件系統,所有的字符設備、塊設備都支持文件操作接口,因此可以對這種虛擬的設備文件系統進(jìn)行文件操作.通常對設備文件進(jìn)行的操作有open、read、write、release等,即打開(kāi)、讀、寫(xiě)、釋放文件.每一個(gè)設備驅動(dòng)程序實(shí)質(zhì)上是用來(lái)完成特定任務(wù)的一組函數集. 驅動(dòng)程序擁有一個(gè)稱(chēng)為fileoperation 的數據結構,其中包含指向驅動(dòng)程序內部大多數函數的指針.引導系統時(shí),內核調用每一個(gè)驅動(dòng)程序的初始化函數,將驅動(dòng)程序的主設備號以及程序內部的函數地址結構的指針傳輸給內核.這樣,內核就能通過(guò)設備驅動(dòng)程序的主設備號索引訪(fǎng)問(wèn)驅動(dòng)程序內部的子程序,完成打開(kāi)、讀、寫(xiě)等操作.程序員經(jīng)常面臨的一項工作就是為系統的新設備編寫(xiě)驅動(dòng)程序.

  在現代控制系統中,為了便于數據通訊,在底層常采用現場(chǎng)總線(xiàn),目前廣泛應用于過(guò)程工業(yè)、機械工業(yè)、紡織機械、農用機械、機器人、數控機床、醫療器械及傳感器等領(lǐng)域,下面介紹應用于嵌入式系統的驅動(dòng)編程.

  4 CAN 總線(xiàn)的性能特點(diǎn)

  CAN(Controller Area Network)即控制器局域網(wǎng)絡(luò ).CAN 總線(xiàn)目前已形成國際標準 version2.0.該技術(shù)規范包括A 和B 兩部分.2.0A 給出了CAN 報文標準格式,而2.0B 給了出廠(chǎng)標準和擴展兩種格式.CAN 總線(xiàn)是應用最廣泛的現場(chǎng)總線(xiàn)之一,CAN為多主方式工作,網(wǎng)絡(luò )上任一節點(diǎn)均可在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò )上其他節點(diǎn)發(fā)送信息,而不分主從,通信方式靈活,且無(wú)需站地址等節點(diǎn)信息;CAN 網(wǎng)絡(luò )上的節點(diǎn)信息分成不同的優(yōu)先級,可滿(mǎn)足不同的實(shí)時(shí)要求;CAN 采用非破壞性總線(xiàn)仲裁技術(shù),當多個(gè)節點(diǎn)同時(shí)向總線(xiàn)發(fā)送信息時(shí),優(yōu)先級較低的節點(diǎn)會(huì )主動(dòng)地退出發(fā)送,而最高優(yōu)先級的節點(diǎn)可不受影響地繼續傳輸數據;CAN 只需通過(guò)報文濾波即可實(shí)現點(diǎn)對點(diǎn)、一點(diǎn)對多點(diǎn)及全局廣播等幾種方式傳送接收數據,無(wú)需專(zhuān)門(mén)的“調度”,CAN 的直接通信距離最遠可達10km(速率5kbps 以下);通信速率最高可達1Mbps(此時(shí)通信距離最長(cháng)為40m).CAN 上的節點(diǎn)數主要取決于總線(xiàn)驅動(dòng)電路,目前可達110個(gè);采用短幀結構,傳輸時(shí)間短,受干擾概率低,具有極好的檢錯效果;CAN 的通信介質(zhì)可為雙絞線(xiàn)、同軸電纜或光纖等.CAN 總線(xiàn)的數據通信具有突出的可靠性、實(shí)時(shí)性和靈活性.


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>