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

        ?

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

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

        黃 鑫, 吳躍前, 王德明

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

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

        固件(包括操作系統(tǒng)、應(yīng)用程序、驅(qū)動(dòng)程序、中間件、用戶(hù)接口資源文件和配置文件等)是嵌入式系統(tǒng)中基礎(chǔ)、底層的工作軟件. 嵌入式系統(tǒng)在開(kāi)發(fā)過(guò)程中需要頻繁更新固件來(lái)進(jìn)行調(diào)試,在使用過(guò)程中也需要偶爾更新固件來(lái)進(jìn)行功能升級(jí)[3]. 根據(jù)運(yùn)算和內(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級(jí)以上,其操作系統(tǒng)已集成了調(diào)試子系統(tǒng),可以采用高效的基于GDBServer的固件局部更新方法(GDBServer-based Local Firmware Update,GDBL-FU)[7];RSES的內(nèi)存在MB級(jí)以下,不足以支撐GDB調(diào)試機(jī)制,一般采用低效、耗時(shí)的固件整體更新方法. 然而,RSES因?yàn)槠涑杀镜偷膬?yōu)勢(shì),在消費(fèi)類(lèi)電子產(chǎn)品中廣泛應(yīng)用.

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

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

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

        圖1 RSES的典型固件分布

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

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

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

        圖3 JDO-FU方法的流程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        3 性能測(cè)試

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

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

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

        圖8 測(cè)試裝置圖

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

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

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

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

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

        為了進(jìn)一步對(duì)比分析,在某資源豐富型嵌入式系統(tǒng)(RRES)上,測(cè)試了采用GDBL-FU方法更新大小分別為30、50、300 KB和1 MB的4個(gè)局部固件的效率(表2). 該RRES的特征為:(1)屬于樹(shù)莓派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)切換到編譯目錄進(jìn)行編譯;(2)下載新的局部固件;(3)執(zhí)行調(diào)試命令,啟動(dòng)調(diào)試.

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

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

        4 總結(jié)

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

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

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

        猜你喜歡
        固件內(nèi)存嵌入式
        “春夏秋冬”的內(nèi)存
        搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        基于固件的遠(yuǎn)程身份認(rèn)證
        提取ROM固件中的APP
        Altera加入嵌入式視覺(jué)聯(lián)盟
        一種通過(guò)USB接口的可靠固件升級(jí)技術(shù)
        倍福 CX8091嵌入式控制器
        基于內(nèi)存的地理信息訪(fǎng)問(wèn)技術(shù)
        奧林巴斯XZ—2新固件升級(jí)
        成人影院免费观看在线播放视频| 午夜裸体性播放| 在线观看精品视频网站| 无遮挡边吃摸边吃奶边做| 中文人妻熟女乱又乱精品| 51国产黑色丝袜高跟鞋| 少妇高潮惨叫久久久久久| 亚洲欧美日韩在线精品2021| 日本熟女视频一区二区三区| 极品粉嫩小仙女高潮喷水操av| 美女不带套日出白浆免费视频| 亚洲男人的天堂网站| 国内精品国产三级国产av另类| 亚洲一区二区三区久久不卡| 国产精品高清亚洲精品| 最新中文字幕日韩精品| 亚洲香蕉成人av网站在线观看| 免费无码毛片一区二区三区a片| 91青草久久久久久清纯| 亚洲精品综合久久国产二区| 一区二区三区人妻少妇| 久久精品无码一区二区三区免费| 中文字幕无码免费久久| 手机av男人天堂免费网址 | 激情五月天色婷婷久久| 人妻中文字幕在线网站| 亚洲日韩av无码中文字幕美国| 无码国产精品第100页| 中文字幕亚洲精品一二三区| 丰满的少妇av一区二区三区| 色视频综合无码一区二区三区| 超薄肉色丝袜一区二区| 开心五月婷婷综合网站| 亚洲在线精品一区二区三区| 五月丁香六月综合缴清无码| 亚洲精品久久久久久动漫| 亚洲日产国无码| 精华国产一区二区三区| 偷国产乱人伦偷精品视频| 亚洲av第一成肉网| 久久中文字幕av第二页|