a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 實時嵌入式操作系統VxWorks設備驅動程序的設計

實時嵌入式操作系統VxWorks設備驅動程序的設計

作者: 時間:2011-06-10 來源:網絡 收藏

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

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

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

上一頁 1 2 3 下一頁

評論


相關推薦

技術專區

關閉