- 相關(guān)推薦
VxWorks下PC/104-CAN驅動(dòng)程序設計
摘要:詳細介紹實(shí)時(shí)多任務(wù)操作系統VxWorks環(huán)境下驅動(dòng)程序的設計原理;針對驅動(dòng)程序實(shí)現的困難,給出VxWorks下實(shí)現驅動(dòng)程序的工作步驟。文件以PC/104-CAN適配卡為例,簡(jiǎn)要介紹硬件結構,重點(diǎn)給出驅動(dòng)程序實(shí)現的關(guān)鍵代碼。VxWorks是一款優(yōu)秀的實(shí)時(shí)多任務(wù)操作系統,具有搶占式調試、中斷延遲小等特點(diǎn)。本文在簡(jiǎn)要介紹必備的硬件環(huán)境下,以VxWorks為平臺,詳細介紹驅動(dòng)程序的開(kāi)發(fā)。
1 PC/104-CAN適配卡的硬件結構
PC/104-CAN適配卡主要由CAN控制器(SJA1000)、光電隔離(6N137),收發(fā)驅動(dòng)器(82C250)及譯碼電路組成。編程主要了解的是控制器SJA1000。CAN適配卡原理如圖1所示。
2 CAN地址譯碼和中斷選擇
系統104主板的CPU為486DX,其對接口板訪(fǎng)問(wèn)有兩種方式:內存映射和I/O訪(fǎng)問(wèn)。I/O尋址采用專(zhuān)門(mén)的指令,每次只能傳送單個(gè)字節。內存映射方式可以訪(fǎng)問(wèn)較大的地址空間并且指令豐富,便于實(shí)現快速交換數據。本文討論的CAN卡采用存映射模式工作,與486DX接口是104總線(xiàn),它與ISA總線(xiàn)兼容。對于Intel X86體系的CPU,ISA可以映射的空間為0xC8000~0xEFFFF。使用比較器和地址選擇開(kāi)關(guān)組成可選端口地址譯碼電路,通過(guò)開(kāi)關(guān)選通內存映射基地址(C8000H、C9000H、CA000H、…、EF000H),以避免與其它器件沖突。CAN偏移地址分配如下:
00~FFH SJA1000的寄存器;
100H~1FFH 對該范圍內的任意地址進(jìn)行寫(xiě)操作,均可導致CAN硬件復位。
SJA1000的INT引腳通過(guò)跳線(xiàn)選擇IRQ3~7、IRQ9~12或IRQ15中的一個(gè),避免與其它的適配卡沖突。
3 PC/104-CAN適配卡驅動(dòng)實(shí)現
3.1 VxWorks驅動(dòng)概述
VxWorks操作系統有兩種方式實(shí)現驅動(dòng)。第一種方式是,把設備驅動(dòng)程序作為獨立任務(wù)實(shí)現,直接在頂層任務(wù)中實(shí)現硬件操作,完成特有專(zhuān)用的驅動(dòng)程序。第二種方式是,VxWorks的I/O系統將設備程序作為內核過(guò)程實(shí)現。這種方式便于實(shí)現I/O子系統的層次模型,便于文件系統一起把設備作為特殊文件處理,提供統一的管理、統一的界面和統一的使用方法,并把設備、文件及網(wǎng)絡(luò )通信組織成為一致的更高層次的抽象,為用戶(hù)提供統一的系統服務(wù)和用戶(hù)接口。我們和這種驅動(dòng)方式。
作為I/O系統和硬件設備之間的連接層,VxWorks驅動(dòng)就是屏蔽硬件操作,為I/O系統提供服務(wù)。實(shí)現一個(gè)完整的驅動(dòng),必須了解VxWorks下I/O的三個(gè)基本元素:File、Driver和Dervice。File是為用戶(hù)提供訪(fǎng)問(wèn)設備的統一接口;Driver是實(shí)現具體的基本控制函數,也就是實(shí)現I/O系統所需要的接口;而Device則是一個(gè)抽象的硬件設備,是一系列的結構體、變量和宏定義對實(shí)際物理設備的定義。一般而言,實(shí)現一個(gè)驅動(dòng)應該有三個(gè)基本的步驟:①用編程語(yǔ)言完成對實(shí)際物理設備的抽象;②完成系統所需要的各類(lèi)接口及自身的特殊接口;③將驅動(dòng)集成到操作系統中。之后還有一些調試工作。
3.2 VxWorks I/O系統驅動(dòng)程序框架
VxWorks為各種設備(包括字符設備、塊設備、虛擬設備及網(wǎng)絡(luò )設備)提供統一的訪(fǎng)問(wèn)接口,包括七種基本的I/O函數:open(filename、flags、mode),create(filename、flags),read(fd、
【VxWorks下PC/104-CAN驅動(dòng)程序設計】相關(guān)文章:
WindowsCE.Net下CAN卡的驅動(dòng)程序設計03-20
windowsnt環(huán)境下fddi網(wǎng)卡驅動(dòng)程序設計(2)03-18
windows nt環(huán)境下fddi網(wǎng)卡驅動(dòng)程序設計03-18
嵌入式Linux下CAN總線(xiàn)驅動(dòng)程序設計03-07
在VxWorks下實(shí)現NAT/NAPT的方法03-20
基于VxWorks的多DSP系統的多任務(wù)程序設計03-18
I2C總線(xiàn)在uClinux操作系統下的驅動(dòng)程序設計11-22