ARM-Linux应用程序自动升级以及自动回滚的实现
2015-10-27 16:48
507 查看
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引导程序中增加变量值,与应用程序中清除值,这种思维方式,可以实现诸多单片机程序的自动升级以及回滚等相关文章推荐
- 疯狂配置第一弹:Linux下安装Java环境
- linux系统安装(三)-跨系统文件拷贝工具Winscp
- linux下解压命令大全
- linux 下查看网卡工作速率
- Linux和windows下检查jsp后门文件的方法
- Linux C 重定向简单范例
- JDK介绍 && linux下JDK 环境变量设置
- linux下搭建SVN服务器
- Linux 在主要的搜索命令和视图的信息
- Linux系统启动过程
- rsync实现linux与windows数据同步
- Linux里如何查找文件内容
- linux centos python scrapy 环境配置
- Linux常见问题
- linux 4000 操作命令
- linux系统安装(二)-远程登录管理工具SecureCRT
- Linux tty1(ctrl+alt+f1)上下滚屏
- 查看linux系统硬件信息
- linux下修改网卡接口名称
- PASSION之Linux命令详解