基于VxWorks的VME從板驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)
2 數(shù)據(jù)采集板的硬件結(jié)構(gòu)抽象
從主板的VME地址空間上看從板的結(jié)構(gòu)圖如圖3所示。本文引用地址:http://cafeforensic.com/article/159333.htm
這樣的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)實(shí)現(xiàn)了對(duì)從板的抽象,使得驅(qū)動(dòng)程序具有良好的可移植性,方便的實(shí)現(xiàn)對(duì)多種板卡的驅(qū)動(dòng)。
3.2 數(shù)據(jù)傳輸機(jī)制設(shè)計(jì)
驅(qū)動(dòng)程序設(shè)計(jì)模仿了Linux操作系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)傳輸?shù)臋C(jī)制——查詢機(jī)制,數(shù)據(jù)傳輸?shù)淖枞麢C(jī)制及信號(hào)通知機(jī)制。
查詢機(jī)制主要是指驅(qū)動(dòng)程序?yàn)閼?yīng)用程序提供查詢緩沖區(qū)標(biāo)志的接口,應(yīng)用程序可以隨時(shí)查詢緩沖區(qū)的狀態(tài)而不會(huì)引起任務(wù)狀態(tài)的變化;阻塞機(jī)制是調(diào)用獲取緩沖區(qū)的任務(wù)在緩沖區(qū)沒有數(shù)據(jù)時(shí)會(huì)使該任務(wù)處于阻塞狀態(tài),直到緩沖區(qū)數(shù)據(jù)可用獲得后,任務(wù)才會(huì)重新獲得運(yùn)行;信號(hào)機(jī)制是應(yīng)用程序預(yù)先設(shè)定一個(gè)信號(hào)處理函數(shù),當(dāng)緩沖區(qū)有數(shù)據(jù)時(shí),系統(tǒng)就會(huì)自動(dòng)調(diào)用這個(gè)信號(hào)處理函數(shù)而完成用戶預(yù)定的操作;阻塞機(jī)制的任務(wù)圖示如圖4所示,這些機(jī)制的細(xì)節(jié)可用參考文獻(xiàn)。要實(shí)現(xiàn)這些功能需要實(shí)現(xiàn)中斷處理機(jī)制、字符設(shè)備操作的ioctrl方法和read方法。
4 驅(qū)動(dòng)程序的實(shí)現(xiàn)
4.1 中斷程序的實(shí)現(xiàn)
中斷程序的實(shí)現(xiàn)上使用了上、下兩半部機(jī)制,上半部是中斷處理函數(shù),下半部是中斷處理任務(wù),上、下兩半部使用信號(hào)量進(jìn)行同步,其中功能性的操作主要安排在中斷處理任務(wù)中。其程序框架如圖5所示。在中斷任務(wù)中實(shí)現(xiàn)對(duì)數(shù)據(jù)緩沖區(qū)的操作及緩沖區(qū)標(biāo)志操作,實(shí)現(xiàn)操作的過程中著重解決與ioctrl方法和read方法進(jìn)行同步。
評(píng)論