PCI 設備 RTX 驅動(dòng)開(kāi)發(fā)方法

發(fā)布時(shí)間:2020-10-9 15:00    發(fā)布者:trueleven
關(guān)鍵詞: 反射內存卡 , PCI , RTX , 反射內存
1. RTX 下操作外設時(shí), 需要把設備從 Windows 移動(dòng)到 RTX 下面,

具體移植方法可以參考 RTX Help 文檔中間Converting a Windows Device to an RTX Device 一節或者參考附件<<串口設備移植向導.doc>>


2. PCI驅動(dòng)程序的特點(diǎn)

在設計驅動(dòng)程序之前,首先要對欲控制的硬件設備進(jìn)行細致地分析,更需要詳細了解硬件設備的特性。硬件設備的特性會(huì )對驅動(dòng)程序設計產(chǎn)生重大的影響。需要了解的最主要的硬件特性包括:

(1) 設備的總線(xiàn)結構

設備采用什么總線(xiàn)結構非常關(guān)鍵,因為不同的總線(xiàn)類(lèi)型(如ISA和PCI)在許多硬件工作機制上是不同的,所以驅動(dòng)程序設計也不同。

(2) 寄存器

要了解設置的控制寄存器、數據寄存器和狀態(tài)寄存器,以及這些寄存器工作的特性。

(3) 設備錯誤和狀態(tài)

要了解如何判斷設備的狀態(tài)和錯誤信號,這些信號要通過(guò)驅動(dòng)程序返回給用戶(hù)。

(4) 中斷行為

要了解設備產(chǎn)生中斷的條件和使用中斷的數量。

(5) 數據傳輸機制

最常見(jiàn)的數據傳輸機制是通過(guò)I/O端口(port),也就是通過(guò)CPU進(jìn)行數據讀寫(xiě)。PC的另一種重要的傳輸機制是DMA,但PCI規范不包括從屬DMA的說(shuō)明。

(6) 設備內存

許多設備自身帶有內存,PCI設備大多是采用映射的方式映射到PC系統的物理內存。有的設備還要通過(guò)驅動(dòng)程序設置設備的接口寄存器


3. RTX 驅動(dòng)整體架構

使用 RTX Device Driver 開(kāi)發(fā)向導, 選擇支持

(1) Interrupt Service Routine (ISR)

(2) Support for Sharing an Interrupt

(3) Basic Port I/O Support

(4) Basic Mapped Memory Support,

即可生成 RTX PCI 設備驅動(dòng)程序框架。

該程序框架分成兩個(gè)函數, Driver 文件和DriverFunc 文件:

Driver 文件主要包括 main 函數,中斷服務(wù)程序和中斷服務(wù)線(xiàn)程;

DriverFunc 文件主要是對 PCI 設備的基本操作函數,包括 PCI 設備搜索, PCI 設備初始化,使能或關(guān)閉中斷,處理 PCI 設備共享中斷, 以及 PCI 驅動(dòng)程序資源清理等函數。

4. 完整的 RTX PCI驅動(dòng)

基于RTX PCI 設備驅動(dòng)程序框架, 用戶(hù)需要添加相應的代碼, 下面基于反射內存卡的 RTX 驅動(dòng)進(jìn)行分析。

反射內存卡的基本特點(diǎn):

(1) PCI、PCIe、PMC、VME 外形, 節點(diǎn)之間組成環(huán)形連接或通過(guò)光纖 Hub 組成星型連接

(2) 節點(diǎn)之間數據確定性的傳輸延遲, 延遲小于750us

PCI 反射內存卡的 RTX 驅動(dòng)也分成 Driver 文件和DriverFunc 文件兩個(gè)文件。Driver 文件主要包括 main 函數,中斷服務(wù)程序和中斷服務(wù)線(xiàn)程, 下面是詳細的分析:

(1) Main 函數:

Main 函數并不是 RTX PCI 驅動(dòng)程序的一部分, 準確的講它是如何使用 RTX PCI驅動(dòng)程序的流程。用戶(hù)需要做的工作:

a. 在 RTX PCI 設備驅動(dòng)程序框架生成的 main 函數需要在設備初始化 (DeviceInit()) 完成之后與使能 PCI 中斷之前添加設備打開(kāi)(open())函數, 該函數的功能主要是創(chuàng )建信號量和初始化板卡.

b. 使能 PCI 中斷之后, 用戶(hù)即可調用 PCI驅動(dòng)程序里的讀寫(xiě)等函數寫(xiě)一段簡(jiǎn)單的讀寫(xiě)測試程序。

(2) 中斷服務(wù)程序:

這個(gè)函數接收到中斷后交給中斷服務(wù)線(xiàn)程來(lái)處理, 用戶(hù)一般不需要改動(dòng)。

(3) 中斷服務(wù)線(xiàn)程:

中斷服務(wù)線(xiàn)程主要完成讀取和記錄 PCI 板卡的中斷信息, 釋放相關(guān)的信號量等工作, 一般不完成具體的中斷處理工作。PCI 驅動(dòng)程序一般還提供一個(gè)函數來(lái)捕捉這些釋放的信號量, 完成中斷具體含義的解析工作。

DriverFunc 文件主要是對 PCI 設備的基本操作函數,包括 PCI 設備搜索, PCI 設備初始化,使能或關(guān)閉中斷,處理 PCI 設備共享中斷, 以及 PCI 驅動(dòng)程序資源清理, 數據讀寫(xiě),發(fā)送和接收消息類(lèi)中斷等函數。下面是詳細的分析:

(1) DeviceSearch 函數

這個(gè)函數根據 PCI 設備的 Vendor ID 和 Device ID 搜索 PCI 設備,返回 PCI 配置信息和 slot Number. 用戶(hù)修改 Vendor ID 和 Device ID 即可。

(2) DeviceInit 函數

PCI設備初始化函數. 該函數中間調用了兩個(gè)RTX 系統函數RtTranslateBusAddress() 和 RtMapMemory(),RtTranslateBusAddress() 作用為把 PCI 設備地址轉換為 CPU 可以直接訪(fǎng)問(wèn)的物理地址, RtMapMemory() 函數把物理地址映射到虛擬地址。映射到虛擬地址空間后 ring3用戶(hù)即可以讀寫(xiě) PCI 內存空間或者 I/O 空間了。用戶(hù)需要關(guān)注的是物理地址到虛擬地址映射的地址范圍,一般設置為 4KBytes. RtMapMemory() 函數默認最大可以映射的地址范圍為 64M Bytes, 如果需要更大的范圍, 可以參考內存管理一節。

(3) Enable/Disable Interrupts On Chip 函數

使能或者關(guān)閉 PCI 設備上的中斷。用戶(hù)根據 PCI 設備進(jìn)行修改。

(4) IsMyInterrupt函數

RTX 下 PCI 設備中斷號可以共享。如果有 RTX 下 PCI 設備共享, 需要在該函數中間區分是否是該設備的中斷.

(5) DeviceCleanup 函數

該函數釋放中斷句柄和解除物理地址于虛擬地址之間的映射。用戶(hù)基本不需要修改該函數。

(6) RFM2gOpen 函數

反射內存功能函數。該函數的功能主要是為 DMA 通道,發(fā)送和接收Event(反射內存的一種消息類(lèi)中斷)等硬件功能模塊創(chuàng )建信號量和初始化板卡。為了防止對硬件資源的訪(fǎng)問(wèn)沖突, 使用這些硬件資源前需要先拿到信號量, 使用結束后釋放這些信號量。

(7) RFM2gEnableEvent函數

反射內存功能函數。使能板卡接收消息類(lèi)中斷。

(8) RFM2gSendEvent 函數

反射內存功能函數。向其它節點(diǎn)發(fā)送消息類(lèi)中斷。

(9) RFM2gWaitForEvent函數

反射內存

本文地址:http://selenalain.com/thread-604887-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页