车载 ECU Fota 底层分区方案

1、简介

        车载Fota是指ECU脱离诊断仪,使用网络结合BootLoader进行云端固件软件升级技术,此技术解决了以往用户升级固件必须预约且前往4s店的痛点。本文章不介绍FOTA升级包的制作方法,仅分享针对ECU单一节点的FOTA分区方案。

        Note:本文中所讲BootLoader皆为Ecu层面所支持UDS的BootLoader,并非芯片自身所带启动BootLoader。

2.Fota实现流程

        Fota的实现需要几个关键点,分别为能够解析Fota包的ECU(如:T-Box和网关等)、需要升级的ECU支持BootLoader、需升级的ECU支持APP备份和回滚。关系图如下:

        从图中可以看到,当前升级ECU节点最重要的两个功能为BootLoader和备份回滚功能,BootLoder在以后的篇文章会做详细介绍,这边文章重点讲解实现回滚/备份功能,ECU的底层分区的几种方案。

3.软件存储在芯片内置Pflash,且芯片无flash Swap功能

 3.1  采用最简单A/B分区方案,将Pflash划分为三个区域,分别存放boot、APP1、APP2,分别为两个APP设置有效标志位,采用交叉升级策略,见下图:

图中可以看出,此方法永远只升级无效区,不需要回滚与备份,相当于自动回滚备份。

3.2 和上图类似,仍将Pflash划分为boot、App1、App2三个区域,只是APP2成为了备份区,见下图:

        此种分区方案升级成功后,可发送DUS指令进行新APP的备份,也可Boot自动备份。但升级失败的原因不同,Boot中必须做指令回滚流程,不建议使用此种分区方案,若整车EE架构要求必须做回滚/备份处理指令,可沟通多方在3.1的基础上做回滚备份假处理指令。

Note在第3节中的情况,若考虑Boot刷写升级,可将Pflash分为5个区域,分别为 跳转Boot、升级Boot1、App1、升级Boot2、App2。3.1情况跳转Boot只需判断有效区,3.2中跳转Boot需添加回滚/备份指令,此方法会消耗Pflash的资源,若非强制要求,不建议使用。

4.芯片无内置Pflash,需外挂Pflash

        此情况与第3节中方案一置,只多一步Boot中拷贝外置Pflash到运行区域,具体细节日后会在BootLoader详细设计中讲到。

5.内置Pflash,且芯片有Pflash Swap功能

        目前我遇到过的 Pflash Swap功能有2种,分别为为两块Pflash整块交换映射(理解为交换地址指针)、将Pflash中的数据映射至虚拟内存中运行。

5.1两块Block整块交互映射时,目前遇到一款芯片拥有两种交换方式,第一种为操作寄存器进行交换,此种方式操作完寄存器后地址指针立刻发生变化(通过有效标志位来判断切换到那个Block),所以要交换的两个Block中分别需要有一段相同的Boot代码,避免在Boot中发生交换时因代码不同,代码跑飞,具体分布如下:

此方式类似3.1中的交叉升级方案,其实也是交叉升级,非交叉升级参考3.2内容,两者类似。

第二种Swap方式为硬件自动判断当前有效block(通过特定标识符完成),此种分区方式和上图相同,不同点为Boot无需操作寄存器完成Swap,也就是它跳到Boot时表示判断有效分区已经完成,此种方式较第一种方式的优点为两个Block的Boot可以不同,可以实现Boot的变更升级。

5.2将Pflash中的数据映射至虚拟内存中运行,与第4节中外挂Pflash类似,芯片厂会发布拷贝到虚拟内存的api。

总结:以上为目前遇到过的芯片情景,故只能总结这几种去方案。Fota的分区方案是由芯片架构决定的,选择合适的分区方案来满足顾客要求即可。不同的分区方案的BootLoader的设计细节不同,相关部分后期BootLoader的详细设计方案中会记录。

  • 23
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
QCA9531-BL3A是一款高度集成的无线网络芯片,支持802.11b/g/n标准,常用于无线路由器和嵌入式设备中。若希望刷入OpenWrt固件,以下是具体步骤: 1. 首先,确保你的设备是QCA9531-BL3A芯片的,并且具备刷写固件的能力。 2. 访问OpenWrt官方网站,下载适用于QCA9531-BL3A芯片的固件。你可以根据设备型号和硬件规格进行选择。 3. 进入设备的管理界面,一般是通过浏览器访问设备的默认IP地址(如192.168.1.1)。登录设备的管理界面,通常使用默认的用户名和密码(如admin/admin)进行登录。 4. 在设备管理界面中,找到“固件升级”或类似选项。上传并选择之前下载的OpenWrt固件文件。点击“升级”或类似按钮开始刷写过程。 5. 刷写过程需要一定时间,请耐心等待。在刷写过程中,不要中断设备的电源或进行其他操作,以免导致设备损坏。 6. 刷写完成后,设备会自动重启。待设备重新启动并运行OpenWrt固件时,说明刷写成功。 7. 最后,通过浏览器再次访问设备的管理界面,输入默认用户名和密码登录。你将进入OpenWrt的管理界面,可以根据自己的需求对网络设置和功能进行配置。 请注意,刷写固件有一定的风险,如果操作不当可能导致设备损坏。在刷写前,建议详细阅读设备相关的文档,并确保了解相关操作的风险和注意事项。如果没有足够的经验,最好请专业人士进行操作,以免造成不可逆的损失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

痛苦快乐着

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值