0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一種同時至此本地和遠(yuǎn)程升級的方法

strongerHuang ? 來源:CSDN ? 作者:li_wen01 ? 2022-06-13 09:33 ? 次閱讀

嵌入式Linux設(shè)備要進(jìn)行軟件升級有很種多方式方法,總的來說可以分為本地升級和遠(yuǎn)程升級。

本地升級包括升級工具升級,存儲介質(zhì)升級等,遠(yuǎn)程升級是指通過網(wǎng)絡(luò)進(jìn)行程序升級。

這里介紹一種同時至此本地和遠(yuǎn)程升級的方法,以供參考。

本地升級

(1)升級工具升級

現(xiàn)在的升級工具有很多,不同的芯片支持不同的工具,比如jlink,串口等,海思的芯片提供Hitool升級工具。升級工具升級直接參考芯片手冊就可以了,這里不再介紹。

(2)存儲設(shè)備升級

常見的存儲設(shè)備有SD卡,TF卡,U盤,硬盤等。將升級文件拷貝到存儲設(shè)備中,設(shè)備啟動的時候,通過uboot去檢索存儲設(shè)備中是否有升級文件,如果有,則直接進(jìn)行升級。

遠(yuǎn)程升級:

(1)uboot通過FTP服務(wù)下載升級文件升級

其實(shí)該方法可以說是本地升級也可以說是網(wǎng)絡(luò)升級,uboot啟動之后,設(shè)置uboot的網(wǎng)絡(luò)參數(shù)和FTP服務(wù),通過網(wǎng)絡(luò)將升級文件下載到內(nèi)存中,然后再通過uboot的flash擦除了寫入指令,將升級文件直接寫入到flash的指定位置上。

這種方式用來進(jìn)行設(shè)備調(diào)試就可以,方便快捷,但它不能批量操作,也不能程序自動升級,需要人為的輔助。

(2)通過應(yīng)用程序網(wǎng)絡(luò)升級

該方法是嵌入式linux設(shè)備遠(yuǎn)程升級的最常用的方式。基本流程是:linux系統(tǒng)啟動之后,通過應(yīng)用程序從服務(wù)器中下載升級文件進(jìn)行程序升級。該方法不需要認(rèn)為操作,可設(shè)計(jì)程序自動全部升級。

本地和遠(yuǎn)程同時升級

下面介紹一種可以同時至此本地升級和遠(yuǎn)程升級的方法,首先看下圖:

1df604f2-eab2-11ec-ba43-dac502259ad0.jpg

Flash數(shù)據(jù)分布示意圖

假設(shè)有個64M的flash,間Flash分成uboot,kernel,roootfs,app,para 五個分區(qū)。然后我們在參數(shù)區(qū)para分區(qū)的開始一段空間用來存儲升級文件的版本信息。

參數(shù)區(qū)的深藍(lán)色區(qū)域用來存儲軟件的版本信息,橙色區(qū)域用來存儲網(wǎng)絡(luò)升級參數(shù)。下面以kernel升級為例,具體說明本地升級與網(wǎng)絡(luò)升級的流程,其它模塊升級于此相同。

(1)制作升級文件

編譯器或是交叉編譯工具編譯生成的文件多數(shù)是二進(jìn)制文件,也就是單純的一個升級文件,不包含其他信息。攜帶更多的升級信息,我們可以將二進(jìn)制升級文件.bin 打包成img 文件。

在Linux系統(tǒng)中可以直接使用mkimage命令,該命令可以指定CPU類型,img類型,壓縮類型,內(nèi)核的入口地址,頭結(jié)構(gòu)的名字,image的載入地址等等信息。

(2)本地升級實(shí)現(xiàn)

將img文件拷貝到U盤中插入設(shè)備。uboot需要為升級做如下操作:uboot起來之后,去掃描是否有插入存儲設(shè)備,如果有存儲設(shè)備,則掃描存儲設(shè)備中是否有升級文件,以升級kernel為例,假設(shè)升級文件名為update_kernl.img。

當(dāng)uboot檢測到update_kernel.img文件后,去解析該img文件的文件頭。將有用信息提取出來,比如文件頭里的時間,img的創(chuàng)建時間等。

以這些作為升級參數(shù),與上面flash圖參數(shù)區(qū)中的Kernel Para版本做比較,如果一樣則不進(jìn)行升級操作,如果不一樣,則將img文件中的升級文件數(shù)據(jù)寫入到flash的指定位置中去。

最后更新Flash參數(shù)區(qū)kernel的版本信息。也就是上面圖中參數(shù)區(qū)深藍(lán)色中的Kernel Para。到此就完成了本地升級的操作。

(3)遠(yuǎn)程升級實(shí)現(xiàn)

首先將升級文件update_kernel.img從服務(wù)器中下載下來,與本地升級類似,提取update_kernel.img的頭文件信息與Kernel Para參數(shù)做比較,如果不一樣就升級。

一般升級地址是存在uboot的參數(shù)里,所以我們可以先將升級文件放到內(nèi)存中(Hi3520芯片有一部分內(nèi)存是用來做編解碼的,軟重啟內(nèi)存的數(shù)據(jù)不會被清空),uboot重啟之后再進(jìn)行升級操作。

在重啟之前,將升級文件存放的地址AddrPhy,升級文件的校驗(yàn)信息DataCrc32,版本信息Version存放到flash的參數(shù)區(qū)去。

也就是上圖參數(shù)區(qū)的橙色位置。uboot重啟之后,去讀取上圖中flash參數(shù)區(qū)的橙色區(qū)域信息,看是否有需要升級的文件,如果有就按照升級參數(shù)的地址去讀取升級文件,然后再將升級文件寫到flash的固定位置去,最后更新參數(shù)區(qū)的升級信息。這樣就完成了遠(yuǎn)程的升級操作。

上面介紹的升級方法,只介紹了基本的思路,詳細(xì)實(shí)現(xiàn)內(nèi)容太多不再介紹。如有更好的方法,歡迎評論指導(dǎo)。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5086

    文章

    19142

    瀏覽量

    306035
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11314

    瀏覽量

    209807

原文標(biāo)題:嵌入式本地和遠(yuǎn)程升級程序的方法

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    PLC網(wǎng)關(guān),plc遠(yuǎn)程通信 ——?跨越距離遠(yuǎn)程控制運(yùn)維升級

    在日新月異的工業(yè)4.0時代,智能化、網(wǎng)絡(luò)化已成為制造業(yè)轉(zhuǎn)型升級的關(guān)鍵詞。其中,PLC(可編程邏輯控制器)作為工業(yè)自動化控制的核心設(shè)備,其遠(yuǎn)程通信技術(shù)的突破,正引領(lǐng)著場前所未有的工業(yè)變革。今天
    的頭像 發(fā)表于 12-16 18:40 ?236次閱讀
    PLC網(wǎng)關(guān),plc<b class='flag-5'>遠(yuǎn)程</b>通信 ——?跨越距離<b class='flag-5'>遠(yuǎn)程</b>控制運(yùn)維<b class='flag-5'>升級</b>

    【OTA升級】無需數(shù)據(jù)線,條命令即可完成固件升級!

    OTA無線升級過程視頻演示:OTA介紹OTA(Over-The-Air,空中升級)是一種通過無線通信技術(shù)實(shí)現(xiàn)遠(yuǎn)程更新設(shè)備固件或軟件的方法。設(shè)
    的頭像 發(fā)表于 12-11 01:00 ?780次閱讀
    【OTA<b class='flag-5'>升級</b>】無需數(shù)據(jù)線,<b class='flag-5'>一</b>條命令即可完成固件<b class='flag-5'>升級</b>!

    一種創(chuàng)新的動態(tài)軌跡預(yù)測方法

    本文提出了一種動態(tài)軌跡預(yù)測方法,通過結(jié)合歷史幀和歷史預(yù)測結(jié)果來提高預(yù)測的穩(wěn)定性和準(zhǔn)確性。它引入了歷史預(yù)測注意力模塊,以編碼連續(xù)預(yù)測之間的動態(tài)關(guān)系,并通過三重因子注意力模塊實(shí)現(xiàn)了最先進(jìn)的性能。本方法能夠生成準(zhǔn)確且穩(wěn)定的未來軌跡,這
    的頭像 發(fā)表于 10-28 14:34 ?452次閱讀
    <b class='flag-5'>一種</b>創(chuàng)新的動態(tài)軌跡預(yù)測<b class='flag-5'>方法</b>

    一種簡單高效配置FPGA的方法

    本文描述了一種簡單高效配置FPGA的方法,該方法利用微處理器從串行外圍接口(SPI)閃存配置FPGA設(shè)備。這種方法減少了硬件組件、板空間和成本。
    的頭像 發(fā)表于 10-24 14:57 ?672次閱讀
    <b class='flag-5'>一種</b>簡單高效配置FPGA的<b class='flag-5'>方法</b>

    一種利用wireshark對遠(yuǎn)程服務(wù)器/路由器網(wǎng)絡(luò)抓包方法

    一種利用wireshark對遠(yuǎn)程服務(wù)器/路由器網(wǎng)絡(luò)抓包方法
    的頭像 發(fā)表于 09-21 08:03 ?3188次閱讀
    <b class='flag-5'>一種</b>利用wireshark對<b class='flag-5'>遠(yuǎn)程</b>服務(wù)器/路由器網(wǎng)絡(luò)抓包<b class='flag-5'>方法</b>

    變頻器如何切換遠(yuǎn)程本地

    ,變頻器的控制方式通常分為遠(yuǎn)程控制和本地控制兩遠(yuǎn)程控制是指通過通信網(wǎng)絡(luò)實(shí)現(xiàn)對變頻器的遠(yuǎn)程操作和監(jiān)控,而
    的頭像 發(fā)表于 08-25 10:26 ?2136次閱讀

    Dubbo源碼淺析()—RPC框架與Dubbo

    時,就像調(diào)用本地過程樣方便。 1.2 RPC與Http的關(guān)系 用句話來總結(jié)就是: RPC是一種概念,http是一種協(xié)議,可以認(rèn)
    的頭像 發(fā)表于 08-16 15:18 ?777次閱讀
    Dubbo源碼淺析(<b class='flag-5'>一</b>)—RPC框架與Dubbo

    TMP411-Q1遠(yuǎn)程本地溫度傳感器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TMP411-Q1遠(yuǎn)程本地溫度傳感器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-15 10:15 ?0次下載
    TMP411-Q1<b class='flag-5'>遠(yuǎn)程</b>和<b class='flag-5'>本地</b>溫度傳感器數(shù)據(jù)表

    一種無透鏡成像的新方法

    使用OAM-HHG EUV光束對高度周期性結(jié)構(gòu)進(jìn)行成像的EUV聚光顯微鏡 為了研究微電子或光子元件中的納米級圖案,一種基于無透鏡成像的新方法可以實(shí)現(xiàn)近乎完美的高分辨率顯微鏡。 層析成像是一種強(qiáng)大的無
    的頭像 發(fā)表于 07-19 06:20 ?403次閱讀
    <b class='flag-5'>一種</b>無透鏡成像的新<b class='flag-5'>方法</b>

    rup是一種什么模型

    RUP(Rational Unified Process,統(tǒng)建模語言)是一種軟件開發(fā)過程模型,它是一種迭代和增量的軟件開發(fā)方法。RUP是由Rational Software公司(現(xiàn)為
    的頭像 發(fā)表于 07-09 10:13 ?1312次閱讀

    如何用stm8s的IAP實(shí)現(xiàn)wifi遠(yuǎn)程升級?

    最近有個項(xiàng)目客戶提出需要遠(yuǎn)程升級,系統(tǒng)中已有wifi模塊,本意想通過wifi模塊透傳(串口)給stm8s105或者207芯片升級,但是看資料說bootloader這邊牽扯到中斷向量共
    發(fā)表于 04-25 07:25

    通過RK3568開發(fā)板進(jìn)行OTA本地程序升級

    說起OTA我們應(yīng)該都不陌生,它是一種可以為設(shè)備無損失升級系統(tǒng)的方式,能將新功能遠(yuǎn)程部署到產(chǎn)品上。我們不僅可以通過網(wǎng)絡(luò)下載OTA升級包,也可以通過下載OTA
    發(fā)表于 04-20 11:23

    技術(shù)帖 | RK3568開發(fā)板的OTA升級教程

    說起OTA我們應(yīng)該都不陌生,它是一種可以為設(shè)備無損失升級系統(tǒng)的方式,能將新功能遠(yuǎn)程部署到產(chǎn)品上。我們不僅可以通過網(wǎng)絡(luò)下載OTA升級包,也可以通過下載OTA
    的頭像 發(fā)表于 04-20 08:01 ?1668次閱讀
    技術(shù)帖 | RK3568開發(fā)板的OTA<b class='flag-5'>升級</b>教程

    一種簡單易行的可編程振蕩器構(gòu)建方法

    本文介紹一種簡單易行的可編程振蕩器構(gòu)建方法,其中振蕩頻率和幅度可以通過使用digiPOT來彼此獨(dú)立地調(diào)節(jié)。
    發(fā)表于 01-15 10:05 ?252次閱讀
    <b class='flag-5'>一種</b>簡單易行的可編程振蕩器構(gòu)建<b class='flag-5'>方法</b>

    介紹一種使用2D材料進(jìn)行3D集成的新方法

    美國賓夕法尼亞州立大學(xué)的研究人員展示了一種使用2D材料進(jìn)行3D集成的新穎方法。
    的頭像 發(fā)表于 01-13 11:37 ?1086次閱讀