基于USB總線(xiàn)的實(shí)時(shí)數據采集系統設計
2 系統軟件設計
系統軟件包括USB設備驅動(dòng)程序、設備固件、應用程序。
2.1 USB設備驅動(dòng)程序開(kāi)發(fā)
即插即用管理模塊實(shí)現USB設備的熱插拔及動(dòng)態(tài)配置。當硬件檢測到USB設備接入時(shí),Winodws98查找響應的驅動(dòng)程序,并調用它的DriverEntry例程,PnP管理器調用驅動(dòng)程序的AddDevice例程,告訴它添加了一個(gè)設備;然后,驅動(dòng)程序為USB設備建立一個(gè)FDO(功能設備對象),在此處理過(guò)程中,驅動(dòng)程序收到一個(gè)IRP_MN_START_DEVICE的IRP,包括設備分配的資源信息。至此,設備被正確配置,驅動(dòng)程序開(kāi)始與硬件進(jìn)行對話(huà)。當然,在設備運行過(guò)程中,如果設備的狀態(tài)發(fā)生變化(拔除、暫停等),PnP管理器也同樣發(fā)出相應的IRP,由驅動(dòng)程序進(jìn)行相應的處理。
電源管理模塊負責設備的掛起與喚醒。
I/O功能實(shí)現模塊完成I/O請求的大部工作。當應用程序提出I/O請求時(shí),它調用Win32 API函數DeviceIoControl來(lái)向設備發(fā)出命令。然后,由I/O管理器構成一個(gè)IRP并設置其MajorFunction域為IRP_MJ_DEVICE_CONTROL。USB設備驅動(dòng)程序收到該IRP后,取出其中的控制碼,并利用一個(gè)開(kāi)關(guān)語(yǔ)句來(lái)找到對應的例程入口。
2.2 設備固件(firmware)設計
設備固件是設備運行的核心,采用匯編語(yǔ)言設計。其主要功能是控制芯片USB9602接受并處理USB驅動(dòng)程序的請求(如請求設備描述符、請求或設置設備狀態(tài)、請求設備設置、請求或設置設備接口等供10種USB1.1標準請求);控制芯片USB962接受應用程序的控制指令;控制A/D模塊的數據采集;通過(guò)USB9602存儲數據并實(shí)時(shí)上傳PC。其程序主框圖如圖5所示。
在圖5中,ALT事件表示硬件檢測到USBN96902處于下列狀態(tài):Reset、Resume、Suspend,由ALTEV寄存器匯報并產(chǎn)生中斷。
評論