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

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