一種固件升級的方法和主機(jī)端裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種固件升級的方法和主機(jī)端裝置及系統(tǒng)。
【背景技術(shù)】
[0002]目前的平板電腦量產(chǎn)后進(jìn)行升級的過程中,通常會采用如下方式進(jìn)行固件升級:
[0003]I)利用一臺Windows PC對多臺平板電腦進(jìn)行固件燒寫升級
[0004]采用Windows PC對平板電腦進(jìn)行升級,通過向平板電腦發(fā)送命令和傳送固件升級程序,可以與平板電腦交互獲取升級的進(jìn)度和是否成功信息。
[0005]但此方式需要裝載有Windows系統(tǒng)的PC來參與,因此在工廠的產(chǎn)線上面對成千上萬臺生產(chǎn)出來的平板電腦的時候,裝載有Windows系統(tǒng)的PC數(shù)量的多少會限制量產(chǎn)的速度,且配置多臺PC的成本也較高。
[0006]2)利用卡進(jìn)行固件燒寫升級
[0007]將存儲卡插入平板電腦,通過讀取和運(yùn)行存儲卡內(nèi)的固件升級程序進(jìn)行固件升級,此方式的弊端在于不能實(shí)時反映量產(chǎn)的進(jìn)度和是否成功的信息,量產(chǎn)如果失敗無法方便地反饋給生產(chǎn)人員失敗的原因等信息。
[0008]3)利用網(wǎng)絡(luò)下載固件燒寫升級
[0009]此方式要求被升級的平板電腦必須已經(jīng)有系統(tǒng)的運(yùn)行,否則無法連接網(wǎng)絡(luò),這對于剛剛生產(chǎn)出來還不帶系統(tǒng)固件的平板來說無法做到。且這種方式同樣存在升級的過程中無法方便地在另一方的平臺工具上顯示量產(chǎn)進(jìn)度信息等問題。
【發(fā)明內(nèi)容】
[0010]本發(fā)明提供一種固件升級的方法和主機(jī)端裝置及系統(tǒng),可以提高固件升級的效率。
[0011]本發(fā)明提供一種固件升級的方法,包括:
[0012]主機(jī)端通過USB主機(jī)控制器驅(qū)動操作USB主機(jī)控制器檢測本地USB接口是否有待升級的客戶端插入;
[0013]若檢測到有待升級的客戶端插入,主機(jī)端通過固件升級應(yīng)用程序?qū)⒊跏蓟绦蚝凸碳壋绦蛳螺d到所述客戶端,所述初始化程序用于初始化客戶端內(nèi)存,所述固件升級程序被下載到初始化后的內(nèi)存中,用于解析并執(zhí)行從所述主機(jī)端接收的各種命令;
[0014]主機(jī)端通過固件升級應(yīng)用程序向客戶端發(fā)送固件燒寫命令及固件數(shù)據(jù),由所述客戶端接收到固件燒寫命令及固件數(shù)據(jù)后,通過所述客戶端上的固件升級程序根據(jù)固件燒寫命令將固件數(shù)據(jù)寫入存儲介質(zhì)。
[0015]優(yōu)選地,所述主機(jī)端通過固件升級應(yīng)用程序?qū)⒊跏蓟绦蚝凸碳壋绦蛳螺d到所述客戶端之后,通過固件升級應(yīng)用程序向客戶端發(fā)送固件燒寫命令及固件數(shù)據(jù)之前,該方法還包括:
[0016]主機(jī)端通過固件升級應(yīng)用程序向客戶端發(fā)送檢測掃描命令,由所述客戶端接收到所述檢測掃描命令后,通過所述客戶端上的固件升級程序根據(jù)檢測掃描命令掃描獲得硬件信息并反饋給主機(jī)端。
[0017]優(yōu)選地,主機(jī)端檢測到有待升級的客戶端插入,具體包括:
[0018]若USB主機(jī)控制器檢測到有新設(shè)備插入時,通過USB主機(jī)控制器驅(qū)動通知USB內(nèi)核,由USB內(nèi)核通過USB主機(jī)控制器驅(qū)動操作USB主機(jī)控制器獲取新設(shè)備的設(shè)備信息,并與USB量產(chǎn)設(shè)備驅(qū)動程序所存儲的設(shè)備信息相匹配,若匹配成功,則確定本地USB接口有待升級的客戶端插入;
[0019]所述USB內(nèi)核通知USB量產(chǎn)設(shè)備驅(qū)動程序有待升級的客戶端插入,USB量產(chǎn)設(shè)備驅(qū)動程序通知Linux用戶層,由Linux用戶層通知Java層的固件升級應(yīng)用程序。
[0020]優(yōu)選地,主機(jī)端通過固件升級應(yīng)用程序?qū)⒊跏蓟绦蚝凸碳壋绦蛳螺d到客戶端上,具體包括:
[0021]Java層的固件升級應(yīng)用程序通過JNI接口向Linux用戶層的固件升級應(yīng)用程序發(fā)送下載命令、初始化程序和固件升級程序;
[0022]Linux用戶層的固件升級應(yīng)用程序向USB量產(chǎn)設(shè)備驅(qū)動程序發(fā)送下載命令、初始化程序和固件升級程序,所述USB量產(chǎn)設(shè)備驅(qū)動程序?qū)ο螺d命令進(jìn)行解析后,通知USB內(nèi)核通過USB主機(jī)控制器驅(qū)動操作USB主機(jī)控制器將初始化程序和固件升級程序發(fā)送到待升級的客戶端。
[0023]優(yōu)選地,主機(jī)端通過固件升級應(yīng)用程序向客戶端發(fā)送固件燒寫命令及固件數(shù)據(jù),具體包括:
[0024]Java層的固件升級應(yīng)用程序通過JNI接口向Linux用戶層的固件升級應(yīng)用程序發(fā)送固件燒寫命令及固件數(shù)據(jù);
[0025]Linux用戶層的固件升級應(yīng)用程序向USB量產(chǎn)設(shè)備驅(qū)動程序發(fā)送固件燒寫命令及固件數(shù)據(jù),所述USB量產(chǎn)設(shè)備驅(qū)動程序?qū)碳龑懨钸M(jìn)行解析后,通知USB內(nèi)核通過USB主機(jī)控制器驅(qū)動操作USB主機(jī)控制器將固件燒寫命令及固件數(shù)據(jù)發(fā)送到待升級的客戶端。
[0026]優(yōu)選地,主機(jī)端通過固件升級應(yīng)用程序向客戶端發(fā)送固件燒寫命令及固件數(shù)據(jù)之后,還包括:
[0027]所述主機(jī)端通過固件升級應(yīng)用程序接收所述客戶端在燒寫完成后返回的是否燒寫成功的反饋信息,并將所述反饋信息進(jìn)行顯示。
[0028]本發(fā)明提供一種固件升級的主機(jī)端裝置,包括:
[0029]檢測單元,用于通過USB主機(jī)控制器驅(qū)動操作USB主機(jī)控制器檢測本地USB接口是否有待升級的客戶端插入;
[0030]下載單元,用于若檢測到有待升級的客戶端插入,通過固件升級應(yīng)用程序?qū)⒊跏蓟绦蚝凸碳壋绦蛳螺d到所述客戶端,所述初始化程序用于初始化客戶端內(nèi)存,所述固件升級程序被下載到初始化后的內(nèi)存中,用于解析并執(zhí)行從所述主機(jī)端接收的各種命令;
[0031]升級單元,用于通過固件升級應(yīng)用程序向客戶端發(fā)送固件燒寫命令及固件數(shù)據(jù),由所述客戶端接收到固件燒寫命令及固件數(shù)據(jù)后,通過所述客戶端上的固件升級程序根據(jù)固件燒寫命令將固件數(shù)據(jù)寫入存儲介質(zhì)。
[0032]優(yōu)選地,該主機(jī)端裝置還包括:
[0033]命令單元,用于在下載單元通過固件升級應(yīng)用程序?qū)⒊跏蓟绦蚝凸碳壋绦蛳螺d到所述客戶端之后,在升級單元通過固件升級應(yīng)用程序向客戶端發(fā)送固件燒寫命令及固件數(shù)據(jù)之前,通過固件升級應(yīng)用程序向客戶端發(fā)送檢測掃描命令,由所述客戶端接收到所述檢測掃描命令后,通過所述客戶端上的固件升級程序根據(jù)檢測掃描命令掃描獲得硬件信息并反饋給主機(jī)端。
[0034]優(yōu)選地,檢測單元檢測到有待升級的客戶端插入,具體包括:
[0035]若由USB主機(jī)控制器檢測到有新設(shè)備插入時,通過USB主機(jī)控制器驅(qū)動通知USB內(nèi)核,由USB內(nèi)核通過USB主機(jī)控制器驅(qū)動操作USB主機(jī)控制器獲取新設(shè)備的設(shè)備信息,并與USB量產(chǎn)設(shè)備驅(qū)動程序所存儲的設(shè)備信息相匹配,若匹配成功,則確定本地USB接口有待升級的客戶端插入;
[0036]由所述USB內(nèi)核通知USB量產(chǎn)設(shè)備驅(qū)動程序有待升級的客戶端插入,USB量產(chǎn)設(shè)備驅(qū)動程序通知Linux用戶層,由Linux用戶層通知Java層的固件升級應(yīng)用程序。
[0037]優(yōu)選地,下載單元通過固件升級應(yīng)用程序?qū)⒊跏蓟绦蚝凸碳壋绦蛳螺d到客戶端上,具體包括:
[0038]由Java層的固件升級應(yīng)用程序通過JNI接口向Linux用戶層的固件升級應(yīng)用程序發(fā)送下載命令、初始化程序和固件升級程序;
[0039]由Linux用戶層的固件升級應(yīng)用程序向USB量產(chǎn)設(shè)備驅(qū)動程序發(fā)送下載命令、初始化程序和固件升級程序,所述USB量產(chǎn)設(shè)備驅(qū)動程序?qū)ο螺d命令進(jìn)行解析后,通知USB內(nèi)核通過USB主機(jī)控制器驅(qū)動操作USB主機(jī)控制器將初始化程序和固件升級程序發(fā)送到待升級的客戶端。
[0040]優(yōu)選地,升級單元通過固件升級應(yīng)用程序向客戶端發(fā)送固件燒寫命令及固件數(shù)據(jù),具體包括:
[0041]由Java層的固件升級應(yīng)用程序通過JNI接口向Linux用戶層的固件升級應(yīng)用程序發(fā)送固件燒寫命令及固件數(shù)據(jù);
[0042]由Linux用戶層的固件升級應(yīng)用程序向USB量產(chǎn)設(shè)備驅(qū)動程序發(fā)送固件燒寫命令及固件數(shù)據(jù),所述USB量產(chǎn)設(shè)備驅(qū)動程序?qū)碳龑懨钸M(jìn)行解析后,通知USB內(nèi)核通過USB主機(jī)控制器驅(qū)動操作USB主機(jī)控制器將固件燒寫命令及固件數(shù)據(jù)發(fā)送到待升級的客戶端。
[0043]本發(fā)明還提供一種固件升級的系統(tǒng),包括:
[0044]主機(jī)端,通過USB數(shù)據(jù)線連接客戶端,用于通過USB主機(jī)控制器驅(qū)動操作USB主機(jī)控制器檢測本地USB接口是否有待升級的客戶端插入;若檢測到有待升級的客戶端插入,主機(jī)端通過固件升級應(yīng)用程序?qū)⒊跏蓟绦蚝凸碳壋绦蛳螺d到所述客戶端,所述初始化程序用于初始化客戶端內(nèi)存,所述固件升級程序被下載到初始化后的內(nèi)存中,用于解析并執(zhí)行從所述主機(jī)端接收的各種命令;主機(jī)端通過固件升級應(yīng)用程序向客戶端發(fā)送固件燒寫命令及固件數(shù)據(jù);
[0045]客戶端,用于接收所述主機(jī)端發(fā)送的固件升級應(yīng)用程序?qū)⒊跏蓟绦蚝凸碳壋绦颍ㄟ^所述初始化程序初始化客戶端內(nèi)存,接收所述主機(jī)端發(fā)送的固件燒寫命令及固件數(shù)據(jù),通過所述客戶端上的固件升級程序根據(jù)固件燒寫命令將固件數(shù)據(jù)寫入存儲介質(zhì)。
[0046]利用本發(fā)明提供的固件升級的方法和主機(jī)端裝置及系統(tǒng),具有以下有益效果:在Android系統(tǒng)上的主機(jī)端可對客戶端如平板電腦進(jìn)行量產(chǎn)升級,可以不依賴于PC或卡等生產(chǎn)設(shè)備,只要有安裝了 Android系統(tǒng)并具有USB主機(jī)(USB Host)功能的設(shè)備,都可以用來進(jìn)行量產(chǎn)升級,這樣如果已經(jīng)生產(chǎn)了 N臺Android平板電腦,就可以充分利用這N臺平板電腦來量產(chǎn)下一批平板電腦,可以有效地減低生產(chǎn)成本,并大大提高同一時間的量產(chǎn)數(shù)目,提高了生產(chǎn)效率。
當(dāng)前第1頁
1 
2 
3 
4