固件刷新方法及裝置制造方法
【專利摘要】本公開(kāi)是關(guān)于一種固件刷新方法及裝置,屬于智能設(shè)備領(lǐng)域。所述方法包括:在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在啟動(dòng)階段之前與電子設(shè)備相連的接入設(shè)備是否為免驅(qū)設(shè)備;若檢測(cè)出接入設(shè)備為免驅(qū)設(shè)備,則將接入設(shè)備中的更新固件寫(xiě)入電子設(shè)備中;在電子設(shè)備處于重啟之后的正常運(yùn)行階段時(shí),運(yùn)行寫(xiě)入電子設(shè)備中的更新固件。本公開(kāi)可解決當(dāng)電子設(shè)備中未安裝相應(yīng)的驅(qū)動(dòng)程序時(shí),將不能讀取專業(yè)刷機(jī)工具中的固件,導(dǎo)致固件刷新失敗的問(wèn)題,可達(dá)到簡(jiǎn)化固件刷新過(guò)程,提高固件刷新成功率的效果。
【專利說(shuō)明】固件刷新方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本公開(kāi)設(shè)及智能設(shè)備領(lǐng)域,特別設(shè)及一種固件刷新方法及裝置。
【背景技術(shù)】
[0002] 固件作為電子設(shè)備中最基礎(chǔ)的軟件,保證著電子設(shè)備的正常工作,但是某些外因 會(huì)導(dǎo)致固件出現(xiàn)問(wèn)題,影響電子設(shè)備的正常工作。
[0003] 當(dāng)電子設(shè)備的固件出現(xiàn)問(wèn)題時(shí),需要使用專用刷機(jī)工具對(duì)固件進(jìn)行刷新。在更新 固件時(shí),通常是將專用刷機(jī)工具接入電子設(shè)備,電子設(shè)備通過(guò)運(yùn)行與該專業(yè)刷機(jī)工具相對(duì) 應(yīng)的驅(qū)動(dòng)程序來(lái)讀取專用刷機(jī)工具中的固件,實(shí)現(xiàn)對(duì)原有固件的刷新。
[0004] 公開(kāi)人在實(shí)現(xiàn)本公開(kāi)的過(guò)程中,發(fā)現(xiàn)上述方式至少存在如下缺陷;當(dāng)電子設(shè)備中 未安裝相應(yīng)的驅(qū)動(dòng)程序時(shí),將不能讀取專業(yè)刷機(jī)工具中的固件,導(dǎo)致固件刷新失敗。
【發(fā)明內(nèi)容】
[0005] 為了解決相關(guān)技術(shù)中當(dāng)電子設(shè)備中未安裝相應(yīng)的驅(qū)動(dòng)程序時(shí),將不能讀取專業(yè)刷 機(jī)工具中的固件,導(dǎo)致固件刷新失敗的問(wèn)題,本公開(kāi)實(shí)施例提供了一種固件刷新方法及裝 置,所述技術(shù)方案如下:
[0006] 根據(jù)本公開(kāi)實(shí)施例的第一方面,提供一種固件刷新方法,所述方法包括:
[0007] 在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在所述啟動(dòng)階段之前與所述電子設(shè)備相連的接 入設(shè)備是否為免驅(qū)設(shè)備;
[000引若檢測(cè)出所述接入設(shè)備為免驅(qū)設(shè)備,則將所述接入設(shè)備中的更新固件寫(xiě)入所述電 子設(shè)備中;
[0009] 在所述電子設(shè)備處于重啟之后的正常運(yùn)行階段時(shí),運(yùn)行寫(xiě)入所述電子設(shè)備中的所 述更新固件。
[0010] 可選的,所述檢測(cè)在所述啟動(dòng)階段之前與所述電子設(shè)備相連的接入設(shè)備是否為免 驅(qū)設(shè)備,包括:
[0011] 獲取在所述啟動(dòng)階段之前與所述電子設(shè)備相連的所述接入設(shè)備的接口描述符信 息;
[0012] 當(dāng)所述接口描述符信息指示所述接入設(shè)備為大容量存儲(chǔ)設(shè)備時(shí),獲取所述接入設(shè) 備的設(shè)備類型信息;
[0013] 當(dāng)所述設(shè)備類型信息指示所述接入設(shè)備的設(shè)備類型為免驅(qū)類型時(shí),確定所述接入 設(shè)備為所述免驅(qū)設(shè)備。
[0014] 可選的,所述將所述接入設(shè)備中的更新固件寫(xiě)入所述電子設(shè)備中,包括:
[0015] 從所述接入設(shè)備中獲取所述更新固件的存儲(chǔ)地址;
[0016] 確定所述電子設(shè)備中的固件存儲(chǔ)區(qū)域;
[0017] 將所述存儲(chǔ)地址中存儲(chǔ)的所述更新固件寫(xiě)入所述固件存儲(chǔ)區(qū)域中。
[0018] 可選的,所述從所述接入設(shè)備中獲取所述更新固件的存儲(chǔ)地址,包括:
[0019] 讀取所述接入設(shè)備的特定扇區(qū)中的信息;
[0020] 根據(jù)所述特定扇區(qū)中的信息判斷所述接入設(shè)備是否采用了特定文件系統(tǒng);
[002U 若判斷出所述接入設(shè)備采用了特定文件系統(tǒng),則將預(yù)定存儲(chǔ)地址確定為所述更新 固件的存儲(chǔ)地址;
[0022] 若判斷出所述接入設(shè)備未采用特定文件系統(tǒng),則根據(jù)所述特定扇區(qū)中的信息攜帶 的元信息確定所述更新固件的存儲(chǔ)地址,所述元信息包括所述更新固件的起始地址和數(shù)據(jù) 長(zhǎng)度。
[0023] 可選的,所述將所述存儲(chǔ)地址中存儲(chǔ)的所述更新固件寫(xiě)入所述固件存儲(chǔ)區(qū)域中, 包括:
[0024] 當(dāng)所述接入設(shè)備中包含一個(gè)所述固件存儲(chǔ)區(qū)域時(shí),將所述更新固件替換所述固件 存儲(chǔ)區(qū)域中存儲(chǔ)的原始固件;
[0025] 當(dāng)所述接入設(shè)備中包含至少兩個(gè)所述固件存儲(chǔ)區(qū)域時(shí),將所述更新固件寫(xiě)入其中 置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中,所述置為非活躍區(qū)的固件存儲(chǔ)區(qū)域用于存儲(chǔ)所述電子設(shè) 備不運(yùn)行的固件。
[0026] 可選的,所述方法,還包括:
[0027] 檢測(cè)所述更新固件是否被正確寫(xiě)入所述置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中;
[002引若檢測(cè)出所述更新固件已經(jīng)被正確寫(xiě)入所述置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中,貝U 將原來(lái)置為活躍區(qū)的固件存儲(chǔ)區(qū)域置為非活躍區(qū),將正確寫(xiě)入所述更新固件的所述固件存 儲(chǔ)區(qū)域置為活躍區(qū),所述置為活躍區(qū)的固件存儲(chǔ)區(qū)域用于存儲(chǔ)所述電子設(shè)備處于正常運(yùn)行 階段時(shí)運(yùn)行的固件。
[0029] 根據(jù)本公開(kāi)實(shí)施例的第二方面,提供一種固件刷新裝置,所述裝置包括:
[0030] 設(shè)備檢測(cè)模塊,被配置為在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在所述啟動(dòng)階段之前 與所述電子設(shè)備相連的接入設(shè)備是否為免驅(qū)設(shè)備;
[0031] 固件寫(xiě)入模塊,被配置為當(dāng)所述設(shè)備檢測(cè)模塊檢測(cè)出所述接入設(shè)備為免驅(qū)設(shè)備 時(shí),將所述接入設(shè)備中的更新固件寫(xiě)入所述電子設(shè)備中;
[0032] 固件運(yùn)行模塊,被配置為在所述電子設(shè)備處于重啟之后的正常運(yùn)行階段時(shí),運(yùn)行 所述固件寫(xiě)入模塊寫(xiě)入所述電子設(shè)備中的所述更新固件。
[0033] 所述設(shè)備檢測(cè)模塊,包括:
[0034] 第一信息獲取子模塊,被配置為獲取在所述啟動(dòng)階段之前與所述電子設(shè)備相連的 所述接入設(shè)備的接口描述符信息;
[0035] 第二信息獲取子模塊,被配置為當(dāng)所述第一信息獲取子模塊獲取的所述接口描述 符信息指示所述接入設(shè)備為大容量存儲(chǔ)設(shè)備時(shí),獲取所述接入設(shè)備的設(shè)備類型信息;
[0036] 設(shè)備確定子模塊,被配置為當(dāng)所述第二信息獲取子模塊獲取的所述設(shè)備類型信息 指示所述接入設(shè)備的設(shè)備類型為免驅(qū)類型時(shí),確定所述接入設(shè)備為所述免驅(qū)設(shè)備。
[0037] 可選的,所述固件寫(xiě)入模塊,包括:
[003引地址獲取子模塊,被配置為從所述接入設(shè)備中獲取所述更新固件的存儲(chǔ)地址;
[0039] 區(qū)域確定子模塊,被配置為確定所述電子設(shè)備中的固件存儲(chǔ)區(qū)域;
[0040] 固件寫(xiě)入子模塊,被配置為將所述地址獲取子模塊獲取到的所述存儲(chǔ)地址中存儲(chǔ) 的所述更新固件寫(xiě)入所述區(qū)域確定子模塊確定的所述固件存儲(chǔ)區(qū)域中。
[0041] 可選的,所述地址獲取子模塊,包括:
[0042] 扇區(qū)信息讀取子模塊,被配置為讀取所述接入設(shè)備的特定扇區(qū)中的信息;
[0043] 系統(tǒng)判斷子模塊,被配置為根據(jù)所述扇區(qū)信息讀取子模塊獲取的所述特定扇區(qū)中 的信息判斷所述接入設(shè)備是否采用了特定文件系統(tǒng);
[0044] 第一確定子模塊,被配置為當(dāng)所述系統(tǒng)判斷子模塊判斷出所述接入設(shè)備采用了特 定文件系統(tǒng)時(shí),將預(yù)定存儲(chǔ)地址確定為所述更新固件的存儲(chǔ)地址;
[0045] 第二確定子模塊,被配置為當(dāng)所述系統(tǒng)判斷子模塊判斷出所述接入設(shè)備未采用特 定文件系統(tǒng)時(shí),根據(jù)所述特定扇區(qū)中的信息攜帶的元信息確定所述更新固件的存儲(chǔ)地址, 所述元信息包括所述更新固件的起始地址和數(shù)據(jù)長(zhǎng)度。
[0046] 可選的,所述固件寫(xiě)入子模塊,包括:
[0047] 第一寫(xiě)入子模塊,被配置為當(dāng)所述接入設(shè)備中包含一個(gè)所述固件存儲(chǔ)區(qū)域時(shí),將 所述更新固件替換所述固件存儲(chǔ)區(qū)域中存儲(chǔ)的原始固件;
[0048] 第二寫(xiě)入子模塊,被配置為當(dāng)所述接入設(shè)備中包含至少兩個(gè)所述固件存儲(chǔ)區(qū)域 時(shí),將所述更新固件寫(xiě)入其中置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中,所述置為非活躍區(qū)的固件 存儲(chǔ)區(qū)域用于存儲(chǔ)所述電子設(shè)備不運(yùn)行的固件。
[0049] 可選的,所述裝置,還包括:
[0化0] 固件檢測(cè)模塊,被配置為檢測(cè)所述更新固件是否被正確寫(xiě)入所述置為非活躍區(qū)的 固件存儲(chǔ)區(qū)域中;
[0化1] 區(qū)域設(shè)置模塊,被配置為當(dāng)所述固件檢測(cè)模塊檢測(cè)出所述更新固件已經(jīng)被正確寫(xiě) 入所述置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中時(shí),將原來(lái)置為活躍區(qū)的固件存儲(chǔ)區(qū)域置為非活躍 區(qū),將正確寫(xiě)入所述更新固件的所述固件存儲(chǔ)區(qū)域置為活躍區(qū),所述置為活躍區(qū)的固件存 儲(chǔ)區(qū)域用于存儲(chǔ)所述電子設(shè)備處于正常運(yùn)行階段時(shí)運(yùn)行的固件。
[0化2] 根據(jù)本公開(kāi)實(shí)施例的第=方面,提供一種固件刷新裝置,所述裝置包括:
[0化3] 處理器;
[0化4] 用于存儲(chǔ)所述處理器的可執(zhí)行指令的存儲(chǔ)器;
[0化5] 其中,所述處理器被配置為:
[0化6] 在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在所述啟動(dòng)階段之前與所述電子設(shè)備相連的接 入設(shè)備是否為免驅(qū)設(shè)備;
[0化7] 若檢測(cè)出所述接入設(shè)備為免驅(qū)設(shè)備,則將所述接入設(shè)備中的更新固件寫(xiě)入所述電 子設(shè)備中;
[0化引在所述電子設(shè)備處于重啟之后的正常運(yùn)行階段時(shí),運(yùn)行寫(xiě)入所述電子設(shè)備中的所 述更新固件。
[0化9] 本公開(kāi)實(shí)施例提供的技術(shù)方案可W包括W下有益效果:
[0060] 通過(guò)在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在啟動(dòng)階段之前與電子設(shè)備相連的接入設(shè) 備是否為免驅(qū)設(shè)備;若檢測(cè)出接入設(shè)備為免驅(qū)設(shè)備,則將接入設(shè)備中的更新固件寫(xiě)入電子 設(shè)備中;在電子設(shè)備處于重啟之后的正常運(yùn)行階段時(shí),運(yùn)行寫(xiě)入電子設(shè)備中的更新固件; 使得電子設(shè)備中未安裝相應(yīng)驅(qū)動(dòng)時(shí),也可W通過(guò)免驅(qū)設(shè)備完成電子設(shè)備的固件刷新,解決 了當(dāng)電子設(shè)備中未安裝相應(yīng)的驅(qū)動(dòng)程序時(shí),將不能讀取專業(yè)刷機(jī)工具中的固件,導(dǎo)致固件 刷新失敗的問(wèn)題;達(dá)到了簡(jiǎn)化固件刷新過(guò)程,提高固件刷新成功率的效果。
[0061] 應(yīng)當(dāng)理解的是,W上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不 能限制本公開(kāi)。
【專利附圖】
【附圖說(shuō)明】
[0062] 此處的附圖被并入說(shuō)明書(shū)中并構(gòu)成本說(shuō)明書(shū)的一部分,示出了符合本公開(kāi)的實(shí)施 例,并與說(shuō)明書(shū)一起用于解釋本公開(kāi)的原理。
[0063] 圖1是本發(fā)明一個(gè)示例性實(shí)施例提供的固件刷新方法的方法流程圖;
[0064] 圖2是本發(fā)明另一個(gè)示例性實(shí)施例提供的固件刷新方法的方法流程圖;
[0065] 圖3是本發(fā)明一個(gè)示例性實(shí)施例提供的固件刷新裝置的結(jié)構(gòu)方框圖;
[0066] 圖4是本發(fā)明一個(gè)示例性實(shí)施例提供的固件刷新裝置的結(jié)構(gòu)方框圖;
[0067] 圖5是本發(fā)明一個(gè)示例性實(shí)施例提供的固件刷新裝置的結(jié)構(gòu)示意圖。
[0068] 通過(guò)上述附圖,已示出本公開(kāi)明確的實(shí)施例,后文中將有更詳細(xì)的描述。該些附圖 和文字描述并不是為了通過(guò)任何方式限制本公開(kāi)構(gòu)思的范圍,而是通過(guò)參考特定實(shí)施例為 本領(lǐng)域技術(shù)人員說(shuō)明本公開(kāi)的概念。
【具體實(shí)施方式】
[0069] 該里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述設(shè)及 附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。W下示例性實(shí)施例 中所描述的實(shí)施方式并不代表與本公開(kāi)相一致的所有實(shí)施方式。相反,它們僅是與如所附 權(quán)利要求書(shū)中所詳述的、本公開(kāi)的一些方面相一致的裝置和方法的例子。
[0070] 本發(fā)明各個(gè)實(shí)施例提供的固件刷新方法,可W由具有固件刷新功能的電子設(shè) 備實(shí)現(xiàn)。該電子設(shè)備可W是智能手機(jī)、智能電視、平板電腦、電子書(shū)閱讀器、MP3播放器 (Moving Pic1:ure Experts Group Audio Layer III,動(dòng)態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面 3) 和MP4 (Moving Pierre Experts Group Audio Layer IV,動(dòng)態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面 4)播放器等等。
[0071] 為了簡(jiǎn)化描述,下文中僅W固件刷新方法應(yīng)用于電子設(shè)備來(lái)舉例說(shuō)明,但對(duì)此不 構(gòu)成限定。
[0072] 圖1是根據(jù)一示例性實(shí)施例示出的一種固件刷新方法的方法流程圖,該固件刷新 方法可W適用于電子設(shè)備中,包括如下步驟。
[0073] 在步驟101中,在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在啟動(dòng)階段之前與電子設(shè)備相 連的接入設(shè)備是否為免驅(qū)設(shè)備。
[0074] 在步驟102中,若檢測(cè)出接入設(shè)備為免驅(qū)設(shè)備,則將接入設(shè)備中的更新固件寫(xiě)入 電子設(shè)備中。
[0075] 在步驟103中,在電子設(shè)備處于重啟之后的正常運(yùn)行階段時(shí),運(yùn)行寫(xiě)入電子設(shè)備 中的更新固件。
[0076] 可選的,檢測(cè)在啟動(dòng)階段之前與電子設(shè)備相連的接入設(shè)備是否為免驅(qū)設(shè)備,包括: 獲取在啟動(dòng)階段之前與電子設(shè)備相連的接入設(shè)備的接口描述符信息;
[0077] 當(dāng)接口描述符信息指示接入設(shè)備為大容量存儲(chǔ)設(shè)備時(shí),獲取接入設(shè)備的設(shè)備類型 信息;
[007引當(dāng)設(shè)備類型信息指示接入設(shè)備的設(shè)備類型為免驅(qū)類型時(shí),確定接入設(shè)備為所述免 驅(qū)設(shè)備。
[0079] 可選的,將接入設(shè)備中的更新固件寫(xiě)入所述電子設(shè)備中,包括:
[0080] 從接入設(shè)備中獲取更新固件的存儲(chǔ)地址;
[0081] 確定電子設(shè)備中的固件存儲(chǔ)區(qū)域;
[0082] 將存儲(chǔ)地址中存儲(chǔ)的更新固件寫(xiě)入固件存儲(chǔ)區(qū)域中。
[0083] 可選的,從接入設(shè)備中獲取所述更新固件的存儲(chǔ)地址,包括:
[0084] 讀取接入設(shè)備的特定扇區(qū)中的信息;
[0085] 根據(jù)特定扇區(qū)中的信息判斷接入設(shè)備是否采用了特定文件系統(tǒng);
[0086] 若判斷出接入設(shè)備采用了特定文件系統(tǒng),則將預(yù)定存儲(chǔ)地址確定為更新固件的存 儲(chǔ)地址;
[0087] 若判斷出接入設(shè)備未采用特定文件系統(tǒng),則根據(jù)特定扇區(qū)中的信息攜帶的元信息 確定更新固件的存儲(chǔ)地址,元信息包括更新固件的起始地址和數(shù)據(jù)長(zhǎng)度。
[008引可選的,將存儲(chǔ)地址中存儲(chǔ)的更新固件寫(xiě)入固件存儲(chǔ)區(qū)域中,包括:
[0089] 當(dāng)接入設(shè)備中包含一個(gè)固件存儲(chǔ)區(qū)域時(shí),將更新固件替換固件存儲(chǔ)區(qū)域中存儲(chǔ)的 原始固件;
[0090] 當(dāng)接入設(shè)備中包含至少兩個(gè)固件存儲(chǔ)區(qū)域時(shí),將更新固件寫(xiě)入其中置為非活躍區(qū) 的固件存儲(chǔ)區(qū)域中,置為非活躍區(qū)的固件存儲(chǔ)區(qū)域用于存儲(chǔ)電子設(shè)備不運(yùn)行的固件。
[0091] 可選的,還包括:檢測(cè)更新固件是否被正確寫(xiě)入置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中; 若檢測(cè)出更新固件已經(jīng)被正確寫(xiě)入置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中,則將原來(lái)置為活躍區(qū) 的固件存儲(chǔ)區(qū)域置為非活躍區(qū),將正確寫(xiě)入更新固件的固件存儲(chǔ)區(qū)域置為活躍區(qū),該置為 活躍區(qū)的固件存儲(chǔ)區(qū)域用于存儲(chǔ)電子設(shè)備處于正常運(yùn)行階段時(shí)運(yùn)行的固件。
[0092] 綜上所述,本實(shí)施例提供的固件刷新方法,通過(guò)在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè) 在啟動(dòng)階段之前與電子設(shè)備相連的接入設(shè)備是否為免驅(qū)設(shè)備;當(dāng)檢測(cè)出接入設(shè)備為免驅(qū)設(shè) 備時(shí),將接入設(shè)備中的更新固件寫(xiě)入電子設(shè)備中;在電子設(shè)備處于重啟之后的正常運(yùn)行階 段時(shí),運(yùn)行寫(xiě)入電子設(shè)備中的更新固件;使得電子設(shè)備中未安裝相應(yīng)驅(qū)動(dòng)時(shí),也可W通過(guò)免 驅(qū)設(shè)備完成電子設(shè)備的固件刷新,解決了當(dāng)電子設(shè)備中未安裝相應(yīng)的驅(qū)動(dòng)程序時(shí),將不能 讀取專業(yè)刷機(jī)工具中的固件,導(dǎo)致固件刷新失敗的問(wèn)題;達(dá)到了簡(jiǎn)化固件刷新過(guò)程,提高固 件刷新成功率的效果。
[0093] 圖2是根據(jù)另一示例性實(shí)施例示出的一種固件刷新方法的方法流程圖,該固件刷 新方法可W適用于電子設(shè)備中,包括如下步驟。
[0094] 在步驟201中,在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在啟動(dòng)階段之前與電子設(shè)備相 連的接入設(shè)備是否為免驅(qū)設(shè)備。
[0095] 電子設(shè)備未啟動(dòng)時(shí),接入設(shè)備通過(guò)電子設(shè)備提供的外部接口與電子設(shè)備相連,該 外部接口可W是電子設(shè)備上的USBOJniversal Serial Bus,通用串行總線)接口。當(dāng)電子 設(shè)備上沒(méi)有提供USB接口時(shí),電子設(shè)備也可W通過(guò)專用連接線與接入設(shè)備進(jìn)行連接。比如, 智能手機(jī)一類的電子設(shè)備中沒(méi)有提供USB接口,智能手機(jī)可W通過(guò)專用連接線與接入設(shè)備 進(jìn)行連接。
[0096] 電子設(shè)備與接入設(shè)備相連后,啟動(dòng)該電子設(shè)備。在啟動(dòng)階段,電子設(shè)備會(huì)檢測(cè)是否 連接了接入設(shè)備,當(dāng)檢測(cè)到連接了接入設(shè)備時(shí),電子設(shè)備會(huì)對(duì)該接入設(shè)備是否是免驅(qū)設(shè)備 進(jìn)行檢測(cè),免驅(qū)設(shè)備是指不需要特定的驅(qū)動(dòng)程序即可運(yùn)行的設(shè)備。其中,電子設(shè)備檢測(cè)接入 設(shè)備是否是免驅(qū)設(shè)備可W包括如下子步驟:
[0097] -、電子設(shè)備獲取在啟動(dòng)階段之前與電子設(shè)備相連的接入設(shè)備的接口描述符信 息。
[009引接入設(shè)備的接口描述符信息用于標(biāo)識(shí)接入設(shè)備的功能,電子設(shè)備通過(guò)獲取該接口 描述符信息來(lái)確定需要加載何種驅(qū)動(dòng)程序來(lái)驅(qū)動(dòng)該接入設(shè)備。該接口描述符信息包含接 口的基類類型、接口的子類類型和接口協(xié)議,電子設(shè)備通過(guò)接口枚舉,分別獲取該接口描述 符信息中的接口的基類類型、接口的子類類型和接口協(xié)議信息。比如,電子設(shè)備通過(guò)接口枚 舉,獲取到該接入設(shè)備的接口的基類類型為USB_CLASS_MASS_STORAGE,接口的子類類型為 USB_SCSI,接口 協(xié)議為 USB_PR_BULK。
[0099] 二、當(dāng)接口描述符信息指示接入設(shè)備為大容量存儲(chǔ)設(shè)備時(shí),電子設(shè)備獲取接入設(shè) 備的設(shè)備類型信息。
[0100] 電子設(shè)備對(duì)接口枚舉過(guò)程中獲取到的接口描述符信息進(jìn)行識(shí)別,當(dāng)該接口描述符 信息指示該接入設(shè)備為大容量存儲(chǔ)設(shè)備時(shí),電子設(shè)備將進(jìn)一步獲取該接入設(shè)備的設(shè)備類型 信息,該設(shè)備類型信息可W由電子設(shè)備發(fā)送SCSI (Small Computer System Inte;rface,小 型計(jì)算機(jī)系統(tǒng)接口)獲取指令獲得。
[0101] 比如,電子設(shè)備獲取到接入設(shè)備的接口描述符信息為接口的基類類型為USB_ CLASS_MASS_STORAGE,接口的子類類型為USB_SCSI,接口協(xié)議為USB_PR_BULK,即可確定該 接入設(shè)備為大容量存儲(chǔ)設(shè)備,電子設(shè)備發(fā)送SCSI獲取指令,并將獲取到的返回值確定為該 設(shè)備的設(shè)備類型信息。
[0102] =、當(dāng)設(shè)備類型信息指示接入設(shè)備的設(shè)備類型為免驅(qū)類型時(shí),電子設(shè)備確定接入 設(shè)備為免驅(qū)設(shè)備。
[0103] 其中,可W預(yù)先設(shè)置返回值與設(shè)備類型的對(duì)應(yīng)關(guān)系。比如,電子設(shè)備發(fā)送SCSI獲 取指令后,收到的返回值為0x00,根據(jù)該返回值和對(duì)應(yīng)關(guān)系,電子設(shè)備可W確定該接入設(shè)備 為U盤(pán),屬于免驅(qū)類型,即可確定該接入設(shè)備為免驅(qū)設(shè)備。
[0104] 在步驟202中,從接入設(shè)備中獲取更新固件的存儲(chǔ)地址。
[0105] 由于確定了該接入設(shè)備為免驅(qū)設(shè)備,電子設(shè)備不需要使用特定的驅(qū)動(dòng)即可讀取該 接入設(shè)備中存儲(chǔ)的更新固件。在讀取更新固件時(shí),由于接入設(shè)備采用的文件系統(tǒng)類型的不 同,對(duì)應(yīng)的更新固件的存儲(chǔ)地址也不相同,所W電子設(shè)備需要根據(jù)接入設(shè)備的文件系統(tǒng)類 型確定該更新固件的存儲(chǔ)地址。該步驟可W包括如下子步驟:
[0106] 一、電子設(shè)備讀取接入設(shè)備的特定扇區(qū)中的信息。
[0107] 不同的文件系統(tǒng)對(duì)應(yīng)的特定扇區(qū)中的信息的存儲(chǔ)格式不同,所W電子設(shè)備可W通 過(guò)讀取接入設(shè)備的特定扇區(qū)中的信息來(lái)確定接入設(shè)備的文件系統(tǒng)。需要說(shuō)明的是,電子設(shè) 備通常讀取接入設(shè)備的第一個(gè)扇區(qū)中的信息。
[0108] 二、電子設(shè)備根據(jù)特定扇區(qū)中的信息判斷接入設(shè)備是否采用了特定文件系統(tǒng)。
[0109] 在電子設(shè)備根據(jù)讀取到的特定扇區(qū)中的信息確定接入設(shè)備采用的文件系統(tǒng)類型 時(shí),該電子設(shè)備中預(yù)先存儲(chǔ)有特定扇區(qū)中的信息與文件系統(tǒng)類型的對(duì)應(yīng)關(guān)系表,電子設(shè)備 根據(jù)讀取到的特定扇區(qū)中的信息查找對(duì)應(yīng)的文件系統(tǒng)類型,當(dāng)能夠查找到對(duì)應(yīng)的文件系統(tǒng) 類型時(shí),即可確定該接入設(shè)備采用了特定文件系統(tǒng)。其中,特定扇區(qū)中的信息與文件系統(tǒng)類 型的對(duì)應(yīng)關(guān)系表的表結(jié)構(gòu)可W如表一所示:
[0110] 表一
[0111]
【權(quán)利要求】
1. 一種固件刷新方法,其特征在于,所述方法包括: 在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在所述啟動(dòng)階段之前與所述電子設(shè)備相連的接入設(shè) 備是否為免驅(qū)設(shè)備; 若檢測(cè)出所述接入設(shè)備為免驅(qū)設(shè)備,則將所述接入設(shè)備中的更新固件寫(xiě)入所述電子設(shè) 備中; 在所述電子設(shè)備處于重啟之后的正常運(yùn)行階段時(shí),運(yùn)行寫(xiě)入所述電子設(shè)備中的所述更 新固件。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述檢測(cè)在所述啟動(dòng)階段之前與所述電 子設(shè)備相連的接入設(shè)備是否為免驅(qū)設(shè)備,包括: 獲取在所述啟動(dòng)階段之前與所述電子設(shè)備相連的所述接入設(shè)備的接口描述符信息; 當(dāng)所述接口描述符信息指示所述接入設(shè)備為大容量存儲(chǔ)設(shè)備時(shí),獲取所述接入設(shè)備的 設(shè)備類型信息; 當(dāng)所述設(shè)備類型信息指示所述接入設(shè)備的設(shè)備類型為免驅(qū)類型時(shí),確定所述接入設(shè)備 為所述免驅(qū)設(shè)備。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述接入設(shè)備中的更新固件寫(xiě)入 所述電子設(shè)備中,包括: 從所述接入設(shè)備中獲取所述更新固件的存儲(chǔ)地址; 確定所述電子設(shè)備中的固件存儲(chǔ)區(qū)域; 將所述存儲(chǔ)地址中存儲(chǔ)的所述更新固件寫(xiě)入所述固件存儲(chǔ)區(qū)域中。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述從所述接入設(shè)備中獲取所述更新固 件的存儲(chǔ)地址,包括: 讀取所述接入設(shè)備的特定扇區(qū)中的信息; 根據(jù)所述特定扇區(qū)中的信息判斷所述接入設(shè)備是否采用了特定文件系統(tǒng); 若判斷出所述接入設(shè)備采用了特定文件系統(tǒng),則將預(yù)定存儲(chǔ)地址確定為所述更新固件 的存儲(chǔ)地址; 若判斷出所述接入設(shè)備未采用特定文件系統(tǒng),則根據(jù)所述特定扇區(qū)中的信息攜帶的 元信息確定所述更新固件的存儲(chǔ)地址,所述元信息包括所述更新固件的起始地址和數(shù)據(jù)長(zhǎng) 度。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所述存儲(chǔ)地址中存儲(chǔ)的所述更新 固件寫(xiě)入所述固件存儲(chǔ)區(qū)域中,包括: 當(dāng)所述接入設(shè)備中包含一個(gè)所述固件存儲(chǔ)區(qū)域時(shí),將所述更新固件替換所述固件存儲(chǔ) 區(qū)域中存儲(chǔ)的原始固件; 當(dāng)所述接入設(shè)備中包含至少兩個(gè)所述固件存儲(chǔ)區(qū)域時(shí),將所述更新固件寫(xiě)入其中置為 非活躍區(qū)的固件存儲(chǔ)區(qū)域中,所述置為非活躍區(qū)的固件存儲(chǔ)區(qū)域用于存儲(chǔ)所述電子設(shè)備不 運(yùn)行的固件。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法,還包括: 檢測(cè)所述更新固件是否被正確寫(xiě)入所述置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中; 若檢測(cè)出所述更新固件已經(jīng)被正確寫(xiě)入所述置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中,則將原 來(lái)置為活躍區(qū)的固件存儲(chǔ)區(qū)域置為非活躍區(qū),將正確寫(xiě)入所述更新固件的所述固件存儲(chǔ)區(qū) 域置為活躍區(qū),所述置為活躍區(qū)的固件存儲(chǔ)區(qū)域用于存儲(chǔ)所述電子設(shè)備處于正常運(yùn)行階段 時(shí)運(yùn)行的固件。
7. -種固件刷新裝置,其特征在于,所述裝置包括: 設(shè)備檢測(cè)模塊,被配置為在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在所述啟動(dòng)階段之前與所 述電子設(shè)備相連的接入設(shè)備是否為免驅(qū)設(shè)備; 固件寫(xiě)入模塊,被配置為當(dāng)所述設(shè)備檢測(cè)模塊檢測(cè)出所述接入設(shè)備為免驅(qū)設(shè)備時(shí),將 所述接入設(shè)備中的更新固件寫(xiě)入所述電子設(shè)備中; 固件運(yùn)行模塊,被配置為在所述電子設(shè)備處于重啟之后的正常運(yùn)行階段時(shí),運(yùn)行所述 固件寫(xiě)入模塊寫(xiě)入所述電子設(shè)備中的所述更新固件。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述設(shè)備檢測(cè)模塊,包括: 第一信息獲取子模塊,被配置為獲取在所述啟動(dòng)階段之前與所述電子設(shè)備相連的所述 接入設(shè)備的接口描述符信息; 第二信息獲取子模塊,被配置為當(dāng)所述第一信息獲取子模塊獲取的所述接口描述符信 息指示所述接入設(shè)備為大容量存儲(chǔ)設(shè)備時(shí),獲取所述接入設(shè)備的設(shè)備類型信息; 設(shè)備確定子模塊,被配置為當(dāng)所述第二信息獲取子模塊獲取的所述設(shè)備類型信息指示 所述接入設(shè)備的設(shè)備類型為免驅(qū)類型時(shí),確定所述接入設(shè)備為所述免驅(qū)設(shè)備。
9. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述固件寫(xiě)入模塊,包括: 地址獲取子模塊,被配置為從所述接入設(shè)備中獲取所述更新固件的存儲(chǔ)地址; 區(qū)域確定子模塊,被配置為確定所述電子設(shè)備中的固件存儲(chǔ)區(qū)域; 固件寫(xiě)入子模塊,被配置為將所述地址獲取子模塊獲取到的所述存儲(chǔ)地址中存儲(chǔ)的所 述更新固件寫(xiě)入所述區(qū)域確定子模塊確定的所述固件存儲(chǔ)區(qū)域中。
10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述地址獲取子模塊,包括: 扇區(qū)信息讀取子模塊,被配置為讀取所述接入設(shè)備的特定扇區(qū)中的信息; 系統(tǒng)判斷子模塊,被配置為根據(jù)所述扇區(qū)信息讀取子模塊獲取的所述特定扇區(qū)中的信 息判斷所述接入設(shè)備是否采用了特定文件系統(tǒng); 第一確定子模塊,被配置為當(dāng)所述系統(tǒng)判斷子模塊判斷出所述接入設(shè)備采用了特定文 件系統(tǒng)時(shí),將預(yù)定存儲(chǔ)地址確定為所述更新固件的存儲(chǔ)地址; 第二確定子模塊,被配置為當(dāng)所述系統(tǒng)判斷子模塊判斷出所述接入設(shè)備未采用特定文 件系統(tǒng)時(shí),根據(jù)所述特定扇區(qū)中的信息攜帶的元信息確定所述更新固件的存儲(chǔ)地址,所述 元信息包括所述更新固件的起始地址和數(shù)據(jù)長(zhǎng)度。
11. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述固件寫(xiě)入子模塊,包括: 第一寫(xiě)入子模塊,被配置為當(dāng)所述接入設(shè)備中包含一個(gè)所述固件存儲(chǔ)區(qū)域時(shí),將所述 更新固件替換所述固件存儲(chǔ)區(qū)域中存儲(chǔ)的原始固件; 第二寫(xiě)入子模塊,被配置為當(dāng)所述接入設(shè)備中包含至少兩個(gè)所述固件存儲(chǔ)區(qū)域時(shí),將 所述更新固件寫(xiě)入其中置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中,所述置為非活躍區(qū)的固件存儲(chǔ)區(qū) 域用于存儲(chǔ)所述電子設(shè)備不運(yùn)行的固件。
12. 根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述裝置,還包括: 固件檢測(cè)模塊,被配置為檢測(cè)所述更新固件是否被正確寫(xiě)入所述置為非活躍區(qū)的固件 存儲(chǔ)區(qū)域中; 區(qū)域設(shè)置模塊,被配置為當(dāng)所述固件檢測(cè)模塊檢測(cè)出所述更新固件已經(jīng)被正確寫(xiě)入所 述置為非活躍區(qū)的固件存儲(chǔ)區(qū)域中時(shí),將原來(lái)置為活躍區(qū)的固件存儲(chǔ)區(qū)域置為非活躍區(qū), 將正確寫(xiě)入所述更新固件的所述固件存儲(chǔ)區(qū)域置為活躍區(qū),所述置為活躍區(qū)的固件存儲(chǔ)區(qū) 域用于存儲(chǔ)所述電子設(shè)備處于正常運(yùn)行階段時(shí)運(yùn)行的固件。
13. -種固件刷新裝置,其特征在于,包括: 處理器; 用于存儲(chǔ)所述處理器的可執(zhí)行指令的存儲(chǔ)器; 其中,所述處理器被配置為: 在電子設(shè)備處于啟動(dòng)階段時(shí),檢測(cè)在所述啟動(dòng)階段之前與所述電子設(shè)備相連的接入設(shè) 備是否為免驅(qū)設(shè)備; 若檢測(cè)出所述接入設(shè)備為免驅(qū)設(shè)備,則將所述接入設(shè)備中的更新固件寫(xiě)入所述電子設(shè) 備中; 在所述電子設(shè)備處于重啟之后的正常運(yùn)行階段時(shí),運(yùn)行寫(xiě)入所述電子設(shè)備中的所述更 新固件。
【文檔編號(hào)】G06F9/445GK104503786SQ201410778909
【公開(kāi)日】2015年4月8日 申請(qǐng)日期:2014年12月15日 優(yōu)先權(quán)日:2014年12月15日
【發(fā)明者】孟德國(guó), 梁越, 侯恩星 申請(qǐng)人:小米科技有限責(zé)任公司