基于VxWorks的VME從板驅動設計與實現
4.2 驅動程序ioctrl方法的實現
驅動程序的ioctrl方法在驅動程序中具有重要地位,它除了要實現從板功能寄存器的設置及驅動程序的查詢機制外,還要實現用戶信號處理函數的注冊工作,結合這些功能實現的ioctrl方法的框架代碼如下所示。

整個的ioctl方法由switch結構組成,這樣的結構代碼簡單明了,易讀性和可維護性都很好,同時可以方便地通過擴充命令的方法來實現對從板功能寄存器多種多樣的操作,便于驅動程序的重用。
4.3 驅動程序read方法的買現
驅動程序的read方法主要實現對緩沖區數據的讀取,同時它是實現數據阻塞操作的關鍵,read方法的程序流程圖如圖6所示。本文引用地址:http://www.j9360.com/article/159333.htm
函數首先進行參數的檢查及轉化;然后檢查緩沖區標志,如果緩沖區存在數據則直接讀出數據,如果緩沖區沒有數據,函數就會申請緩沖區的信號量而使任務處于掛起狀態,當中斷處理任務處理完緩沖區后會發送一個信號量而使任務重新運行并且讀出緩沖區數據;函數最后是設置緩沖區標志,表示緩沖區數據已經讀出。函數要與中斷處理任務進行同步;讀取和設置緩沖區標志使用原子操作的方法,等待中斷處理任務設置緩沖區時使用了信號量的方式完成了同步。
5 VME總線數據傳輸測試
VME數據傳輸測試主要是測試總線數據傳輸的可靠性,只有總線數據傳輸的可靠性能夠保證,驅動才能穩定的運行,其測試的方法是通過隨機地讀寫從板的隨機讀寫寄存器來完成的,整個測試中為了模擬操作系統在有負載情況下的運行效果,增加了一些定時器操作,
其測試的程序流程圖如圖7所示。
使用這種測試的方法最終得到測試的結果如表3所示。從測試結果可以看出,數據傳輸的準確性比較好,通過閱讀VG5-7457PowerPC的板級支持包可以發現其實現VME數據總線操作的函數都有原子操作過程,以此保證數據傳輸的可靠性。良好的VME總線傳輸特性為驅動的實現提供了良好的基礎。
6 結論
設計了基于VxWorks操作系統的VME總線從板的驅動程序框架,著重介紹了驅動程序的機制及這些機制的實現方法;在設計的整體上重點地考慮了驅動程序的可維護性及可移轉性。采用這種方式建立起來的驅動程序代碼的可讀性好,可維護性強,而且可以方便地移植到其他的應用場合。
評論