當前位置:自動化網>上海市百速信息技術有限公司門戶>應用案例>PCI 設備 RTX 驅動開發方法

          PCI 設備 RTX 驅動開發方法

          發布時間:2018-01-08 15:01   類型:基礎知識   人瀏覽

          1. RTX 下操作外設時, 需要把設備從 Windows 移動到 RTX 下面, 
          具體移植方法可以參考 RTX Help 文檔中間 Converting a Windows Device to an RTX Device 一節或者參考附件<<串口設備移植向導.doc>> 

          2. PCI驅動程序的特點 
          在設計驅動程序之前,首先要對欲控制的硬件設備進行細致地分析,更需要詳細了解硬件設備的特性。硬件設備的特性會對驅動程序設計產生重大的影響。需要了解的最主要的硬件特性包括: 
          (1) 設備的總線結構 
          設備采用什么總線結構非常關鍵,因為不同的總線類型(如ISA和PCI)在許多硬件工作機制上是不同的,所以驅動程序設計也不同。 
          (2) 寄存器 
          要了解設置的控制寄存器、數據寄存器和狀態寄存器,以及這些寄存器工作的特性。 
          (3) 設備錯誤和狀態 
          要了解如何判斷設備的狀態和錯誤信號,這些信號要通過驅動程序返回給用戶。 
          (4) 中斷行為 
          要了解設備產生中斷的條件和使用中斷的數量。 
          (5) 數據傳輸機制 
          最常見的數據傳輸機制是通過I/O端口(port),也就是通過CPU進行數據讀寫。PC的另一種重要的傳輸機制是DMA,但PCI規范不包括從屬DMA的說明。 
          (6) 設備內存 
          許多設備自身帶有內存,PCI設備大多是采用映射的方式映射到PC系統的物理內存。有的設備還要通過驅動程序設置設備的接口寄存器 

          3. RTX 驅動整體架構 
          使用 RTX Device Driver 開發向導, 選擇支持 
          (1) Interrupt Service Routine (ISR) 
          (2) Support for Sharing an Interrupt 
          (3) Basic Port I/O Support 
          (4) Basic Mapped Memory Support, 
          即可生成 RTX PCI 設備驅動程序框架。 
          該程序框架分成兩個函數, Driver 文件和 DriverFunc 文件: 
          Driver 文件主要包括 main 函數,中斷服務程序和中斷服務線程; 
          DriverFunc 文件主要是對 PCI 設備的基本操作函數, 包括 PCI 設備搜索, PCI 設備初始化,使能或關閉中斷, 處理 PCI 設備共享中斷, 以及 PCI 驅動程序資源清理等函數。 
          4. 完整的 RTX PCI驅動 
          基于RTX PCI 設備驅動程序框架, 用戶需要添加相應的代碼, 下面基于反射內存卡的 RTX 驅動進行分析。 
          反射內存卡的基本特點
          (1) PCI、PCIe、PMC、VME 外形, 節點之間組成環形連接或通過光纖 Hub 組成星型連接 
          (2) 節點之間數據確定性的傳輸延遲, 延遲小于 750us 
          PCI 反射內存卡的 RTX 驅動也分成 Driver 文件和DriverFunc 文件兩個文件。Driver 文件主要包括 main 函數,中斷服務程序和中斷服務線程, 下面是詳細的分析: 
          (1) Main 函數: 
          Main 函數并不是 RTX PCI 驅動程序的一部分, 準確的講它是如何使用 RTX PCI驅動程序的流程。用戶需要做的工作: 
          a. 在 RTX PCI 設備驅動程序框架生成的 main 函數需要在設備初始化 (DeviceInit()) 完成之后與使能 PCI 中斷之前添加設備打開(open())函數, 該函數的功能主要是創建信號量和初始化板卡. 
          b. 使能 PCI 中斷之后, 用戶即可調用 PCI驅動程序里的讀寫等函數寫一段簡單的讀寫測試程序。 
          (2) 中斷服務程序: 
          這個函數接收到中斷后交給中斷服務線程來處理, 用戶一般不需要改動。 
          (3) 中斷服務線程: 
          中斷服務線程主要完成讀取和記錄 PCI 板卡的中斷信息, 釋放相關的信號量等工作, 一般不完成具體的中斷處理工作。PCI 驅動程序一般還提供一個函數來捕捉這些釋放的信號量, 完成中斷具體含義的解析工作。 
          DriverFunc 文件主要是對 PCI 設備的基本操作函數, 包括 PCI 設備搜索, PCI 設備初始化,使能或關閉中斷, 處理 PCI 設備共享中斷, 以及 PCI 驅動程序資源清理, 數據讀寫, 發送和接收消息類中斷等函數。下面是詳細的分析: 
          (1) DeviceSearch 函數 
          這個函數根據 PCI 設備的 Vendor ID 和 Device ID 搜索 PCI 設備, 返回 PCI 配置信息和 slot Number. 用戶修改 Vendor ID 和 Device ID 即可。 
          (2) DeviceInit 函數 
          PCI設備初始化函數. 該函數中間調用了兩個RTX 系統函數RtTranslateBusAddress() 和 RtMapMemory(), RtTranslateBusAddress() 作用為把 PCI 設備地址轉換為 CPU 可以直接訪問的物理地址, RtMapMemory() 函數把物理地址映射到虛擬地址。映射到虛擬地址空間后 ring3用戶即可以讀寫 PCI 內存空間或者 I/O 空間了。用戶需要關注的是物理地址到虛擬地址映射的地址范圍,一般設置為 4K Bytes. RtMapMemory() 函數默認最大可以映射的地址范圍為 64M Bytes, 如果需要更大的范圍, 可以參考內存管理一節。 
          (3) Enable/Disable Interrupts On Chip 函數 
          使能或者關閉 PCI 設備上的中斷。用戶根據 PCI 設備進行修改。 
          (4) IsMyInterrupt函數 
          RTX 下 PCI 設備中斷號可以共享。如果有 RTX 下 PCI 設備共享, 需要在該函數中間區分是否是該設備的中斷. 
          (5) DeviceCleanup 函數 
          該函數釋放中斷句柄和解除物理地址于虛擬地址之間的映射。用戶基本不需要修改該函數。 
          (6) RFM2gOpen 函數 
          反射內存功能函數。該函數的功能主要是為 DMA 通道,發送和接收Event(反射內存的一種消息類中斷)等硬件功能模塊創建信號量和初始化板卡。為了防止對硬件資源的訪問沖突, 使用這些硬件資源前需要先拿到信號量, 使用結束后釋放這些信號量。 
          (7) RFM2gEnableEvent函數 
          反射內存功能函數。使能板卡接收消息類中斷。 
          (8) RFM2gSendEvent 函數 
          反射內存功能函數。向其它節點發送消息類中斷。 
          (9) RFM2gWaitForEvent函數 
          反射內存

          本文地址:http://m.xznet110.com:8002/apply/d_1o0b9ovcqt6m1_1.html

          拷貝地址

          版權聲明:版權歸中國自動化網所有,轉載請注明出處!

          留言反饋
          • 評價:

          • 關于:

          • 聯系人:

          • 聯系電話:

          • 聯系郵箱:

          • 需求意向:

          • 驗證碼:

            看不清楚?

          主站蜘蛛池模板: 欧美极品欧美日韩| 里番acg全彩本子同人视频| 成人免费ā片在线观看| 亚洲成av人片在线观看天堂无码| 美女露内裤扒开腿让男生桶| 国产精品亚洲精品日韩动图| z0z0z0女人极品另类视频| 日韩免费中文字幕| 亚洲欧美日韩天堂一区二区| 精品性高朝久久久久久久| 国产帅男男gay网站视频| 99久久国产热无码精品免费| 成年丰满熟妇午夜免费视频| 乱小说欧美综合| 欧美野外疯狂做受xxxx高潮| 岛国a香蕉片不卡在线观看| 亚欧色一区w666天堂| 特黄AAAAAAAAA毛片免费视频| 国产三级在线免费观看| 2022福利视频| 在线观看亚洲专区| 三级演员苏畅简历及个人资料简介| 日韩视频第一页| 午夜国产福利在线观看| 黑巨人与欧美精品一区| 国产资源在线免费观看| 一区二区三区视频网站| 日本全彩翼漫画全彩无遮挡| 亚洲伊人久久精品影院| 激情综合色五月六月婷婷| 午夜精品在线免费观看| 青苹果乐园影视免费观看电视剧hd| 国产精品嫩草影院永久一| ASS日本少妇高潮PICS| 希岛婚前侵犯中文字幕在线| 久久亚洲精品中文字幕无码| 欧洲熟妇色xxxx欧美老妇| 亚洲的天堂av无码| 香蕉污视频在线观看| 国产精品嫩草影院免费| aaa日本高清在线播放免费观看 |