亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        毛 強 ,李明春

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

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

        毛 強1,李明春2

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

        為了提高Android機頂盒的改制在工廠中進行升級的效率問題,提出一種USB自動升級的應用實現(xiàn)。在Android機頂盒系統(tǒng)架構(gòu)中的應用層開發(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]。對生產(chǎn)商而言,一種成熟可靠的升級方案就意味著一種方便、快捷、高效、安全的運營維護保證,并盡可能的延長了機頂盒的生命期,同時可以提升與運營商之間的信任度,降低生產(chǎn)成本,搶占更多的市場份額。

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

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

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

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

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

        1)Linux內(nèi)核層

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

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

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

        3)應用框架層

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

        4)應用層

        安裝在機頂盒中的應用程序?qū)儆谶@一層,包括系統(tǒng)應用程序及第三方應用程序等。

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

        1.2 應用程序原理及框架

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

        圖1 機頂盒與USB設(shè)備交互

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

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

        1.3 USB自動升級流程

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

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

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

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

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

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

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

        2 關(guān)鍵技術(shù)及具體實現(xiàn)

        2.1 關(guān)鍵技術(shù)

        主要運用到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設(shè)置的action等來過濾,實現(xiàn)系統(tǒng)廣播的監(jiān)聽。本設(shè)計中,對于USB設(shè)備插入機頂盒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ù)庫內(nèi)容。

        2.2 具體實現(xiàn)

        FHUSBUpgrade項目在eclipse中結(jié)構(gòu)圖如圖3。

        圖3 FHUSBUpgrade項目結(jié)構(gòu)圖

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

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

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

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

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

        USB設(shè)備插入掛載成功時,會有一個系統(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設(shè)備中升級包文件存在,就開始啟動USBUpgradeService服務。USBUpgradeService繼承了Service,實現(xiàn)的功能主要是通過文件讀取對升級包文件中相關(guān)信息進行讀取和讀取機頂盒數(shù)據(jù)庫中的信息,從而進行升級校驗,然后調(diào)用相關(guān)方法拷貝安裝升級包。

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

        4)Recovery模式安裝升級包

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

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

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

        3 升級測試

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

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

        圖5 Recovery模式下安裝升級包

        4 結(jié)束語

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

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

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

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

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

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

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

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

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

        [9]張海泳.基于linux的數(shù)字電視機頂盒幾種升級方式的設(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通信技術(shù)研究[J].計算機測量與控制,2015(12):4121-4123,4127.

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

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

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

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

        [16]邱進.一種應用于多斷口光控真空斷路器的同步控制系統(tǒng)的設(shè)計與實現(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)的構(gòu)建
        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校驗方法
        鍋爐安全閥在線校驗不確定度評定
        国模吧无码一区二区三区| 亚洲岛国一区二区三区| 99热婷婷一区二区三区| 国产成人久久精品亚洲小说| 在线偷窥制服另类| 国产不卡一区二区三区视频| 日韩成精品视频在线观看| 一区二区在线观看视频亚洲| 国产91在线播放九色快色 | 麻豆国产av尤物网站尤物| 国产av色| 国产白浆精品一区二区三区 | 国产一区二区三区天堂| av大全亚洲一区二区三区| 俺去啦最新地址| 乱色熟女综合一区二区三区| 国产在线无码制服丝袜无码| 亚洲成人福利在线观看| 亚洲国产一区二区三区在线视频| 国产日产亚洲系列av| 国产精品日本中文在线| 日本免费看片一区二区三区| 亚洲国产a∨无码中文777| 六月丁香综合在线视频 | 亚洲 欧美 唯美 国产 伦 综合| 国产又黄又爽视频| 亚洲中字幕永久在线观看| 亚洲在中文字幕乱码熟女| 亚洲av高清一区二区三区| 亚洲av无码国产精品色| 性一交一乱一乱一视频| 最新国产日韩AV线| 亚洲第一区二区快射影院| 国产一区二区免费在线视频| 无码乱肉视频免费大全合集| 精品人妻中文无码av在线 | 亚洲自拍另类欧美综合| 黑人巨大亚洲一区二区久| 女主播国产专区在线观看| 亚洲中文字幕久久精品品| 无码区a∨视频体验区30秒|