嵌入式系統(tǒng)U盤實時啟動技術
函數(shù)usbdInitialize()初始化內部USBD數(shù)據(jù)結構,并依次調用其他USB驅動棧模塊的入口。
函數(shù)usbdlnitialize()調用usbdHcdAttach(execFunc,s1811IOCfg,pToken)把HCD連接到USBD上。這里的execFunc就是函數(shù)usbHcdSl811hExee()。
函數(shù)usbdInitialize()調用USBEnumerate(USBD_CLIENT_HANDLE clientHandle,F(xiàn)ILE*fout)列舉所有連接到系統(tǒng)上的USB主控制器、Hub和USB設備。
(3)初始化USB存儲設備的函數(shù)
函數(shù)usbBulkDevInit()完成USB盤的初始化并安裝DOS文件系統(tǒng)。
函數(shù)usbBulkDevlnit調用函數(shù)usbdClientRegister(BULK_CLASS,usbdHandle)及函數(shù)usbdDynamicAt-tachRegister(usbdHandle,USB_CLASS_MASS_STORAGE,USB_SUBCLASS_SCSLCOMMAND_SET,USB_INTERFACE_PROTOCOL_BULK_ONLY,usbBulkDc-vAttachCallback),建立同USB的連接,注冊回調例程。
函數(shù)usbBulkDevlnit調用函數(shù)OSS_THREAI)_CRE-ATE(bulkClientThread,(pVOID) fout,OSS_PRIORITYINTERRUPT,tBulkClnt,bulkTaskId),創(chuàng)建一個任務,管理優(yōu)盤的插入和移出。
其中bulkCliemThread例程調用pBulkBlkDev=(BLK_DEV*)usbBulkBlkDevCreate (bulkNodeld,NULL,NULL,USB_SCSI_FLAG_READ_WRITEl0);安裝USB設備。 調用pBulkDosVol=dosFsDevInit(/ud0/,pButkBlkDev,NULL);安裝DOS文件系統(tǒng)。
(4)從優(yōu)盤加載映像文件的函數(shù)
設計USBDLoad(),實現(xiàn)映像文件VxWorks從優(yōu)盤設備加載。USBDLoad()函數(shù)主要包括以下語句:
修改bootConfig.c文件中的bootLoad函數(shù),加入對從優(yōu)盤啟動的支持。主要加入以下語句:
重新編譯、鏈接生成新的bootrom.hex,燒錄到板子上的Flash中,將VxWorks映像文件拷貝到優(yōu)盤上,將優(yōu)盤插入到嵌入式主機的USB接口上。在啟動的過程中,系統(tǒng)會自動裝載優(yōu)盤的VxWorks系統(tǒng)映像文件,實現(xiàn)基于VxWorks的嵌入式實時系統(tǒng)優(yōu)盤啟動。
3 總 結
在基于MPC860和VxWorks設計的嵌入式實驗板上可實現(xiàn)嵌入式實時系統(tǒng)從優(yōu)盤的啟動。當然,在實際應用中還可以將嵌入式實時系統(tǒng)采集到的數(shù)據(jù)保存到優(yōu)盤上,這樣能方便地實現(xiàn)嵌入式設備和PC機設備資源的共享。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論