国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種Android機頂盒USB自動升級實現(xiàn)

2018-01-08 22:08:44李明春
電子設計工程 2017年16期
關鍵詞:版本號機頂盒校驗

毛 強 ,李明春

(1.武漢郵電科學研究院 湖北 武漢 430074;2.烽火通信科技股份有限公司 湖北 武漢 430074)

一種Android機頂盒USB自動升級實現(xiàn)

毛 強1,李明春2

(1.武漢郵電科學研究院 湖北 武漢 430074;2.烽火通信科技股份有限公司 湖北 武漢 430074)

為了提高Android機頂盒的改制在工廠中進行升級的效率問題,提出一種USB自動升級的應用實現(xiàn)。在Android機頂盒系統(tǒng)架構中的應用層開發(fā),詳細描述了USB自動升級的流程和具體實現(xiàn)方法,并對Recovery模式下安裝升級包進行了梳理。相對工廠利用串口升級的傳統(tǒng)方法而言具有節(jié)省人力、節(jié)省時間和節(jié)省花費等優(yōu)點。通過在工廠進行大量升級成功實例,該升級實現(xiàn)具有很好的穩(wěn)定性、可靠性和很高的升級成功率。

Android;機頂盒;USB升級;Recovery模式

由于運營商業(yè)務需求的更新或者修復系統(tǒng)軟件中已有的缺陷,機頂盒系統(tǒng)需要不斷地進行升級[1-3]。對生產商而言,一種成熟可靠的升級方案就意味著一種方便、快捷、高效、安全的運營維護保證,并盡可能的延長了機頂盒的生命期,同時可以提升與運營商之間的信任度,降低生產成本,搶占更多的市場份額。

目前,Android機頂盒的升級方式主要有本地升級和網(wǎng)絡升級[4-5]。網(wǎng)絡升級是將升級包文件放在升級服務器中,一般應用在運營商針對部署在眾多用戶家里的機頂盒進行大規(guī)模遠程升級。本地升級的升級包文件在本地,有USB手動升級和串口升級。USB手動升級需要進入機頂盒系統(tǒng)設置相關界面進行手動選擇升級選項,來進行USB升級,主要適用于機頂盒研發(fā)人員和測試人員。串口升級,利用燒寫工具通過串口將版本燒寫到機頂盒中。

在機頂盒生產出貨前,由于需求業(yè)務的突然變更,工廠需要對已燒寫進版本的機頂盒進行升級為新的版本,稱為機頂盒的改制。目前,在工廠對Android機頂盒的改制大多采用串口升級,操作過程繁瑣,花費時間長,耗費人力。因此,使用一種高效、穩(wěn)定、可靠的升級方法十分必要。本文提出的一種Android機頂盒USB自動升級方法,不需要使用串口和和進入系統(tǒng)設置界面,可以快捷方便地進行升級。

1 Android USB自動升級應用開發(fā)

1.1 Android機頂盒系統(tǒng)架構

傳統(tǒng)的Linux機頂盒的軟件架構主要由驅動層(引導程序和硬件驅動程序)、系統(tǒng)層(包括Loder模塊)、中間層(中間件)和應用層組成[6]。從應用程序加載執(zhí)行來看,Android機頂盒軟件系統(tǒng)自下而上也分為4 層[7-8]:

1)Linux內核層

Android系統(tǒng)是基于Linux2.6內核移植的,它主要為機頂盒的硬件提供底層驅動,如Wi-Fi驅動、USB驅動、顯示驅動、電源管理等等。

2)系統(tǒng)運行庫層

通過C/C++庫為機頂盒系統(tǒng)提供一些主要的特性支持。同時還有Android運行時庫,主要提供了核心庫,可以使用Java語言編寫Android應用,以及Dalvik虛擬機。

3)應用框架層

主要提供構建應用程序所用到API(應用編程接口),類似于Linux機頂盒的中間層。

4)應用層

安裝在機頂盒中的應用程序屬于這一層,包括系統(tǒng)應用程序及第三方應用程序等。

USB升級針對不同的平臺可以有不同的方法,主要的實現(xiàn)方法有底層實現(xiàn)和應用層實現(xiàn)兩種方法[9]。本文提出的USB自動升級,主要是在應用層進行實現(xiàn),對于不同機頂盒采用不同的芯片方案,只需要修改相應的適配接口,就可以在Android機頂盒系統(tǒng)中運行,通用性好。

1.2 應用程序原理及框架

Android機頂盒上電,通過USB接口與USB設備進行通信交互[10-11]。當插入USB設備時,會觸發(fā)一個系統(tǒng)廣播,機頂盒的USB升級模塊的廣播接收器進行相應的處理,啟動升級服務,如圖1所示。

圖1 機頂盒與USB設備交互

USB的升級應用主要在后臺進行,較少涉及與用戶的交互,主要用到了Broadcast Receiver(廣播接收器)、Service(服務)和 Content Provide。應用程序是基于Java語言開發(fā)實現(xiàn),主要由FHUSBReceiver.java、USBUpgradeService.java、UpgradeRes.java 和 Oper ParametersFromSTB.java等組成。

FHUSBReceiver.java主要是對接收到USB設備插拔廣播消息的處理,獲取USB設備相關信息,通過Intent啟動USBUpgradeService.java。USBUpgradeService主要進行升級相關操作,進行校驗,拷貝升級文件,進入Recovery模式安裝升級包等。UpgradeRes.java是升級資源類,定義了關于升級機頂盒的硬件型號、軟件版本號、強制非強制標志等變量信息。OperParametersFromSTB.java主要讀取機頂盒數(shù)據(jù)庫系統(tǒng)中的關于芯片的硬件型號、系統(tǒng)軟件版本號,獲取內存目錄等方法。

1.3 USB自動升級流程

1)機頂盒接通電源,處于開機狀態(tài);

2)在機頂盒上插上USB設備(例如U盤),會觸發(fā)一個廣播,USB升級模塊接收到廣播,在廣播接收器進行處理,首先會獲取到USB設備的掛載路徑,然后檢測USB設備中的升級包文件是否存在。

3)當檢測到升級包文件存在時,就會啟動USB升級服務。進行升級校驗工作,先會校驗升級包硬件版本型號與機頂盒硬件版本號是否一致,這個很重要,不同芯片對應相應型號的升級包,這個由編譯環(huán)境(硬件對應的編譯指令)決定,若不一致不做校驗進行強制升級就會導致機頂盒系統(tǒng)崩潰,嚴重時導致機頂盒硬件損壞。

4)當硬件版本號不一致或軟件版本號一致時,升級校驗不通過,直接退出升級。當硬件版本號一致,軟件版本號不一致時,升級校驗通過;軟件版本號校驗是為了避免軟件版本號相同時,機頂盒反復升級。

5)校驗通過后,機頂盒先將USB設備中升級包文件拷貝到系統(tǒng)分區(qū)下,然后進入Recovery模式。

6)在Recovery模式下安裝升級包,若安裝失敗,就會提示相關信息并退出此模式。

7)升級包安裝成功后,機頂盒進行重啟,進入正常開機狀態(tài)。

2 關鍵技術及具體實現(xiàn)

2.1 關鍵技術

主要運用到Android開發(fā)中四大組件中的Broadcast Receiver、Service 和 Content Provider。

圖2 USB自動升級流程圖

在Android系統(tǒng)中,廣播作為四大組件之一,用于應用程序之間通信,是一種通信手段,可以處理系統(tǒng)級別的事件,其實現(xiàn)需要Intent對象及Broadcast Receiver對象。Broadcast Receiver(廣播接收器)是一類組件,可以對系統(tǒng)由Intent發(fā)出的廣播通過過濾來接收和響應,用來接收系統(tǒng)廣播。通常情況下,發(fā)出的一個廣播Intent是可以被多個注冊過此廣播的廣播接收器用來接收。一般有兩種注冊廣播的方式,在廣播接收器類中的代碼中注冊稱為動態(tài)注冊,另一種在AndroidManifest.xml文件中進行靜態(tài)注冊,通過application中receiver設置的action等來過濾,實現(xiàn)系統(tǒng)廣播的監(jiān)聽。本設計中,對于USB設備插入機頂盒USB接口事件的監(jiān)聽,采用靜態(tài)注冊。

Service(服務)可以用來實現(xiàn)程序在后臺運行,它適合去做一些不需要與用戶交互的操作,同時該任務是長期運行的。當應用程序切換到后臺,服務照樣運行,不依賴任何用戶界面。Service運行在主線程中,不是一個獨立的進程。進行Android機頂盒的USB自動升級操作主要在服務運行中進行。

Content Provider是一種共享數(shù)據(jù)的機制。程序運行在不同的應用程序中,應用程序間的數(shù)據(jù)和文件之間實現(xiàn)數(shù)據(jù)共享顯得很復雜,Content Provider在Android中實現(xiàn)數(shù)據(jù)共享相對簡單地多[12-13]。它為數(shù)據(jù)的存儲和獲取提供了一個統(tǒng)一的接口,數(shù)據(jù)能在不同的應用程序之間實現(xiàn)共享。在USB自動升級中,主要用來讀取文件和讀取數(shù)據(jù)庫內容。

2.2 具體實現(xiàn)

FHUSBUpgrade項目在eclipse中結構圖如圖3。

圖3 FHUSBUpgrade項目結構圖

主要的目錄為:1.assets目錄:存放程序打包文件;2.src目錄:存放USB自動升級應用的Java源代碼;3.res目錄:用來存放圖片、布局、字符串等資源文件;4.gen目錄:自動生成,是與資源對應的資源id;5.lib目錄:存放jar包;6.bin目錄:編譯時自動產生的文件;

7.AndroidManifest整個項目的配置文件;8.Project.properties指定編譯所用的SDK版本;

主要方法原理及實現(xiàn):

1)獲取USB設備掛載的路徑

Android系統(tǒng)本身在Linux內核層提供了對USB設備的底層驅動,USB設備進行熱插拔,內核層會發(fā)出 mount或 unmount操作命令給 vold(volume daemon,是一個守護進程,負責擴展存儲的掛載),vold再發(fā)掛載消息給上層,上層獲取掛載的消息及狀態(tài)后,下發(fā)命令給vold,讓其執(zhí)行掛載操作,這時mount目錄由vold生成,就位于機頂盒的文件系統(tǒng)目錄下,即掛載點。

USB設備插入掛載成功時,會有一個系統(tǒng)廣播MEDIA_MOUNTED觸發(fā),通過在廣播類FHUSBReceiver.java中監(jiān)聽,可以獲取它的掛載路徑。FHUSBReceiver類繼承了BroadcastReceiver類,要覆寫 onReceive方法,同時需要在AndroidManifest.xml中進行注冊。

當檢測到U盤中升級包文件存在時,啟動一個intent,以鍵值對的形式指定升級類型、強制升級類型和USB掛載路徑等。當service.putExtra("forceup","0")時,升級類型為非強制升級,可以選擇是否升級。

3)USB升級核心程序USBUpgradeService.java

當檢測到USB設備中升級包文件存在,就開始啟動USBUpgradeService服務。USBUpgradeService繼承了Service,實現(xiàn)的功能主要是通過文件讀取對升級包文件中相關信息進行讀取和讀取機頂盒數(shù)據(jù)庫中的信息,從而進行升級校驗,然后調用相關方法拷貝安裝升級包。

主函數(shù)通過public boolean checkHardwareVer(String zippath){}方法進行硬件型號校驗,若為機頂盒系統(tǒng)中硬件型號與升級包中的硬件型號不一致,則為false直接退出升級,若為true,接著通過public boolean checkSoftwareVer(String zippath) {}進行軟件版本號校驗,若兩個軟件版本號不一致則通過校驗,調 用 private void ConfirmUpgrade(String stbVer,String packageVer){}方法,非強制升級時,會彈出一個對話框,顯示機頂盒的軟件版本號信息,是否需要升級的確認和取消按鈕。當選擇確認按鈕,就用調用private void doUpgradeing() {}方法來升級,在該方法中調用private void CopyUpdateFile(){}將升級包的拷貝到機頂盒系統(tǒng)的cache分區(qū)。隨后進入Recovery模式。而強制升級,不會彈出對話框,直接調用 private void doUpgradeing() {}方法,隨后和非強制升級執(zhí)行步驟一樣。

4)Recovery模式安裝升級包

Android機頂盒系統(tǒng)啟動后,有3種不同的工作模式:bootloader模式、Recovery模式和正常的啟動模式--Main System(主系統(tǒng))模式。使用升級包update.zip來進行更新時,Android機頂盒通常都會先重啟進入Recovery模式,然后通過調用腳本命令啟動 Recovery服務來安裝升級包[14-15]。

Recovery模式操作的過程:先對啟動控制信息塊(BCB)的指令進行讀取,然后讀取cache分區(qū)下的指令,將指令重新寫入BCB,確保Recovery指令被執(zhí)行。接著,Recovery要清除BCB的command和recovery相關部分,目的是保證重啟后不再進入該模式,而是進入Main System。

將update.zip升級包拷貝到機頂盒系統(tǒng)的cache分區(qū)下,cache分區(qū)用命令將位置寫入到command中,Recovery服務獲取了升級包的路徑。獲取到它的絕對路徑path后,Recovery服務要進行的操作是調用 RecoverySystem類 中 的 installPackage(Context context,F(xiàn)ile packageFile)來安裝升級包。同時將 arg=path+filename(升級包名)寫入到 BCB中,安裝成功后,接著調用 bootCommand(context,arg)腳本命令,最后調用PowerManager類中pm.reboot()方法實現(xiàn)機頂盒重啟,隨后進入正常啟動模式。

3 升級測試

USB自動升級前的準備工作:1)保證機頂盒一直連通電源,防止突然斷電導致系統(tǒng)升級中斷;2)USB設備中upgrade目錄有升級包文件且軟件版本號與之前機頂盒中的版本號不同。圖4為USB自動升級中的非強制升級,即通過點擊升級按鈕,進行升級操作。圖5為Recovery模式安裝升級包的提示操作。在工廠的版本中,目前可以通過在程序中設置標志位zipForceUp(為1時為強制升級)進行相應處理,不用點擊升級確認按鈕,可以進行下一步的升級操作,節(jié)省時間,減少操作。強制升級與非強制升級功能幾乎一樣[16],強制升級是無法選擇的強制升級,非強制升級則可以選擇是否升級。

圖4 USB自動升級中的非強制升級

圖5 Recovery模式下安裝升級包

4 結束語

目前在某司的工廠中,進行Android機頂盒改制升級,本文提出的一種USB自動升級實現(xiàn)已經(jīng)得到應用,其穩(wěn)定性、可靠性、操作簡便性得到了驗證。使用該USB升級方式,只需對機頂盒系統(tǒng)的應用層做出相應的功能添加,合入到機頂盒版本中[17],原有機頂盒的功能不需要做出太大的修改,工作量相對小,對于實現(xiàn)工廠Android機頂盒的改制來說具有很大的優(yōu)勢,它具有省時、省錢、節(jié)省人力的特點,升級的安全可靠性高,可以顯著提高工廠的生產效率。同時,該方法也可應用于研發(fā)人員和測試人員進行Android機頂盒的升級。

[1]陳靜芳,賴志群.Android在數(shù)字機頂盒技術發(fā)展介紹[J].電子與電腦,2010(8):33-36.

[2]魏沖,李智浩,于華.淺淡Android系統(tǒng)機頂盒的前景[J].有線電視技術,2012(3):97-99,109.

[3]張晉.淺析數(shù)字電視機頂盒升級流程及其注意事項[J].有線電視技術,2015(12):67-69.

[4]朱家發(fā).智能機頂盒的初步研究與實現(xiàn)[D].蘭州:蘭州大學,2012.

[5]閆茂昌.智能數(shù)字電視機頂盒升級系統(tǒng)的設計與實現(xiàn)[D].天津:天津大學,2014.

[6]修曉琴.基于Linux平臺的數(shù)字電視機頂盒應用升級機制的研究和設計[J].中國有線電視,2015(10):1145-1150.

[7]王東東.基于Hi3716C的Android機頂盒軟件設計與實現(xiàn)[D].天津:天津大學,2012.

[8]吳軍,彭蘇,李婧雯.機頂盒升級技術分析[J].電子技術與軟件工程,2016(5):91.

[9]張海泳.基于linux的數(shù)字電視機頂盒幾種升級方式的設計與實現(xiàn)[J].西部廣播電視,2013(6):106-108.

[10]蘇維嘉,唐宇,楊靜.基于Android平臺的USB數(shù)據(jù)采集系統(tǒng)[J].計算機系統(tǒng)應用,2012(8):39-42.

[11]唐曙,羅武勝,魯琴,等.基于Android平臺的USB通信技術研究[J].計算機測量與控制,2015(12):4121-4123,4127.

[12]吳亞峰,蘇亞光.Android應用案例開發(fā)大全[M].北京:人民郵電出版社,2011.

[13]韓洪波,倪宏,孫鵬.雙模機頂盒在線升級方案設計與實現(xiàn)[J].微計算機信息,2010(24):3-5.

[14]李剛.瘋狂Android講義[M].北京:電子工業(yè)出版社,2012.

[15]王晟,蘇凱雄.基于Android平臺機頂盒在線升級應用的設計[J].有線電視技術,2015(6):47-49,53.

[16]邱進.一種應用于多斷口光控真空斷路器的同步控制系統(tǒng)的設計與實現(xiàn)[J].供用電,2015(5):69-73.

[17]黃婷,黃偉.基于不同算法求解子問題的Benders分解法在無功規(guī)劃中的應用[J].陜西電力,2013(3):23-26.

A method of Android set top box USB automatic upgrade implementation

MAO Qiang1,LI Ming-chun2
(1.Wuhan Research Institute of Posts and Telecommunications,Wuhan 430074,China;2.Fiberhome Telecommunication Technologies Co..LTD,Wuhan 430074,China)

In order to improve the efficiency of Android set top box's upgrade efficiency in the factory after initialization,this paper presents anapplication of USB automatic upgrade implementation.Developed in the Android set-top box system architecture's application layer,the process of USB automatic upgrade and the specific implementation methods described in detail,sorting to install the upgrade package out in Recovery mode.Compared with the traditional way of using the serial port to upgrade in factory,it has the advantages of saving labor,saving time and cost.Through a large number of successful instances of the upgrade,the USB automatic upgrade achieves good stability,reliability and a high success rate of upgrade.

Android ;set-top box;USB upgrade;Recovery mode

TN87

A

1674-6236(2017)16-0103-05

2016-06-27稿件編號:201606210

毛 強(1990—),男,湖北廣水人,碩士研究生。研究方向:通信與信息系統(tǒng)、計算機軟件。

猜你喜歡
版本號機頂盒校驗
安全使用機頂盒注意五點
認識vSphere安裝程序
爐溫均勻性校驗在鑄鍛企業(yè)的應用
數(shù)字電視機頂盒軟件自動測試系統(tǒng)的開發(fā)及應用
電子測試(2017年15期)2017-12-18 07:19:23
深入淺出 全面獲知系統(tǒng)版本號
有線電視高清數(shù)字電視機頂盒測試系統(tǒng)的構建
What is Apple Watch All About?
中學科技(2015年4期)2015-04-28 04:55:26
大型電動機高阻抗差動保護穩(wěn)定校驗研究
電測與儀表(2015年1期)2015-04-09 12:03:02
基于加窗插值FFT的PMU校驗方法
鍋爐安全閥在線校驗不確定度評定
阿鲁科尔沁旗| 平昌县| 徐州市| 遂昌县| 安多县| 贵溪市| 昌宁县| 忻城县| 千阳县| 林甸县| 青岛市| 渝中区| 泊头市| 丰城市| 会昌县| 台州市| 承德市| 叶城县| 朝阳区| 崇文区| 江津市| 台州市| 大宁县| 育儿| 大埔县| 泉州市| 延吉市| 建湖县| 思茅市| 濉溪县| 屏山县| 阿瓦提县| 肇庆市| 延边| 鄢陵县| 瑞丽市| 石景山区| 兰西县| 德惠市| 吴桥县| 尖扎县|