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