0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种同时至此本地和远程升级的方法

strongerHuang 来源:CSDN 作者:li_wen01 2022-06-13 09:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式Linux设备要进行软件升级有很种多方式方法,总的来说可以分为本地升级和远程升级。

本地升级包括升级工具升级,存储介质升级等,远程升级是指通过网络进行程序升级。

这里介绍一种同时至此本地和远程升级的方法,以供参考。

本地升级

(1)升级工具升级

现在的升级工具有很多,不同的芯片支持不同的工具,比如jlink,串口等,海思的芯片提供Hitool升级工具。升级工具升级直接参考芯片手册就可以了,这里不再介绍。

(2)存储设备升级

常见的存储设备有SD卡,TF卡,U盘,硬盘等。将升级文件拷贝到存储设备中,设备启动的时候,通过uboot去检索存储设备中是否有升级文件,如果有,则直接进行升级。

远程升级:

(1)uboot通过FTP服务下载升级文件升级

其实该方法可以说是本地升级也可以说是网络升级,uboot启动之后,设置uboot的网络参数和FTP服务,通过网络将升级文件下载到内存中,然后再通过uboot的flash擦除了写入指令,将升级文件直接写入到flash的指定位置上。

这种方式用来进行设备调试就可以,方便快捷,但它不能批量操作,也不能程序自动升级,需要人为的辅助。

(2)通过应用程序网络升级

该方法是嵌入式linux设备远程升级的最常用的方式。基本流程是:linux系统启动之后,通过应用程序从服务器中下载升级文件进行程序升级。该方法不需要认为操作,可设计程序自动全部升级。

本地和远程同时升级

下面介绍一种可以同时至此本地升级和远程升级的方法,首先看下图:

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

Flash数据分布示意图

假设有个64M的flash,间Flash分成uboot,kernel,roootfs,app,para 五个分区。然后我们在参数区para分区的开始一段空间用来存储升级文件的版本信息。

参数区的深蓝色区域用来存储软件的版本信息,橙色区域用来存储网络升级参数。下面以kernel升级为例,具体说明本地升级与网络升级的流程,其它模块升级于此相同。

(1)制作升级文件

编译器或是交叉编译工具编译生成的文件多数是二进制文件,也就是单纯的一个升级文件,不包含其他信息。携带更多的升级信息,我们可以将二进制升级文件.bin 打包成img 文件。

在Linux系统中可以直接使用mkimage命令,该命令可以指定CPU类型,img类型,压缩类型,内核的入口地址,头结构的名字,image的载入地址等等信息。

(2)本地升级实现

将img文件拷贝到U盘中插入设备。uboot需要为升级做如下操作:uboot起来之后,去扫描是否有插入存储设备,如果有存储设备,则扫描存储设备中是否有升级文件,以升级kernel为例,假设升级文件名为update_kernl.img。

当uboot检测到update_kernel.img文件后,去解析该img文件的文件头。将有用信息提取出来,比如文件头里的时间,img的创建时间等。

以这些作为升级参数,与上面flash图参数区中的Kernel Para版本做比较,如果一样则不进行升级操作,如果不一样,则将img文件中的升级文件数据写入到flash的指定位置中去。

最后更新Flash参数区kernel的版本信息。也就是上面图中参数区深蓝色中的Kernel Para。到此就完成了本地升级的操作。

(3)远程升级实现

首先将升级文件update_kernel.img从服务器中下载下来,与本地升级类似,提取update_kernel.img的头文件信息与Kernel Para参数做比较,如果不一样就升级。

一般升级地址是存在uboot的参数里,所以我们可以先将升级文件放到内存中(Hi3520芯片有一部分内存是用来做编解码的,软重启内存的数据不会被清空),uboot重启之后再进行升级操作。

在重启之前,将升级文件存放的地址AddrPhy,升级文件的校验信息DataCrc32,版本信息Version存放到flash的参数区去。

也就是上图参数区的橙色位置。uboot重启之后,去读取上图中flash参数区的橙色区域信息,看是否有需要升级的文件,如果有就按照升级参数的地址去读取升级文件,然后再将升级文件写到flash的固定位置去,最后更新参数区的升级信息。这样就完成了远程的升级操作。

上面介绍的升级方法,只介绍了基本的思路,详细实现内容太多不再介绍。如有更好的方法,欢迎评论指导。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20146

    浏览量

    328790
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217962

原文标题:嵌入式本地和远程升级程序的方法

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    指令集测试的一种纠错方法

    本文描述在进行指令集测试的一种纠错方法 1.打开测试指令集对应的dump文件 dump文件是指由汇编文件进行反汇编之后,可以供人阅读指令的反汇编文件。其包含了每条指令的具体操作的信息。指令集测试
    发表于 10-24 14:04

    使用RTT的维护云进行远程固件升级(OTA),怎么没有网络升级的方式?

    使用RTT的维护云进行远程固件升级(OTA),怎么没有网络升级的方式的?只有蓝牙,近距离的固件升级。详细如图所示,只有蓝牙,没有连接互联网,通过固件上传服务器进行在线
    发表于 10-13 06:36

    一种新的无刷直流电机反电动势检测方法

    无位置传感器无刷直流电机的控制算法是近年来研究的热点之,有霍尔位置信号直流电机根据霍尔状态来确定通断功率器件。利用无刷直流电机的数学模型,根据反电动势检测原理,提出了一种新的线反电动势检测方法
    发表于 08-07 14:29

    一种新的无刷直流电机反电动势检测方法

    无位置传感器无刷直流电机的控制算法是近年来研究的热点之,有霍尔位置信号直流电机根据霍尔状态来确定通断功率器件。利用无刷直流电机的数学模型,根据反电动势检测原理,提出了一种新的线反电动势检测方法
    发表于 08-04 14:59

    Texas Instruments TMP4718远程本地温度传感器数据手册

    Texas Instruments TMP4718高精度远程本地温度传感器具有本地集成传感器和
    的头像 发表于 08-04 13:54 909次阅读
    Texas Instruments TMP4718<b class='flag-5'>远程</b>和<b class='flag-5'>本地</b>温度传感器数据手册

    一种无序超均匀固体器件的网格优化方法

    近日,天津大学精密仪器与光电子工程学院的光子芯片实验室研发了一种无序超均匀固体器件的网格优化方法,成果获中国发明专利(ZL202410659505.2)授权。
    的头像 发表于 07-28 16:10 738次阅读
    <b class='flag-5'>一种</b>无序超均匀固体器件的网格优化<b class='flag-5'>方法</b>

    ESP32通过OTA无线局域网远程升级下载程序

    本文介绍了ESP32通过OTA无线局域网远程升级固件的基本方法
    的头像 发表于 07-22 13:21 1475次阅读
    ESP32通过OTA无线局域网<b class='flag-5'>远程</b><b class='flag-5'>升级</b>下载程序

    汉思新材料取得一种PCB板封装胶及其制备方法的专利

    汉思新材料取得一种PCB板封装胶及其制备方法的专利汉思新材料(深圳市汉思新材料科技有限公司)于2023年取得了项关于PCB板封装胶及其制备方法的发明专利(专利号:CN20231015
    的头像 发表于 06-27 14:30 452次阅读
    汉思新材料取得<b class='flag-5'>一种</b>PCB板封装胶及其制备<b class='flag-5'>方法</b>的专利

    RK3568开发板OTA升级

    OTA(Over-The-Air)升级作为一种无损失的系统升级方式,能够远程将新功能部署到产品上,极大地提高了设备的可维护性和可扩展性。除了通过网络直接下载OTA
    的头像 发表于 04-21 14:32 1247次阅读
    RK3568开发板OTA<b class='flag-5'>升级</b>

    【干货】基于串口的FPGA远程升级

    变得简单有趣,记得给我点赞留言,让我知道你也在这趟奇妙的旅程里哦。远程升级简介远程升级的实质是通过远程且不影响当前芯片工作状态的方式实现芯片
    的头像 发表于 04-14 09:53 1713次阅读
    【干货】基于串口的FPGA<b class='flag-5'>远程</b><b class='flag-5'>升级</b>

    文解锁OTA远程升级方案!基于RK3562全国产平台

    在设备维护成本高、用户体验难提升的双重难题下,OTA(Over-the-Air)空间下载技术的出现,无疑成为破解困境的“金钥匙”,它是一种通过无线网络实现设备远程升级的技术,全程数据无损。OTA既可
    的头像 发表于 04-07 10:15 1075次阅读
    <b class='flag-5'>一</b>文解锁OTA<b class='flag-5'>远程</b><b class='flag-5'>升级</b>方案!基于RK3562全国产平台

    一种分段气隙的CLLC变换器平面变压器设计

    气隙设计的优点。 目录1 概述2 一种分段气隙的CLLC平面变压器设计3 实验验证4 参考文献 1 概述学者们从LLC拓扑原理、新型器件、改进拓扑、先进调制方法、谐振参数优化方法、磁性器件设计
    发表于 03-27 13:57

    一种永磁电机用转子组件制作方法

    一种永磁电机所使用的转子组件,是由磁钢与芯轴组装而成,产品工作转速80 000 r /mi n,磁钢相对于芯轴的同轴度要小于O.015 mm。现有的装配方法是:先在芯轴两端面制作中心孔,然后直接
    发表于 03-25 15:20

    PLC网关,plc远程通信 —— 跨越距离远程控制运维升级

    在日新月异的工业4.0时代,智能化、网络化已成为制造业转型升级的关键词。其中,PLC(可编程逻辑控制器)作为工业自动化控制的核心设备,其远程通信技术的突破,正引领着场前所未有的工业变革。今天
    的头像 发表于 12-16 18:40 840次阅读
    PLC网关,plc<b class='flag-5'>远程</b>通信 —— 跨越距离<b class='flag-5'>远程</b>控制运维<b class='flag-5'>升级</b>

    【OTA升级】无需数据线,条命令即可完成固件升级

    OTA无线升级过程视频演示:OTA介绍OTA(Over-The-Air,空中升级)是一种通过无线通信技术实现远程更新设备固件或软件的方法。设
    的头像 发表于 12-11 01:00 5437次阅读
    【OTA<b class='flag-5'>升级</b>】无需数据线,<b class='flag-5'>一</b>条命令即可完成固件<b class='flag-5'>升级</b>!