




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 基于uclinux的CAN總線嵌入式驅(qū)動編程介紹了uclinux操作系統(tǒng)的內(nèi)核結(jié)構(gòu)以及設(shè)備驅(qū)動編程的基本原理,并對CAN總線的嵌入式系統(tǒng)進行了硬件設(shè)計及軟件驅(qū)動編程,提出CAN總線技術(shù)應(yīng)用于嵌入式系統(tǒng)的一種方案。1引言早期應(yīng)用于八位單片機軟件設(shè)計的嵌入式系統(tǒng)主要為前后臺系統(tǒng)(或超循環(huán)系統(tǒng)),程序大約在幾千行以內(nèi),由兩部分組成,即其應(yīng)用程序是一個無限的循環(huán),循環(huán)中調(diào)用函數(shù)完成相應(yīng)的操作,屬于后臺行為;其中斷服務(wù)程序處理異步事件,屬于前臺行為.隨著嵌入式系統(tǒng)功介紹了uclinux 操作系統(tǒng)的內(nèi)核結(jié)構(gòu)以及設(shè)備驅(qū)動編程的基本原理,并對CAN總線的嵌入式系
2、統(tǒng)進行了硬件設(shè)計及軟件驅(qū)動編程,提出CAN 總線技術(shù)應(yīng)用于嵌入式系統(tǒng)的一種方案。1 引言 早期應(yīng)用于八位單片機軟件設(shè)計的嵌入式系統(tǒng)主要為前后臺系統(tǒng)(或超循環(huán)系統(tǒng)),程序大約在幾千行以內(nèi),由兩部分組成,即其應(yīng)用程序是一個無限的循環(huán),循環(huán)中調(diào)用函數(shù)完成相應(yīng)的操作,屬于后臺行為;其中斷服務(wù)程序處理異步事件,屬于前臺行為.隨著嵌入式系統(tǒng)功能越來越龐雜,如友好的人機界面、網(wǎng)絡(luò)化、遠程監(jiān)控等.各種任務(wù)的優(yōu)先級不同,傳統(tǒng)的設(shè)計方法無法完成,程序長達數(shù)萬行,程序員必須同繁瑣的底層硬件打交道,這樣效率低下.現(xiàn)代電子技術(shù)的發(fā)展為嵌入式微處理器提供了更多的外設(shè),通用的如串口、并口、
3、以太網(wǎng)口、現(xiàn)場總線、USB口等.基于免費自由軟件Linux發(fā)展而來的嵌入式系統(tǒng)uclinux,是一種免費的嵌入式操作系統(tǒng).uclinux系統(tǒng)具有內(nèi)核小、效率高、源碼開放、性能穩(wěn)定、大量的開發(fā)工具、良好的開發(fā)環(huán)境等特點,并且各種應(yīng)用程序豐富,是進行嵌入式系統(tǒng)開發(fā)的最優(yōu)秀工具之一. 2 uclinux操作系統(tǒng)簡介 uclinux 系統(tǒng)主要由用戶進程、系統(tǒng)調(diào)用接口、uclinux 內(nèi)核、硬件控制器等四部分組成.用戶進程是用戶根據(jù)自己的設(shè)計和功能要求開發(fā)的應(yīng)用程序,通過調(diào)用系統(tǒng)的功能函
4、數(shù)來實現(xiàn)系統(tǒng)功能;系統(tǒng)調(diào)用接口通過系統(tǒng)調(diào)用實現(xiàn)用戶與系統(tǒng)內(nèi)核的接口,這些調(diào)用和服務(wù)也可以看成是系統(tǒng)內(nèi)核的一部分;uclinux 內(nèi)核是操作系統(tǒng)的靈魂,它抽象了許多硬件細節(jié),將所有的硬件抽象成統(tǒng)一的虛擬接口,使程序可以以一種統(tǒng)一的方式進行數(shù)據(jù)處理,它主要包括基于優(yōu)先級的進程調(diào)度、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)接口、進程間通訊等五部分;硬件控制器則包含了系統(tǒng)需要的所有可能的物理設(shè)備.以上四個部分之間的每個子系統(tǒng)都只能跟鄰近的系統(tǒng)進行通信。 uclinux 的設(shè)備管理系統(tǒng)是嵌入式操作系統(tǒng)的重要組成部分,它可以分為:下層、與設(shè)備相關(guān)的,即所謂的設(shè)備驅(qū)動程序,直接與相應(yīng)的設(shè)備
5、打交道,并向上提供一組訪問接口;以及上層、與設(shè)備無關(guān),根據(jù)輸入輸出請求,通過特定設(shè)備驅(qū)動提供的接口,與設(shè)備進行通信.如通用的串口、網(wǎng)卡等驅(qū)動程序在uclinux 中都可以找到. 3 uclinux驅(qū)動編 程原理 uclinux嵌入式系統(tǒng)不能象Linux一樣動態(tài)加載驅(qū)動程序模塊,而只能同內(nèi)核一起編譯,與應(yīng)用程序、其他驅(qū)動程序一起固化到可擦寫的Flash上,驅(qū)動程序長駐內(nèi)存,是靜態(tài)驅(qū)動程序.uclinux系統(tǒng)根據(jù)設(shè)備性質(zhì)的不同,將設(shè)備分為四種類型:字符設(shè)備(char)、塊設(shè)備(block)、網(wǎng)
6、絡(luò)接口( net )和其他設(shè)備驅(qū)動程序模塊.在下載的uclinux源代碼包中,可以在uclinux/linux/drivers目錄下面看到通用設(shè)備如char,block, net, cdrom, scsi, sound等.系統(tǒng)對于每個設(shè)備都對應(yīng)一個主設(shè)備號和一個次設(shè)備號,不同的設(shè)備可以對應(yīng)相同的主設(shè)備號,應(yīng)用程序訪問設(shè)備通過不同的次設(shè)備號來識別和區(qū)別設(shè)備.在Linux系統(tǒng)/dev目錄下通過輸入ls -l命令可以查到系統(tǒng)已注冊的設(shè)備,因此編寫新的驅(qū)動程序時必須向系統(tǒng)注冊該設(shè)備.在uclinux系統(tǒng)中,通過register_chrdev函數(shù)實現(xiàn)注冊. uclinu
7、x系統(tǒng)將所有硬件抽象成虛擬的文件系統(tǒng),所有的字符設(shè)備、塊設(shè)備都支持文件操作接口,因此可以對這種虛擬的設(shè)備文件系統(tǒng)進行文件操作.通常對設(shè)備文件進行的操作有open、read、write、release等,即打開、讀、寫、釋放文件.每一個設(shè)備驅(qū)動程序?qū)嵸|(zhì)上是用來完成特定任務(wù)的一組函數(shù)集. 驅(qū)動程序擁有一個稱為fileoperation 的數(shù)據(jù)結(jié)構(gòu),其中包含指向驅(qū)動程序內(nèi)部大多數(shù)函數(shù)的指針.引導(dǎo)系統(tǒng)時,內(nèi)核調(diào)用每一個驅(qū)動程序的初始化函數(shù),將驅(qū)動程序的主設(shè)備號以及程序內(nèi)部的函數(shù)地址結(jié)構(gòu)的指針傳輸給內(nèi)核.這樣,內(nèi)核就能通過設(shè)備驅(qū)動程序的主設(shè)備號索引訪問驅(qū)動程序內(nèi)部的子程序,完成打開、讀、寫等操作.程序員
8、經(jīng)常面臨的一項工作就是為系統(tǒng)的新設(shè)備編寫驅(qū)動程序. 在現(xiàn)代控制系統(tǒng)中,為了便于數(shù)據(jù)通訊,在底層常采用現(xiàn)場總線,目前CAN總線廣泛應(yīng)用于過程工業(yè)、機械工業(yè)、紡織機械、農(nóng)用機械、機器人、數(shù)控機床、醫(yī)療器械及傳感器等領(lǐng)域,下面介紹CAN總線應(yīng)用于嵌入式系統(tǒng)的驅(qū)動編程.濾波即可實現(xiàn)點對點、一點對多點及全局廣播等幾種方式傳送接收數(shù)據(jù),無需專門的“調(diào)度”,CAN 的直接通信距離最遠可達10km(速率5kbps 以下);通信速率最高可達1Mbps(此時通信距離最長為40m).CAN 上的節(jié)點數(shù)主要取決于總線驅(qū)動電路,目前可達110個;采用短幀結(jié)構(gòu),傳輸時間短,受干擾概率低,
9、具有極好的檢錯效果;CAN 的通信介質(zhì)可為雙絞線、同軸電纜或光纖等.CAN 總線的數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性. 5 CAN總線的嵌入式系統(tǒng)硬件設(shè)計 本設(shè)計選用Samsung公司的S3C4510B作為嵌入式系統(tǒng)的微處理器芯片,該處理器是16/32位RISC微處理控制器,內(nèi)含由ARM公司設(shè)計的16/32位ARM7TDMI RISC處理器核,適用于價格及功耗敏感的場合.除內(nèi)核外,該微處理器的片內(nèi)外圍功能模塊包括:2個帶緩沖描述符的HDLC通道;2個UART通道;2個GDMA通道;2
10、個32位定時器及可編程I/O口.CAN控制器選用philips公司的SJA1000,該芯片與PCA82C200電氣兼容,帶64字節(jié)先進先出(FIFO)堆棧,兼容協(xié)議CAN2.0B,支持11位和29位識別碼,位速率可達1Mbps,24MHZ時鐘頻率,芯片內(nèi)含寄存器,可由用戶配置CAN總線波特率,設(shè)置驗收屏蔽標識碼,可配置系統(tǒng)為PeliCAN 模式或BasicCAN模式,出錯告警等. 該系統(tǒng)采用82C250作為收發(fā)器,其硬件連線如圖(1)所示.AD0AD7與S3C4510B的p0p7連線,/cs接p12,ALE接p13,/RD接p14,/wr接p15,/int接X
11、INTREQ0.圖1 SJA1000硬件連線 6 驅(qū)動軟件設(shè)計圖2 CAN總線初始化框圖本設(shè)計中,CAN總線驅(qū)動程序是作為一個模塊放在linux/deriver/char/文件夾里面,軟件流程如圖(2)所示,其設(shè)計詳細介紹如下. 模塊首先對引用的庫函數(shù)進行申明,并且定義:#define IOPMOD(volatile unsigned )0x3ff5000)#define IOPDATA (volatile unsigned )
12、0x3ff5008)#define IOPCON (volatile unsigned )0x3ff5004)#define EXTDBWTH(volatile unsigned )0x3ff5#define SYSCFG(volatile unsigned )0x主要有以下幾個模塊:void can_init(void)SYSCFG =SYSCFG & 0x0fffffffd;EXTDBWTH =EXTDBWTH& 0x00ff0ff;IOPMOD=0xf0ff;IOPDATA=0x6000; 寄存器地址0,MOD寄存器IOPDATA= IO_PDATA&0x
13、dfff; ALE=0 配置MOD寄存器IOPDATA= IO_PDATA|0x3f; ; 復(fù)位模式、使能IOPDATA=0x6006; ;寄存器地址6,總線定時器0寄存器IOPDATA=IO_PDATA&0xdfff; ALE=0配置寄存器IOPDATA= IO_PDATA|0x3f; 跳轉(zhuǎn)寬度、波特率設(shè)置;配置總線定時器1、驗收代碼寄存器等IOPDATA=0x6000; SJA1000 寄存器地址0,MOD寄存器IOPDATA=IO_PDATA&0xdfff; ALE=0配置MOD寄存器IOPDATA= IO_PDATA&0xfe;寫復(fù)位位,進入工作模式result
14、= register_chrdev(254,"can",&can_fops);申請主設(shè)備號if (result<0) printk(KERN_WARNING "CAN:cant getmajor ", result);return result;在該驅(qū)動程序中,定義結(jié)構(gòu)變量can_fops為應(yīng)用程序訪問內(nèi)核的接口:static struct file_operations can_fops = read: can_read,write: can_write,open: can_open,release: can_release,;stati
15、c int can_release(struct inode inode, struct file file)MOD_DEC_USE_COUNT; ;用戶減計數(shù)Return 0;static int can_open(struct inode inode,struct file file)Scull_Dev dev;Int num = NUM(inode->i_rdev); 設(shè)備號Int type = TYPE(inode->i_rdev); 設(shè)備類型If (num>=scull_nr_devs) return -ENODEV;dev = &scull_devicesnum;flip->private_data = dev;MOD_INC_USE_COUNT; 用戶數(shù)人工計數(shù)IOPCON=0x16; /xIRQ0disable_irq(INT_can);if(request_irq(INT_can, &can_rx,SA_INTERRUPT, "can rx isr","can") printk("s3c4510-can: Can"t get irq %dn",INT_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人資金借貸合同范例
- 醫(yī)療設(shè)備電氣安全檢查的重要性
- 企業(yè)內(nèi)部實驗室應(yīng)急管理與實施案例
- 企業(yè)用房購買合同范例
- 醫(yī)療數(shù)據(jù)共享的保障者-區(qū)塊鏈技術(shù)的角色與挑戰(zhàn)
- 醫(yī)療技術(shù)IP保護的挑戰(zhàn)與對策分析
- 主機租賃服務(wù)合同范例
- M視域下淺析優(yōu)化患方對診療記錄保密的措施與問題應(yīng)對
- 個人豬場租賃合同范例
- 公共服務(wù)合同范例
- 2021年武漢中考數(shù)學(xué)試題(附答案)
- 部編版五年級語文上冊期末群文閱讀 試卷附答案
- DB21-T 2850-2017旅游景區(qū)安全管理規(guī)范
- 規(guī)范會議記錄培訓(xùn)課件
- AIB(2022版)統(tǒng)一檢查標準-前提方案與食品安全程序
- GIS(地理信息系統(tǒng))空間分析
- 《風(fēng)險管理理論》課件
- 防汛行政首長培訓(xùn)課件
- FBS-GC-001-分布式光伏施工日志
- 《裝備質(zhì)量問題歸零實施指南》
- 人衛(wèi)版肺部疾病教學(xué)課件
評論
0/150
提交評論