国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種QNX系統(tǒng)的USB驅(qū)動(dòng)加載方法與流程

      文檔序號:12824405閱讀:1295來源:國知局

      本發(fā)明涉及qnx軟件技術(shù)領(lǐng)域,尤其涉及一種qnx系統(tǒng)的usb驅(qū)動(dòng)加載方法。



      背景技術(shù):

      qnx系統(tǒng)是由加拿大qssl公司(qnxsoftwaresystemltd.)開發(fā)的分布式實(shí)時(shí)操作系統(tǒng),以其穩(wěn)定著稱,因此非常適合作用對穩(wěn)定性要求較高的車載信息系統(tǒng)的操作系統(tǒng)。

      usb作為車機(jī)系統(tǒng)上一個(gè)重要的娛樂模塊,備受終端用戶關(guān)注,usb設(shè)備在某些情況下,如反復(fù)插拔、反復(fù)開關(guān)機(jī)accon/off,或者是cpu占用率很高時(shí),usb驅(qū)動(dòng)可能會(huì)出現(xiàn)加載不正常的情況。

      因此,現(xiàn)有技術(shù)有待進(jìn)一步改進(jìn)。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明提供一種qnx系統(tǒng)的usb驅(qū)動(dòng)加載方法,旨在解決現(xiàn)有技術(shù)中的缺陷,實(shí)現(xiàn)usb驅(qū)動(dòng)的準(zhǔn)確加載。

      為達(dá)到上述目的,本發(fā)明所采取的技術(shù)方案為:

      s1、系統(tǒng)啟動(dòng),首次讀取usb設(shè)備寄存器,獲取usb設(shè)備初始狀態(tài)并保存,啟動(dòng)usb狀態(tài)監(jiān)測線程;

      s2、以預(yù)設(shè)周期t監(jiān)測usb設(shè)備的插拔狀態(tài),若檢測到usb設(shè)備已插入,則進(jìn)入下一步;

      s3、判斷是否為usb存儲設(shè)備,是則進(jìn)入下一步,否則進(jìn)入步驟s7;

      s4、監(jiān)測usb設(shè)備安裝狀態(tài)是否ok,是則進(jìn)入步驟s5,否則進(jìn)入步驟s6;

      s5、檢測在預(yù)設(shè)時(shí)間t1內(nèi)usb設(shè)備目錄下的相應(yīng)pps文件是否創(chuàng)建成功,是則進(jìn)入步驟s6,否則進(jìn)入步驟s7;

      s6、檢測在預(yù)設(shè)時(shí)間t2內(nèi)usb盤符路徑是否創(chuàng)建成功,是則進(jìn)入步驟s12,否則進(jìn)入步驟s7;

      s7、判斷usb驅(qū)動(dòng)加載失?。?/p>

      s8、發(fā)送預(yù)設(shè)usb驅(qū)動(dòng)錯(cuò)誤診斷碼;

      s9、接收所述預(yù)設(shè)usb驅(qū)動(dòng)錯(cuò)誤診斷碼,結(jié)束當(dāng)前usb驅(qū)動(dòng)進(jìn)程;

      s10、判斷模擬usb驅(qū)動(dòng)進(jìn)程拉起是否成功,是則返回步驟s3,否則進(jìn)入下一步;

      s11、判斷為不可識別的設(shè)備,返回步驟s2;

      s12、usb設(shè)備驅(qū)動(dòng)加載成功,返回步驟s2。

      具體地,所述判斷是否為usb存儲設(shè)備,包括如下步驟:

      步驟301、檢測usb設(shè)備版本目錄下的版本pps文件是否生成;

      步驟302、判斷所述版本pps文件中的設(shè)備數(shù)目是否為1,是則進(jìn)入下一步;

      步驟303、判斷所述版本pps文件中的classid是否為預(yù)設(shè)值,是則判斷為usb設(shè)備,否則判斷為非usb設(shè)備。

      具體地,所述判斷模擬usb驅(qū)動(dòng)進(jìn)程拉起是否成功,包括如下步驟:

      步驟1001、檢測模擬usb驅(qū)動(dòng)進(jìn)程拉起次數(shù)是否超過預(yù)設(shè)次數(shù)n,是則判斷為不可識別的設(shè)備,否則進(jìn)入下一步;

      步驟1002、開始模擬usb驅(qū)動(dòng)進(jìn)程拉起,當(dāng)監(jiān)測到usb設(shè)備寄存器的狀態(tài)由插入變?yōu)榘纬鰰r(shí),將其判斷為模擬usb驅(qū)動(dòng)進(jìn)程拉起運(yùn)行中;

      步驟1003、當(dāng)監(jiān)測到usb設(shè)備寄存器的狀態(tài)由拔出變?yōu)椴迦霑r(shí),判斷模擬usb驅(qū)動(dòng)進(jìn)程拉起結(jié)束,并返回步驟3。

      具體地,所述預(yù)設(shè)周期t=2s。

      具體地,所述預(yù)設(shè)時(shí)間t1=5s。

      具體地,所述預(yù)設(shè)時(shí)間t2=5s。

      具體地,所述預(yù)設(shè)次數(shù)n=3。

      本發(fā)明的有益效果在于:本發(fā)明通過檢測usb的插拔狀態(tài),當(dāng)檢測到usb驅(qū)動(dòng)加載失敗后,發(fā)送預(yù)設(shè)usb驅(qū)動(dòng)錯(cuò)誤診斷碼,結(jié)束當(dāng)前usb驅(qū)動(dòng)進(jìn)程,然后模擬usb驅(qū)動(dòng)進(jìn)程拉起,實(shí)現(xiàn)usb設(shè)備驅(qū)動(dòng)的重新加載。

      附圖說明

      圖1是本發(fā)明的qnx系統(tǒng)的usb驅(qū)動(dòng)加載的流程示意圖。

      具體實(shí)施方式

      下面結(jié)合附圖具體闡明本發(fā)明的實(shí)施方式,附圖僅供參考和說明使用,不構(gòu)成對本發(fā)明專利保護(hù)范圍的限制。

      請參見圖1,本實(shí)施例提供的qnx系統(tǒng)的usb驅(qū)動(dòng)加載方法,主要包括以下步驟:

      步驟1、系統(tǒng)啟動(dòng),首次讀取usb設(shè)備寄存器,獲取usb設(shè)備初始狀態(tài)并保存,啟動(dòng)usb狀態(tài)監(jiān)測線程。

      所述usb設(shè)備初始狀態(tài)為插入或者拔出。

      步驟2、以預(yù)設(shè)周期t監(jiān)測usb設(shè)備的插拔狀態(tài),若檢測到usb設(shè)備已插入,則進(jìn)入下一步。

      在本實(shí)施例中,所述預(yù)設(shè)周期t=2s。

      在具體實(shí)施時(shí),所述監(jiān)測usb設(shè)備的插拔狀態(tài)通過讀取usb設(shè)備寄存器來實(shí)現(xiàn)。

      步驟3、判斷是否為usb存儲設(shè)備,是則進(jìn)入下一步,否則進(jìn)入步驟7。

      具體地,所述判斷是否為usb存儲設(shè)備,包括如下步驟:

      步驟301、檢測usb設(shè)備版本目錄下的版本pps文件是否生成。

      pps即persistentpusblish/subscribe的縮寫,是qnx系統(tǒng)特有的多進(jìn)程間的一種通訊方式。pps文件是一個(gè)文件節(jié)點(diǎn)信息,里面記錄了一些狀態(tài)信息。

      在本實(shí)施例中,所述usb設(shè)備版本目錄為/pps/qnx/driver,該目錄在qnx系統(tǒng)在usb設(shè)備已插入的情況下,會(huì)生成的一個(gè)版本pps文件。例如,

      /pps/qnx/driver/usb-1.0.1的pps文件記錄的就是當(dāng)前的usb的1.0.1版本usb設(shè)備的狀態(tài)信息。

      步驟302、判斷所述版本pps文件中的設(shè)備數(shù)目是否為1,是則進(jìn)入下一步。

      步驟303、判斷所述版本pps文件中的classid是否為預(yù)設(shè)值,是則判斷為usb設(shè)備,否則判斷為非usb設(shè)備。

      按照usb通訊協(xié)議,usb的classid=0x08。

      步驟4、監(jiān)測usb設(shè)備安裝狀態(tài)是否ok,是則進(jìn)入步驟5,否則進(jìn)入步驟6。

      在具體實(shí)施時(shí),通過檢測/pps/qnx/mount節(jié)點(diǎn)是否生成來判斷usb設(shè)備安裝狀態(tài)是否已ok。

      步驟5、檢測在預(yù)設(shè)時(shí)間t1內(nèi)usb設(shè)備目錄下的相應(yīng)pps文件是否創(chuàng)建成功,是則進(jìn)入步驟6,否則進(jìn)入步驟7。

      在本實(shí)施例中,所述預(yù)設(shè)時(shí)間t1=5s。

      在本實(shí)施例中,使用linux的select函數(shù)來監(jiān)控usb設(shè)備版本目錄(/pps/qnx/device)、usb設(shè)備驅(qū)動(dòng)目錄(/pps/qnx/driver)及pps文件是否已經(jīng)生成。

      步驟6、檢測在預(yù)設(shè)時(shí)間t2內(nèi)usb盤符路徑是否創(chuàng)建成功,是則進(jìn)入步驟12,否則進(jìn)入步驟7。

      在本實(shí)施例中,所述預(yù)設(shè)時(shí)間t2=5s。

      步驟7、判斷usb驅(qū)動(dòng)加載失敗。

      步驟8、發(fā)送預(yù)設(shè)usb驅(qū)動(dòng)錯(cuò)誤診斷碼。

      步驟9、接收所述預(yù)設(shè)usb驅(qū)動(dòng)錯(cuò)誤診斷碼,結(jié)束當(dāng)前usb驅(qū)動(dòng)進(jìn)程。

      在具體實(shí)施時(shí),qnx系統(tǒng)通過資源管理器接收所述預(yù)設(shè)usb驅(qū)動(dòng)錯(cuò)誤診斷碼,執(zhí)行相應(yīng)腳本結(jié)束所述當(dāng)前usb驅(qū)動(dòng)進(jìn)程。

      在具體實(shí)施時(shí),所述usb驅(qū)動(dòng)進(jìn)程是指usblauncher,它是qnx系統(tǒng)負(fù)責(zé)加載usb驅(qū)動(dòng)的進(jìn)程。

      步驟10、判斷模擬usb驅(qū)動(dòng)進(jìn)程拉起是否成功,是則返回步驟3,否則進(jìn)入下一步。

      在本實(shí)施例中,所述判斷模擬usb驅(qū)動(dòng)進(jìn)程拉起是否成功,包括如下步驟:

      步驟1001、檢測模擬usb驅(qū)動(dòng)進(jìn)程拉起次數(shù)是否超過預(yù)設(shè)次數(shù)n,是則判斷為不可識別的設(shè)備,否則進(jìn)入下一步。

      在本實(shí)施例中,所述預(yù)設(shè)次數(shù)n=3。

      步驟1002、開始模擬usb驅(qū)動(dòng)進(jìn)程拉起,當(dāng)監(jiān)測到usb設(shè)備寄存器的狀態(tài)由插入變?yōu)榘纬鰰r(shí),將其判斷為模擬usb驅(qū)動(dòng)進(jìn)程拉起運(yùn)行中;

      步驟1003、當(dāng)監(jiān)測到usb設(shè)備寄存器的狀態(tài)由拔出變?yōu)椴迦霑r(shí),判斷模擬usb驅(qū)動(dòng)進(jìn)程拉起結(jié)束,并返回步驟3。

      在重新啟動(dòng)usb驅(qū)動(dòng)進(jìn)程的過程中,最開始讀取usb設(shè)備寄存器時(shí),讀取到的值為0,表示usb設(shè)備已拔出,然后寄存器讀取到的值變?yōu)?,表示usb設(shè)備已插入;但實(shí)際上所述usb設(shè)備并未真正拔下然后插入,因此為了將重新啟動(dòng)usb驅(qū)動(dòng)進(jìn)程的過程與usb的物理拔插的過程區(qū)分,定義了重新啟動(dòng)usb驅(qū)動(dòng)進(jìn)程的過程中的三種狀態(tài):模擬usb驅(qū)動(dòng)進(jìn)程拉起開始、模擬usb驅(qū)動(dòng)進(jìn)程拉起運(yùn)行中、模擬usb驅(qū)動(dòng)進(jìn)程拉起結(jié)束,從而實(shí)現(xiàn)重新啟動(dòng)usb驅(qū)動(dòng)進(jìn)程的目的。

      步驟11、判斷為不可識別的設(shè)備,返回步驟2。

      步驟12、usb設(shè)備驅(qū)動(dòng)加載成功,返回步驟2。

      以上所揭露的僅為本發(fā)明的較佳實(shí)施例,不能以此來限定本發(fā)明的權(quán)利保護(hù)范圍,因此依本發(fā)明申請專利范圍所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1