MT7628指定分区备份固件

        为了避免升级过程突然断电,或者其他不良操作导致的路由器“变砖”。在MT7628使用过程中,我们可以对固件进行备份。

        MT7628原厂SDK有关于双备份的选项,选择对应选项后,可对固件进行备份。下面以SKYLAB的SKW92A模组为例进行测试说明:

1.编译时,选择Dual Image

使用过程中,由于Uboot+Fireware的大小一般超过4MByte,对应flash选用8MByte空间。要备份Firmware部分,而Flash的大小一般是倍数增加,因此选择16MByte的Flash。如下:

如上选择后,打包的uboot.bin文件运行后,对应的如下,后面8Mbyte用来备份Firmware。对应分区划分如下:

0x000000000000-0x000000030000 : "Bootloader"
0x000000030000-0x000000040000 : "Config"
0x000000040000-0x000000050000 : "Factory"
0x000000050000-0x000000800000 : "Kernel"
0x000000800000-0x000001000000 : 备份固件

这种情况适用于固件损坏恢复到原固件的场景。

Uboot源码做了一些变量的检测比较,在实际应用中,我们发现次变量并没有用处,反而造成OK的应用固件被备份固件覆盖,因此去掉了这部分的代码,如下所示:

文件:./lib_mips/board.c,在board.c文件中,我们可以修改固件备份的判断逻辑,这里主要会根据划分的地址计算对应的CRC值,若是各分区的CRC计算正确,可以判断固件没有损坏。若是想在升级后,让备份分区的内容同步为升级后的固件也可以在此文件做修改。

1.1测试

初次启动时,back分区没有数据,启动时检测失败,此时应用分区的固件会被拷贝到back分区如下:

再次启动时,不在需要备份,检测通过后,直接运行:

但是当用户应用过程中,固件大于8Mbyte又想做备份功能时,这个方法将不能使用。因此,我们需要修改Uboot源码,将备份分区划分更小的空间。下面的示例中,我们将Flash最后的4Mbyte分区划分为Back分区,用于应用固件损害时,通过备份固件使得模组可访问,达到恢复的目的。

2.修改备份分区的大小

分区划分如下:需要说明,Back分区的固件和应用固件此时是不相同的。应用固件可以超过8Mbyte,Back固件不能超过4Mbyte。

对应地址如下:

0x000000000000-0x000000030000 : "Bootloader"
0x000000030000-0x000000040000 : "Config"
0x000000040000-0x000000050000 : "Factory"
0x000000050000-0x000000C00000 : "Kernel"
0x000000c00000-0x000001000000 : 备份固件

修改内容如下:由于SKW92A对应主芯片为MT7628,因此修改时,需要注意型号。

路径:./include/configs/rt2880.h,在此文件中我们主要修改地址,后面检测时,根据地址范围计算CRC值,因为地址划分很重要。

文件:./lib_mips/board.c。此处不需要修改。

2.1.测试

我们需要先将系统升级为要备份的固件,主要Back固件不要大于4Mbyte,若是大于4Mbyte会出现如下提示:

将固件升级为back固件,再次启动,即可备份固件。如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【专项刷题】— 快排

1、颜色分类 - 力扣(LeetCode) 思路: 创建三个指针,然后把数组分为三个区域遍历代码: class Solution {public void swap(int[] nums, int i, int j){int t nums[i];nums[i] nums[j];nums[j] t;}public void sortCo…

百度网盘Android一二面凉经(2024)

百度网盘Android一二面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《百度网盘Android一二面凉经(2024)》。 面试职位: 网盘主端研发组_Android高级研…

细说MCU用定时器控制单路DAC模块设计和输出锯齿波的实现方法

目录 一、参考工程 二、仅提供不同的配置 1、用定时器控制DAC输出 2、配置定时器参数 三、代码修改 四、 运行并观察显示效果 一、参考工程 本工程依赖作者的文章:细说MCU用单路DAC模块设计和输出锯齿波的实现方法-CSDN博客 https://wenchm.blog.csdn.net/ar…

Python 如何对上万、百万、亿级数据去重?

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 今天我们要一起探索一个让数据工程师、数据科学家和开发者们都头疼的问题:如何对海量数据进行去重。随着数据量的不断增长,我们在处理数据时,去重操作…

要么利用规则,要么打破规则

在这个充满规则和标准的世界里,我们常常被告知要如何生活、如何成功。但事实上,这些规则和标准往往限制了我们的潜力和创造力。本文将探讨如何不被外界规则所束缚,活出自己的风采。 规则的双刃剑 规则和标准可以为社会带来秩序,…

JavaScript进阶之构造函数数据常用函数

目录 一、深入对象1.1 创建对象的三种方式1.2 构造函数1.3 实例成员&静态成员 二、内置构造函数2.1 Object2.2 Array2.3 String常见实例方法2.4 Number 一、深入对象 1.1 创建对象的三种方式 利用对象字面量创建对象利用new object创建对象 const obj new Object({})利用…

SAP 如何修改统驭科目类型

在SAP中,科目设置错了统驭科目类型并且记账了要如何修改? 例如:前期应收账款对应的统驭科目类型前期设置成了供应商,并且供应商用该科目过来账,现在需要调整,想要将供应商调整到客户,科目为当前…

Java | Leetcode Java题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; class Solution {public int missingNumber(int[] nums) {int n nums.length;int total n * (n 1) / 2;int arrSum 0;for (int i 0; i < n; i) {arrSum nums[i];}return total - arrSum;} }

ros2--QOS--通信质量

在ros2通信编程中&#xff0c;总有一个和qos相关的参数&#xff1a; publisher: template<typename MessageT, typename AllocatorT, typename PublisherT> std::shared_ptr<PublisherT> Node::create_publisher(const std::string & topic_name,const rclcp…

Linux安装Redis5.0镜像、Mysql8.0镜像

docker 安装Redis &#xff08;全网最详细&#xff1a;附带配置文件&#xff09;_docker pull redis-CSDN博客 Docker实用-安装Mysql8 - 简书 改动&#xff1a; 指定&#xff1a;docker pull mysql:8.0 docker run -d -p 3306:3306 \ --restartalways \ --privilegedtrue \…

088、Python 读取Excel文件及一些操作(使用xlwtxlrd库)

要读取Excel文件&#xff0c;我们需要使用第三方库。 xlrd库是一个常用的读取Excel的第三方库&#xff0c;它同时支持.xls和.xlsx&#xff0c;不过xlrd从版本2.0.0开始不再支持.xlsx的读取&#xff0c;需要单独使用openpyxl。 要使用第三方库&#xff0c;首选需安装&#xff…

学习系列一:YOLO系列目标检测框架之间介绍及对比

YOLO系列目标检测框架之间介绍及对比 华为HCIP AI高级工程师证书&#xff0c; 华为HCIA AI证书&#xff0c;目前从事视觉算法工作 文章目录 YOLO系列目标检测框架之间介绍及对比前言一、YOLOv1二、YOLOv2三、YOLOv3四、YOLOv4五、YOLOv5及后续算法 前言 YOLO系列算法 YOLO 创…

树与二叉树学习笔记

树与二叉树 计算机中的树树的概念树的类型 什么是二叉树二叉树&#xff1a;定义与特点二叉树&#xff1a;前序、中序、后序遍历二叉树&#xff1a;深度、广度优先遍历二叉树&#xff1a;线索化二叉树&#xff1a;序列化与反序列化 haffman树平均编码长度构建haffman树haffman树…

数学建模算法汇总(全网最全,含matlab案例代码)

数学建模常用的算法分类 全国大学生数学建模竞赛中&#xff0c;常见的算法模型有以下30种&#xff1a; 最小二乘法数值分析方法图论算法线性规划整数规划动态规划贪心算法分支定界法蒙特卡洛方法随机游走算法遗传算法粒子群算法神经网络算法人工智能算法模糊数学时间序列分析马…

大模型应用—大模型赋能网络爬虫

大模型赋能网络爬虫 简单来说,网页抓取就是从网站抓取数据和内容,然后将这些数据保存为XML、Excel或SQL格式。除了用于生成潜在客户、监控竞争对手和市场研究外,网页抓取工具还可以用于自动化你的数据收集过程。 借助AI网页抓取工具,可以解决手动或纯基于代码的抓取工具的…

shell脚本语言的入门

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

pytorch深度学习框架基本介绍

目录 1. PyTorch简介1.1 什么是PyTorch1.2 PyTorch的特点 2. 安装与配置2.1 安装PyTorch2.2 配置CUDA环境 3. 基础概念3.1 张量(Tensor)3.1.1 创建张量3.1.2 张量的类型转换 3.2 自动微分(Autograd) 4. 构建神经网络4.1 定义网络结构4.2 使用nn.Module 5. 数据加载与处理5.1 使…

腾讯技术创作特训营 -- SUPERWINNIE -- AI重塑社交内容

目录 1 什么是AI社交内容 2 案例拆解 3 用LLM做爆文选题 4 用LLM出爆文脚本提示词 1 什么是AI社交内容 任何一个因素被AI取代都是AI社交内容 2 案例拆解 数字人 资讯素材 录屏产品的素材&#xff08;小红书测试AI产品&#xff09; 脚本 素材 剪辑 3 用LLM做爆文选题 &…

帝国神话怎么样使用服务器开服(Myth Of Empires)

1、购买后登录服务器&#xff08;百度莱卡云&#xff09; 进入控制面板后会出现正在安装的界面&#xff0c;安装大约5分钟&#xff08;如长时间处于安装中请联系我们的客服人员&#xff09; 2、创建端口 一共需要用到三个端口&#xff08;游戏端口&#xff0c;查询端口&#x…

【刷题汇总 -- 压缩字符串(一)、chika和蜜柑、 01背包】

C日常刷题积累 今日刷题汇总 - day0181、压缩字符串(一)1.1、题目1.2、思路1.3、程序实现 2、chika和蜜柑2.1、题目2.2、思路2.3、程序实现 3、 01背包3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day018 1、压缩字符串(一) 1.1、题目 1.2、思路 读完…