• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種高效的嵌入式系統(tǒng)固件局部更新方法

      2021-08-30 08:20:58吳躍前王德明
      關(guān)鍵詞:固件內(nèi)存嵌入式

      黃 鑫, 吳躍前, 王德明

      (1. 華南師范大學(xué)物理與電信工程學(xué)院, 廣州 510006; 2. 廣東省工業(yè)和信息化廳, 廣州 510030)

      嵌入式系統(tǒng)具有功耗低、集成度高的特點,隨著工業(yè)4.0、物聯(lián)網(wǎng)和智能制造等快速的發(fā)展和推進,其結(jié)構(gòu)越來越復(fù)雜、功能越來越強大,在生產(chǎn)和生活中具有廣闊的應(yīng)用前景[1]. 預(yù)計到2025年,投入使用的嵌入式設(shè)備將會有1~3萬億臺[2].

      固件(包括操作系統(tǒng)、應(yīng)用程序、驅(qū)動程序、中間件、用戶接口資源文件和配置文件等)是嵌入式系統(tǒng)中基礎(chǔ)、底層的工作軟件. 嵌入式系統(tǒng)在開發(fā)過程中需要頻繁更新固件來進行調(diào)試,在使用過程中也需要偶爾更新固件來進行功能升級[3]. 根據(jù)運算和內(nèi)存資源的大小,將嵌入式系統(tǒng)分為資源豐富型嵌入式系統(tǒng)(Resource-rich Embedded System,RRES)[4-5]和資源緊缺型嵌入式系統(tǒng)(Resource-scarce Embedded System,RSES)[6]. 其中,RRES的內(nèi)存在MB級以上,其操作系統(tǒng)已集成了調(diào)試子系統(tǒng),可以采用高效的基于GDBServer的固件局部更新方法(GDBServer-based Local Firmware Update,GDBL-FU)[7];RSES的內(nèi)存在MB級以下,不足以支撐GDB調(diào)試機制,一般采用低效、耗時的固件整體更新方法. 然而,RSES因為其成本低的優(yōu)勢,在消費類電子產(chǎn)品中廣泛應(yīng)用.

      在使用過程中,嵌入式系統(tǒng)普遍采用在線升級的固件整體更新方法[8]:在不斷電或保持系統(tǒng)正常運行的情況下,通過JTAG(Joint Test Action Group)接口[9-10]、串口[11]、無線網(wǎng)絡(luò)[12]或有線網(wǎng)絡(luò)[13]實現(xiàn)對固件的整體更新. 目前,這方面的研究比較成熟,如:李苑等[11]提出了一種兼容串口糾錯協(xié)議和遠程文件傳輸協(xié)議的固件升級方法;許金宇等[14]提出了一種基于S3C2440A芯片的嵌入式設(shè)備在線系統(tǒng)升級的方法;陳長等[13]提出了一種基于SiTCP通信協(xié)議的FPGA可回滾遠程固件更新方法;袁鳳培[15]針對煤礦多層異構(gòu)網(wǎng)絡(luò)提出了一種遠程固件整體更新方法,其目的在于高效地批量更新多個設(shè)備的固件;何國鋒等[16]以可穿戴設(shè)備為例,通過模擬BIOS程序,對Flash分塊操作來實現(xiàn)設(shè)備的固件在線升級. 然而,上述固件整體更新方法[11,13-16]存在效率低的問題. 為此,王豫新和高美鳳[5]提出了一種內(nèi)存消耗低的固件局部更新方法,但是該方法僅適用于RRES,不適用于RSES. 在開發(fā)過程中,RSES普遍采用基于JTAG調(diào)試器的固件整體更新(JTAG Debugger-based Overall Firmware Update,JDO-FU)方法[1,17]:先打包整個新固件,然后利用外存燒寫工具將新固件燒寫到固件區(qū),再使用調(diào)試器進行調(diào)試[18]. 采用JDO-FU需要耗時間打包和燒寫整個固件,同樣存在效率低的問題. 為了提高效率,郭俊等[6]針對RISC-V處理器,基于BootROM引導(dǎo)流程技術(shù)和IAP技術(shù)[19]提出了一種易操作、高效且穩(wěn)定的固件整體更新方法. 然而,目前尚未有文獻研究RSES在開發(fā)過程中的固件局部更新問題.

      針對JDO-FU方法所存在的效率低問題,本文提出了一種高效的固件局部更新方法(Efficient Local Firmware Update,EL-FU),并在實際系統(tǒng)中對使用該方法的RSES進行了性能測試.

      1 基于JTAG調(diào)試器的固件整體更新(JDO-FU)方法

      圖1 RSES的典型固件分布

      RSES的開發(fā)人員在調(diào)試階段需要頻繁更新自己所負責(zé)的局部代碼,目前普遍采用JDO-FU方法更新整個固件(圖2). 因為JTAG協(xié)議接口不能訪問外存,所以該方法需要用到調(diào)試器和燒寫工具.

      圖2 RSES采用JDO-FU方法更新固件的連接示意圖

      JDO-FU方法的具體流程(圖3)為:

      圖3 JDO-FU方法的流程

      步驟1:將各個應(yīng)用程序、驅(qū)動程序和內(nèi)核程序分別編譯鏈接為hex文件;

      步驟2:將操作系統(tǒng)、中間件、配置文件、hex文件和用戶接口資源文件整體打包成一個新固件;

      步驟3:使用燒寫工具擦除外存中的整個舊固件,并將整個新固件燒寫到外存中;

      步驟4:斷開燒寫工具,連接JTAG調(diào)試器,將宿主機上調(diào)試環(huán)境軟件(如IAR、KEIL等)發(fā)出的接收機數(shù)據(jù)接口(Receiver Data Interface,RDI)命令轉(zhuǎn)化為JTAG命令,以對RSES的內(nèi)存區(qū)域進行調(diào)試.

      在上述過程中:打包(步驟2)是一個耗時操作,固件越大,耗時越長;切換燒寫工具和調(diào)試器(步驟4)也是一個耗時操作. 因此,JDO-FU方法需要耗費較長時間,使得RSES的開發(fā)存在效率低的問題.

      通往空間想象能力深層的必由之路就是由基本知識、基本技能鋪設(shè)的,雙基內(nèi)容應(yīng)該是作為社會人生存、發(fā)展的必備平臺。沒有基礎(chǔ),就缺乏發(fā)展?jié)撃堋?/p>

      2 一種高效的固件局部更新(EL-FU)方法

      為了縮短RSES的固件更新時間,提高開發(fā)效率,本文提出了一種高效的固件局部更新(EL-FU)方法. 采用該方法不需要使用燒寫工具,新的局部固件首先由調(diào)試器寫入內(nèi)存,然后由驅(qū)動程序?qū)懭胪獯嬷蓄A(yù)留的局部更新區(qū)域,再由調(diào)試器來調(diào)試(圖4).

      圖4 RSES采用EL-FU方法更新固件的連接示意圖

      EL-FU方法的核心在于修改操作系統(tǒng),增加了更新觸發(fā)、固件更新、目錄添加和提醒4個模塊(圖5),實現(xiàn)了更新局部固件的功能.

      圖5 應(yīng)用了EL-FU方法的RSES的系統(tǒng)框圖

      RSES采用EL-FU方法后的固件分布(圖6)與典型固件分布(圖1)的區(qū)別在于:(1)在固件區(qū)的末尾預(yù)留局部更新區(qū)域,用于寫入需要更新運行的程序;(2)由于存儲在外存(一般是FLASH)中的文件目錄項不能直接修改,需要在其末尾增加一條指向更新文件的目錄項記錄.

      采用EL-FU方法后,RSES具有固件局部更新和程序加載2個狀態(tài)(圖7). 如EL-FU方法的流程(圖7)所示,系統(tǒng)上電后,由啟動模塊加載并運行操作系統(tǒng),然后由更新觸發(fā)模塊判斷是否收到“更新固件”的命令. 若收到,則進入固件局部更新狀態(tài),并執(zhí)行以下步驟:

      (1)由操作系統(tǒng)加載固件更新模塊及外存對應(yīng)的驅(qū)動程序,運行固件更新模塊程序,接管CPU控制權(quán),等待用戶通過調(diào)試器寫入新的局部固件;

      (2)用戶利用調(diào)試器下載新的局部固件到內(nèi)存,然后將該固件的名稱、大小和起始地址寫入到預(yù)定內(nèi)存,下載時通過腳本控制,采用分塊下載的方式,根據(jù)實際可用內(nèi)存的大小來調(diào)整分塊的大小;

      (3)當固件更新模塊監(jiān)控到上述預(yù)定內(nèi)存發(fā)生變化后,解析該預(yù)定內(nèi)存中的內(nèi)容,將新固件寫入到外存固件區(qū)的預(yù)留局部更新區(qū)域;

      (4)目錄添加模塊在文件目錄項區(qū)的末尾新增一條指向更新文件的目錄項. 這時,指向新版本文件的目錄項位于目錄項區(qū)的末尾,而指向舊版本文件的目錄項位于目錄項區(qū)域的前面;

      (5)提醒模塊提示更新結(jié)束,重啟系統(tǒng).

      若沒有收到,則進入程序加載狀態(tài),并執(zhí)行以下步驟:

      (1)目錄檢索模塊從文件目錄項區(qū)的末尾開始往前檢索,即可最先找到最新版本的程序?qū)?yīng)的目錄項;

      (2)程序加載模塊加載并運行更新后的程序;

      (3)調(diào)試模塊啟動調(diào)試器,調(diào)試更新后的程序.

      與JDO-FU方法相比,EL-FU方法不需要重新打包、擦除和燒寫整個固件,也不需要切換調(diào)試工具和燒寫工具,可縮短固件更新的時間,從而提高開發(fā)的效率. EL-FU方法適用于更新應(yīng)用程序、驅(qū)動程序、中間件、用戶接口資源文件和配置文件等固件,但該方法需要操作系統(tǒng)的協(xié)助來更新固件,因此該方法不適用于更新操作系統(tǒng).

      3 性能測試

      3.1 資源緊缺型嵌入式系統(tǒng)(RSES)上2種方法的固件更新效率對比

      在某資源緊缺型嵌入式系統(tǒng)(RSES)上,比較分別使用EL-FU、JDO-FU方法更新局部固件的效率.

      該RSES(圖8)的特征為:(1)屬于藍牙音頻片上系統(tǒng);(2)內(nèi)核為MIPS32 M4K、主頻為104 MHz、內(nèi)存為128 KB;(3)上層應(yīng)用的代碼約200 KB,藍牙協(xié)議棧的代碼約500 KB,操作系統(tǒng)、中間件和驅(qū)動程序等代碼約400 KB;(4)主要應(yīng)用于有屏音箱方案,支持藍牙播放、錄音、迷你卡拉OK和電子書等功能;(5)調(diào)試器使用SWD(Serial Wire Debug)模式,下載速率為5 Mbit/s;(6)具有芯片原廠統(tǒng)一發(fā)布的針對NAND FLASH量產(chǎn)的燒寫工具. 為了實現(xiàn)EL-FU方法,需要修改該RSES的操作系統(tǒng),但修改后的操作系統(tǒng)僅增加了3 KB代碼,對系統(tǒng)固件大小的改變可以忽略.

      圖8 測試裝置圖

      EL-FU方法的主要操作步驟包括:(1)切換到編譯目錄進行編譯;(2)重啟開發(fā)板,通過按鍵進入局部更新狀態(tài);(3)利用調(diào)試器下載新的局部固件;(4)重啟開發(fā)板,進入正常運行狀態(tài);(5)執(zhí)行調(diào)試命令,啟動調(diào)試. JDO-FU方法的主要操作步驟包括:(1)切換到編譯目錄進行編譯;(2)切換到打包目錄打包新的整體固件;(3)運行量產(chǎn)燒寫工具,下載新的整體固件;(4)重啟開發(fā)板,進入正常運行狀態(tài);(5)切換到新的固件目錄;(6)執(zhí)行調(diào)試命令,啟動調(diào)試.

      EL-FU方法能夠通過腳本控制來支持大容量(通常指超過100 KB)固件的更新. 在實際開發(fā)過程中,RSES需要更新的局部固件大小通常為30~100 KB. 因此,本文在該RSES上比較了分別采用EL-FU、JDO-FU方法更新大小分別為30、50、300 KB和1 MB的4個局部固件的時間. 其中,50、300 KB和1 MB的固件都是通過在30 KB固件的基礎(chǔ)上用0填充const data數(shù)據(jù)段來獲得的. 固件更新時間是指從某個應(yīng)用程序修改完源代碼算起,直至完成固件更新重新進入到程序調(diào)試入口所需要的時間,且為連續(xù)20次重復(fù)測試的平均值. 該過程中包含的切換開發(fā)工具、操作電腦目錄等動作均按照開發(fā)人員的日常操作速度來進行. 經(jīng)過80次的重復(fù)測試,在RSES上采用EL-FU方法更新固件的成功率為100%,且系統(tǒng)各項功能運行正常,無異常情況發(fā)生. 因此,在RSES上利用EL-FU方法更新固件是可靠和穩(wěn)定的.

      由測試結(jié)果(表1)可知:(1)在開發(fā)過程中,RSES采用傳統(tǒng)JDO-FU方法更新固件需要耗費近480 s的時間,采用EL-FU方法后固件更新時間縮短為67 s,可見,EL-FU方法能夠解決RSES在固件更新時所存在的效率低問題;(2)EL-FU方法的固件更新時間隨著固件大小的增加而小幅增長,這是因為其需要通過腳本控制來分塊下載大容量的固件;(3)JDO-FU方法的固件更新時間隨著固件大小的增加基本保持不變.

      表1 在RSES上利用2種方法更新固件的時間

      3.2 資源豐富型嵌入式系統(tǒng)(RRES)的固件更新

      為了進一步對比分析,在某資源豐富型嵌入式系統(tǒng)(RRES)上,測試了采用GDBL-FU方法更新大小分別為30、50、300 KB和1 MB的4個局部固件的效率(表2). 該RRES的特征為:(1)屬于樹莓派Raspberry Pi 3代B型;(2)內(nèi)核版本為linux-rpi-4.9.y;(3)CPU為四核ARM Cortex-A53,主頻為1.2 GHz;(4)內(nèi)存為1 GB. 可知,該系統(tǒng)的資源比上述RSES充裕很多,其操作系統(tǒng)已集成了調(diào)試子系統(tǒng),可以采用高效的固件局部更新GDBL-FU方法. 該方法的主要操作步驟包括:(1)切換到編譯目錄進行編譯;(2)下載新的局部固件;(3)執(zhí)行調(diào)試命令,啟動調(diào)試.

      由表2可知:在RRES上使用GDBL-FU方法的固件更新時間較短,且隨著局部固件大小的增加而略微增加(增加了1~2 s),所增加的1~2 s主要由步驟(2)的編譯過程產(chǎn)生. 對比上述RSES和RRES的特征,兩者的運算和內(nèi)存資源相差懸殊. 由于嵌入式系統(tǒng)的資源和成本成正比,因此,成本低的RSES在消費類電子產(chǎn)品中得到了廣泛的應(yīng)用. 然而,在RSES上使用傳統(tǒng)JDO-FU方法更新固件的效率低. 由表1和表2可知:在RSES上使用EL-FU方法更新固件的效率與在RRES上使用GDBL-FU方法更新固件的效率相近. 這表明:在RSES上使用EL-FU方法更新固件能夠克服運算和內(nèi)存資源少的限制,EL-FU方法是一種適用于RSES的高效固件更新方法.

      表2 在RRES上利用GDBL-FU方法更新固件的時間

      4 總結(jié)

      應(yīng)用廣泛的RSES在開發(fā)過程中需要頻繁地更新固件,而采用傳統(tǒng)的JDO-FU方法更新固件存在耗時長、效率低的問題. 因此,本文提出了一種高效的固件局部更新(EL-FU)方法. 在RSES上采用該方法,不需要使用燒寫工具,不需要打包整個固件,僅利用調(diào)試器就完成局部固件更新.

      測試結(jié)果表明:EL-FU方法能夠大大縮短RSES上固件更新的時間,并接近于在RRES上采用GDBL-FU方法更新固件所用時間;應(yīng)用了EL-FU方法的RSES具有可靠性與穩(wěn)定性. 可見,在RSES開發(fā)過程中,可采用EL-FU方法更新應(yīng)用程序、驅(qū)動程序、中間件、用戶接口資源文件和配置文件等固件.

      然而,本文所提出的EL-FU方法不能用于更新RSES的操作系統(tǒng),目前仍需要使用固件整體更新方法來更新操作系統(tǒng). 下一步將針對RSES繼續(xù)開展如下研究:(1)操作系統(tǒng)層的局部更新方法;(2)不需要操作系統(tǒng)協(xié)助的固件局部更新方法.

      猜你喜歡
      固件內(nèi)存嵌入式
      “春夏秋冬”的內(nèi)存
      當代陜西(2019年13期)2019-08-20 03:54:22
      搭建基于Qt的嵌入式開發(fā)平臺
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      基于固件的遠程身份認證
      提取ROM固件中的APP
      電腦愛好者(2015年7期)2015-04-09 08:54:02
      Altera加入嵌入式視覺聯(lián)盟
      一種通過USB接口的可靠固件升級技術(shù)
      倍福 CX8091嵌入式控制器
      自動化博覽(2014年4期)2014-02-28 22:31:15
      基于內(nèi)存的地理信息訪問技術(shù)
      奧林巴斯XZ—2新固件升級
      中國攝影(2014年1期)2014-02-24 01:50:23
      九寨沟县| 中卫市| 广安市| 台南市| 巴林右旗| 平乡县| 龙海市| 吴忠市| 易门县| 彰化县| 克拉玛依市| 二连浩特市| 舞钢市| 临汾市| 涟源市| 宜黄县| 陕西省| 温州市| 威远县| 安西县| 芮城县| 云和县| 沿河| 钟山县| 大余县| 营口市| 奉贤区| 逊克县| 广西| 广宁县| 依安县| 墨江| 花垣县| 澜沧| 平顺县| 青神县| 东阿县| 永仁县| 锡林浩特市| 丽水市| 镇远县|