嵌入式设备固件升级方案
固件升级
本文将介绍一种固件升级的基本方法,使嵌入式设备可以通过U盘、SD卡、主文件系统三种方式升级固件。使用这种方式的目的是为了避免使用调试串口,而使用telnet,ssh等网络终端即可控制开发板升级系统
在阅读本文之前应当了解inirtd/initramfs、switchroot命令
基本思路
整体上固件分为四个部分,uboot,env,kernel,rootfs。
1)启动方式选择
通过上述的流程图可以看出,整个系统的三种启动模式由boottype进行控制,boottype在启动时追加到bootargs参数后面,变为bootargs的一部分。在启动时由uboot传递给内核。从initrd启动之后可以通过/proc/cmdline文件获取启动参数,在启动脚本中判断boottype的值选择启动方式进行启动。
在这个过程中需要对uboot的环境变量进行修改,某则就无法进行启动模式的切换。因此需要将环境变量单列分区,并通过uboot中的工具操作分区中的环境变量。
2)升级操作细节
在升级操作中只需要遍历预设的存储设备,挂载设备并获取其中的配置文件,根据配置文件指定的固件文件进行升级操作。例如本次使用的U盘升级、SD卡升级、主文件系统升级三种方式分别对应/dev/sda1、/dev/mmcblk1p1、/dev/mmcblk0p4三个设备文件。分别是U盘设备的第一分区、SD卡设备的第一分区、当前主文件系统所在设备。只需遍历三个设备文件,在设备文件存在时尝试挂载、在挂载成功时查找配置文件。找到配置文件后即可根据配置文件指定的固件文件进行升级。由于当前的内核和文件系统都在内存中,而不依赖于主文件系统所在的存储设备。因此直接通过dd命令将文件写入到设备中即可。固件存储在主文件系统中时,删除主文件系统中的所有文件,固件文件除外,随后解压rootfs压缩包到根目录即可。
- 分享
- 举报
-
浏览量:1784次2022-10-20 09:29:49
-
浏览量:832次2023-11-24 15:49:33
-
浏览量:1957次2020-08-20 18:00:36
-
浏览量:2424次2020-08-20 17:57:43
-
浏览量:1645次2020-08-19 16:43:27
-
浏览量:2309次2020-08-17 18:01:42
-
浏览量:1342次2022-12-27 08:55:13
-
浏览量:2306次2020-06-03 16:23:42
-
浏览量:2417次2020-08-19 16:46:46
-
浏览量:3832次2020-07-17 16:50:14
-
浏览量:8790次2019-09-01 11:08:57
-
浏览量:2006次2020-08-25 19:02:04
-
浏览量:583次2023-08-18 09:40:15
-
浏览量:1985次2020-08-20 18:01:22
-
浏览量:3279次2020-08-17 18:05:11
-
浏览量:2062次2020-08-17 18:06:38
-
浏览量:818次2023-12-25 15:42:30
-
浏览量:2073次2020-08-17 18:04:26
-
浏览量:2383次2020-08-20 18:03:14
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
cxcc
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明