<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 實時嵌入式操作系統(tǒng)VxWorks設備驅(qū)動程序的設計

          實時嵌入式操作系統(tǒng)VxWorks設備驅(qū)動程序的設計

          作者: 時間:2011-06-10 來源:網(wǎng)絡 收藏

          2)加載函數(shù) sysEndLoad()是END網(wǎng)口的初始化入口點,該函數(shù)的參數(shù)由tUserRoot任務在調(diào)用muxDevLoad()傳入,muxDev-Load()進而使用該參數(shù)調(diào)用sysEndLoad()。sysEndLoad()中執(zhí)行幾個必要操作:初始化END_OBJ結構、初始化網(wǎng)絡緩沖內(nèi)存、初始化MIB、設置網(wǎng)絡準備好標志。其函數(shù)格式:
          END_OKJ*sysEndLoad(char*initString)。其中initString由網(wǎng)絡表(endDevTb1[])中的成員提供。的所有特殊參數(shù)都是通過initString參數(shù)進行傳遞的。它包含如下特殊參數(shù):設備寄存器基地址、中斷向量、中斷級、共享緩沖區(qū)地址等。
          3)打開設備函數(shù) endStart()函數(shù)實現(xiàn)設備停止校驗操作、注冊的中斷服務程序、打開設備中斷、記錄設備啟動和啟動設備。它調(diào)用bsp的函數(shù)連接中斷和設備,使設備工作在中斷模式下。其函數(shù)格式如下:
          STATUS endStart(END_DEVICE*pDrvCtrl)。啟動設備成功時,返回OK。函數(shù)實現(xiàn)如下:
          c.JPG
          4)設備讀/寫 設備的讀操作和寫操作是兩個相反的動作,一個向設備發(fā)送數(shù)據(jù),一個從設備接收數(shù)據(jù)。
          當網(wǎng)絡協(xié)議層要發(fā)送數(shù)據(jù)時,協(xié)議驅(qū)動首先調(diào)用Mux層的API函數(shù)MuxSend(),MuxSend()通過調(diào)用函數(shù)endSend()把上層傳過來的數(shù)據(jù)從mblk-clblk-cluster結構中發(fā)送到網(wǎng)絡中。
          在NET_FUNCS結構中并不提供endReceive()函數(shù)。所以接收包的實現(xiàn)要依靠中斷的觸發(fā),當驅(qū)動軟件接收到包時引發(fā)一個接收中斷例程。該中斷把數(shù)據(jù)緩沖區(qū)cluster與mblk,clblk結構連接。通過調(diào)用函數(shù)指針receiveRtn,指向Mux層API函數(shù)MuxReceive(),該函數(shù)把接收到的包傳到Mux層。如果該函數(shù)返回OK,表明數(shù)據(jù)包被正確傳輸。接受函數(shù)MuxReceive()通過調(diào)用函數(shù)stackRcvRtn再把數(shù)據(jù)包傳輸?shù)缴蠈訁f(xié)議層。
          5)關閉設備 關閉操作是打開操作的逆過程,當需要關閉網(wǎng)卡的時候,系統(tǒng)通過MUX層調(diào)用函數(shù)endStop()來完成。
          該函數(shù)釋放中斷向量,停止接收和發(fā)送寄存器的DMA處理,并將電源放置到低功耗。
          6)設備中斷管理 設備進行讀/寫操作時使用,當設備上接收到數(shù)據(jù)或數(shù)據(jù)發(fā)送結束時,通過觸發(fā)中斷信號。向系統(tǒng)報告這一狀態(tài),系統(tǒng)便執(zhí)行中斷服務函數(shù)進行相應的處理。
          驅(qū)動程序在MuxDevStart()函數(shù)中連接中斷服務程序,中斷服務程序是通過intConnect()函數(shù)掛接在某個中斷向量上的,當網(wǎng)絡層出現(xiàn)中斷時,網(wǎng)絡任務將調(diào)用中斷服務程序,中斷服務程序要調(diào)用一個函數(shù)netJobAdd(FUNCPTR routine,intparaml,int param2,int param3,int param4,int param5)其中routine指向需要處理的函數(shù)入口,5個參數(shù)可用來傳遞給處理函數(shù),中斷服務程序在網(wǎng)絡設備的數(shù)據(jù)包接收和發(fā)送中扮演著重要的角色,負責處理接收中斷和接受中斷,其過程是:讀中斷狀態(tài)寄存器,清中斷事件,根據(jù)中斷狀態(tài),調(diào)用相應的中斷處理程序。

          4 結論
          以其占用資源少,性能穩(wěn)定等諸多優(yōu)點而得到了越來越廣泛的應用。系統(tǒng)中I/O設備是關鍵的一環(huán),為I/O設備編寫高效無誤的驅(qū)動程序是開發(fā)系統(tǒng)的重要問題。本文分析了中I/O設備驅(qū)動程序的結構及其過程,并給出了具體設備驅(qū)動程序的開發(fā)流程。
          在課題研究過程中,完成了END網(wǎng)口的驅(qū)動,并通過控制器之間的數(shù)據(jù)通信驗證了驅(qū)動的正確性。的I/O系統(tǒng)將設備程序作為內(nèi)核過程實現(xiàn)的性和可靠性有了很大的提高,更重要的是為用戶提供了統(tǒng)一的接口。為后續(xù)開發(fā)提供了更大的方便。

          本文引用地址:http://www.ex-cimer.com/article/150614.htm
          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();