關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于VxWorks的VME從板驅(qū)動設(shè)計與實現(xiàn)

基于VxWorks的VME從板驅(qū)動設(shè)計與實現(xiàn)

作者: 時間:2013-06-14 來源:網(wǎng)絡(luò) 收藏

4.2 驅(qū)動程序ioctrl方法的實現(xiàn)
驅(qū)動程序的ioctrl方法在驅(qū)動程序中具有重要地位,它除了要實現(xiàn)從板功能寄存器的設(shè)置及驅(qū)動程序的查詢機(jī)制外,還要實現(xiàn)用戶信號處理函數(shù)的注冊工作,結(jié)合這些功能實現(xiàn)的ioctrl方法的框架代碼如下所示。
i.JPG
整個的ioctl方法由switch結(jié)構(gòu)組成,這樣的結(jié)構(gòu)代碼簡單明了,易讀性和可維護(hù)性都很好,同時可以方便地通過擴(kuò)充命令的方法來實現(xiàn)對從板功能寄存器多種多樣的操作,便于驅(qū)動程序的重用。
4.3 驅(qū)動程序read方法的買現(xiàn)
驅(qū)動程序的read方法主要實現(xiàn)對緩沖區(qū)數(shù)據(jù)的讀取,同時它是實現(xiàn)數(shù)據(jù)阻塞操作的關(guān)鍵,read方法的程序流程圖如圖6所示。

本文引用地址:http://butianyuan.cn/article/159333.htm

k.JPG


函數(shù)首先進(jìn)行參數(shù)的檢查及轉(zhuǎn)化;然后檢查緩沖區(qū)標(biāo)志,如果緩沖區(qū)存在數(shù)據(jù)則直接讀出數(shù)據(jù),如果緩沖區(qū)沒有數(shù)據(jù),函數(shù)就會申請緩沖區(qū)的信號量而使任務(wù)處于掛起狀態(tài),當(dāng)中斷處理任務(wù)處理完緩沖區(qū)后會發(fā)送一個信號量而使任務(wù)重新運(yùn)行并且讀出緩沖區(qū)數(shù)據(jù);函數(shù)最后是設(shè)置緩沖區(qū)標(biāo)志,表示緩沖區(qū)數(shù)據(jù)已經(jīng)讀出。函數(shù)要與中斷處理任務(wù)進(jìn)行同步;讀取和設(shè)置緩沖區(qū)標(biāo)志使用原子操作的方法,等待中斷處理任務(wù)設(shè)置緩沖區(qū)時使用了信號量的方式完成了同步。

5 數(shù)據(jù)傳輸測試
VME數(shù)據(jù)傳輸測試主要是測試總線數(shù)據(jù)傳輸?shù)目煽啃裕挥锌偩€數(shù)據(jù)傳輸?shù)目煽啃阅軌虮WC,驅(qū)動才能穩(wěn)定的運(yùn)行,其測試的方法是通過隨機(jī)地讀寫從板的隨機(jī)讀寫寄存器來完成的,整個測試中為了模擬操作系統(tǒng)在有負(fù)載情況下的運(yùn)行效果,增加了一些定時器操作,
其測試的程序流程圖如圖7所示。

l.JPG


使用這種測試的方法最終得到測試的結(jié)果如表3所示。從測試結(jié)果可以看出,數(shù)據(jù)傳輸?shù)臏?zhǔn)確性比較好,通過閱讀VG5-7457PowerPC的板級支持包可以發(fā)現(xiàn)其實現(xiàn)VME數(shù)據(jù)總線操作的函數(shù)都有原子操作過程,以此保證數(shù)據(jù)傳輸?shù)目煽啃?。良好?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/VME總線">VME總線傳輸特性為驅(qū)動的實現(xiàn)提供了良好的基礎(chǔ)。

m.JPG



6 結(jié)論
設(shè)計了基于從板的驅(qū)動程序框架,著重介紹了驅(qū)動程序的機(jī)制及這些機(jī)制的實現(xiàn)方法;在設(shè)計的整體上重點地考慮了驅(qū)動程序的可維護(hù)性及可移轉(zhuǎn)性。采用這種方式建立起來的驅(qū)動程序代碼的可讀性好,可維護(hù)性強(qiáng),而且可以方便地移植到其他的應(yīng)用場合。


上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉