1. 研究背景

现今,许多基于arm-linux平台开发的应用程序开发都具备了物理的网卡这样的外围设备,这也是为通过网络升级应用程序提供了诸多便利,网络的便捷,快速,稳定等诸多特点。今天,我们约定应用程序的自动升级与升级失败自动回滚所采用的升级方式是通过网络,当然,其他诸如usb,串口,sd卡等也可以类比实现。

2. 用到的工具

  • fw_printenv (这个在u-boot的tools/env)下能生成

生成fw_printenv需要用的命令为

    make env

同时还要拷贝fw_env.config到你的文件系统的/etc/fw_env.config中去
,具体可以百度

3. 实现的基本原理

  • 1.在u-boot中添加一个环境变量,命名为BOOTAPP_RETRYTIMES,具体在板载头文件中定义,比如,我移植TQ2416的开发板,而且在进入到引导内核之前,记得将该环境变量的值进行+1操作
那就在$(ROOTDIR)/include/configs/TQ2416.h下定义
#define BOOTAPP_RETRYTIMES 1
  • 2.在bootloader引导了内核启动后,进入到应用程序中时,读取该环境变量的值,判断该值如果超过3次,那么就运行上一版本的稳定程序,否则,清楚该变量的值为0,即:
unsigned char bootretrytime = getenv("BOOTAPP_RETRYTIMES");if(bootretrytime > 4){system("上一个版本的app");}else{system("刚才升级的app");system("fw_setenv BOOTAPP_RETRYTIMES 0");}

4.总结

其实,这样的理念可以用在许多不同场合的,适配不同处理器的程序自动升级以及升级失败回滚的方式上,利用bootloader引导程序中增加变量值,与应用程序中清除值,这种思维方式,可以实现诸多单片机程序的自动升级以及回滚等

ARM-Linux应用程序自动升级以及自动回滚的实现相关推荐

  1. Windows下ARM Linux应用程序开发环境搭建说明

    这是因为工作写的一个文档,主要是我们开发人员都不会Linux不会vi也不会命令行,于是研究了一下Windows系统调试ARM Linux程序的办法,在这共享一下. 1. 概述 嵌入式Linux系统的应 ...

  2. 一款SQL自动检查神器,再也不用担心SQL出错了,自动补全、回滚等功能大全

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:最美分享Coder 来源:http://suo.im/6uI ...

  3. SQL自动检查神器,再也不用担心SQL出错了,自动补全、回滚等功能大全

    点击关注公众号,实用技术文章及时了解 Yearning MYSQL 是一个SQL语句审核平台.提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间的那一环,功能丰富, ...

  4. 支付宝小程序灰度测试、版本回滚能力新上线

    小程序又有一新能力上线啦~ 为了让开发者们灵活管理小程序版本,减少小程序新版本发布时出现缺陷对线上用户体验造成影响,开发者在发布新版时,可先进行灰度测试. 同时可逐步扩大灰度范围,当灰度测试用户无明显 ...

  5. linux恢复到某一时间点,使用回滚磁盘功能如何实现将一块云盘的数据恢复到之前的某一时刻...

    本篇文章给大家带来的内容是关于如何使用回滚磁盘功能实现将一块云盘的数据恢复到之前的某一时刻,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 回滚云盘 如果当前系统出现问题,您希望将一块 ...

  6. linux应用程序固件升级,升级软件包

    - **只检查,不更新** ` sudo apt update` - **检查更新软件包** `sudo apt upgrade` 本机采用ubuntu16.04系统, 用`sudo apt upda ...

  7. mysql设置不主动提交无效_关闭事务自动提交无效,回滚也无效

    我是通过看数据库里面数据确认的.代码比较类似,就这么多 #!/usr/bin/python from MySQLdb import connect conn = connect(db="te ...

  8. linux 日志切割 自带,[日志分割回滚] 使用linux自带的logrotate对nginx日志进行分割...

    logrotate日志分割配置: # cat /etc/logrotate.d/nginx /data/nginx_logs/*.access_log         #nginx日志所在目录 { n ...

  9. 【转载】插件自动升级

    ESFramework介绍之(20)―― 插件自动升级 当我们的服务平台搭建成功后,所需要做的主要事情就是开发服务端功能插件(IFunAddin)和客户端插件(IPassiveAddin),每个插件对 ...

最新文章

  1. php企业网站源码安装教程,PHPSCUP企业建站系统v1.4 安装图文教程
  2. 谷歌又有手机黑科技:进入办公室就变静音,遇车祸自动报警
  3. Flask Web 开发 错误页面自定义
  4. Redis源码剖析(五)订阅与发布
  5. linux可执行文件格式
  6. [LeetCode] 169. Majority Element 多数元素
  7. mysql 查询慢 分析_MySQL优化:定位慢查询的两种方法以及使用explain分析SQL
  8. 歌谣--回顾2020 展望2021
  9. 阿里云朱照远:视频云2.0,更大规模、更智能、更清晰
  10. 外链引入css有哪些方式_CSS 文件的4种引入方式
  11. 百度地图API的使用教程以及案例
  12. jquery给title标签赋值
  13. 用python写名字
  14. 二维粒子群算法的matlab源程序,二维粒子群算法的matlab源程序
  15. html 百度地图坐标拾取,百度拾取坐标系统坐标反查是什么意思
  16. Elastic-Job原理--任务失败转移(五)
  17. 计算机无法调节亮度,win10屏幕亮度没反应如何处理_win10电脑屏幕亮度调不了怎么办...
  18. 前端解决图片404的问题
  19. 岑文初VS. 杨海朝
  20. 我玩过的所有热门的汉化GALGAME全介绍

热门文章

  1. 学习与脑力锻炼的关系
  2. iptables整理总结
  3. [转载]ffmpeg的使用
  4. mplus 软件_你的MPLUS总是报错怎么办?
  5. 《现代职业教育》杂志正规吗?现代职业教育杂志社现代职业教育编辑部投稿要求
  6. uniapp实现打印功能
  7. easyUI 滚动条
  8. 账套输出时文件服务器错误,账套输出时提示:连接失败,运行时错误53,文件未找到...
  9. Mac下抓包工具Charles的使用
  10. learn task01