当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]这个更新系统感觉非常专业和可用的盒子.它使用了一个与前一篇文章中描述的非常相似的双根文件更新系统。它与U-脚紧密结合,以允许在非引导图像的情况下返回。

我们讨论了嵌入式Linux更新系统的基本原理和实现.在这里,我们讨论一些现成的开源更新系统,这些系统现在可以与您的嵌入式Linux项目集成。

这个更新系统感觉非常专业和可用的盒子.它使用了一个与前一篇文章中描述的非常相似的双根文件更新系统。它与U-脚紧密结合,以允许在非引导图像的情况下返回。

这是相当容易的开始与修理,因为有很好的清晰的逐步文档,如何建立和整合各个组件。它们在流行的平台上提供参考实现,比如树莓皮和贝格莱骨黑色,这可以让你对在你的平台上工作所需的工作量有一个想法。

我发现它花了三天的时间整合并开始工作。有很多小的改变使它与我的YOCto构建设置(基于Morty)。解决这些问题需要一些开放式的专业知识。为了正确地整合双船装置,需要U-脚的专业知识。

在此结束时,它输出一个"Sdi毫克",其中包含引导加载程序和文件系统,需要以某种方式写入您的闪存。您如何做这取决于您的目标硬件。它还输出所谓的"工件",其中包含新的文件系统映像和各种元数据。

这些工件可以通过手动安装的修理工命令行工具安装(理论上可以扩展到从USB棒上自动安装)。工件也可以通过Web接口上传到后端更新网络服务,从这里可以向下推到单个单元。

控制后端更新服务器的网络接口设计良好,易于使用。设置它是通过码头,这使初始设置非常简单。在一个完整的生产准备系统中需要码头工人的专业知识。从这个Web接口中,您可以看到当前在该领域部署的所有设备,并将更新单独地或分组地推给它们。

图1:修补器包含一个定制的Web接口,用于将更新推到设备上

大多数修理工都是用GIT编程语言编写的。对于长期采用和生产版本而言,需要一些关于go的专门知识。虽然这种语言在嵌入式世界中仍然是一种不寻常的语言,但将来可能会被更广泛地使用。

您被绑定到一个硬编码的引导设备(例如:/d/mmcblk0),因此没有简单的方法允许从多个中介中启动。它还对您的系统做了许多假设,例如引导加载程序和内核中的各种选项(例如,包括对某些文件系统的支持)。至关重要的是,它要求系统化,这可能使它不适合某些项目。

快速更新

这个更新系统是高度可配置的。您使用大多数嵌入式Linux开发人员都熟悉的"K康菲"系统来配置它。对于几个配置选项的例子:它支持几个引导加载器(U-Boot、LUB、EIFI引导保护);它可以根据给定的公钥签名和验证有签名的图像;它可以支持使用对称密钥加密对图像进行加密。

图2:SW更新的配置系统

每次更新都包含一个cpio档案,其中包含一个以"sw-说明"文件形式出现的元数据和执行更新所需的实际数据文件。这通常会包含一个文件系统列表,以及它们应该放在哪个块设备中。更新文件必须由用户手动创建;它不会从构建系统中脱落。

不像修理工,SW更新不介入和处理系统需要如何建立的细节。修理工会在某种程度上为你修补你的U-脚踏实地环境,SW更新将需要你为自己的"乒乓球"A-B双根脚设施制定低层次的实现细节。

SW更新可以提供命令行安装.它还提供了一个后端更新系统,类似于修理工的系统,该系统是以伊塞普霍克比特为基础的,它与一个在目标上运行的名为"冲浪船"的守护神一起运行,该守护神处理对SW更新的调用。它还可以在设备本身上运行嵌入式HTTP服务器,从中可以上传和安装更新。

它默认地提供了一个被剥离的图像配方,设计为运行为一个InitRAM恢复图像。从我到目前为止的经验来看,这个系统是为一个恢复分区更新而设计的,而不是一个双重的根文件更新(这方面的优点和缺点在上一篇文章中已经讨论过)。似乎不可能或至少很难将双根文件更新与后台OTA更新守护神"Sericata"整合。

大多数的SW更新都是用C编写的,所以大多数嵌入式Linux开发人员可以很容易地进行修改或进行调试。开发人员还将"处理程序"的想法融入到应用程序中,以便其他代码编写者能够方便地扩展。这些功能可以实现额外的更新功能,例如固件下载到其他硅板上。

像修理工一样,SW更新对用户提出了一些要求,但由于系统的可配置性,这些要求是有限的,有些甚至是可选的。

Rauc被设计为比前两个更新系统更轻量级的更新系统,主要的二进制仅为大约。512k相比之下,SW更新的1.3米和修理工的6.9米(这是基于YOCto输出的粗略计算,没有考虑到依赖性、不同的构建目标等。)。

它从构建系统输出所谓的"束"。这些包包含压缩文件系统和元数据。他们总是被要求数字签名,这是一个核心设计概念的Rauc。它将文件系统图像编程成各种"插槽",然后可以标记工作或损坏或准备更新。它将与引导程序环境接口,以决定是否

Rauc要求在内核中使用某些选项(例如:QAASF支持),并且在根文件系统中也有一些软件依赖关系。Rauc,就像斯普拉特一样,是用C写的。它不实现流式流修复器做和SW更新可以做。

就像SWLTED一样,它支持使用EXESTHOKOKBIT作为后端更新系统,允许您从Web接口向下推更新到设备。

图3:可以使用EXLEXHOKOBT作为Web接口,将更新推到设备上,它可以与Rauc和SWRET集成

最后

本文未提及基于文件的更新系统(如前一篇文章所述)。其他人因简洁而被忽略。

使用哪个系统的决定实际上取决于项目。看起来,修补工可能更容易开始,而SW更新可能有助于与已经在内部部分开发的更新系统集成,ROAC可能被用作SW更新的替代。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭