AS32S601在轨重构(OTA)方案的优化与分析

电子说

1.4w人已加入

描述

摘要

在轨重构(OTA)技术因其在航天、工业控制、物联网等领域的高可靠性和持续服务需求而备受关注。本文以国科安芯推出的AS32S601芯片为研究对象,深入分析其OTA方案的设计原理、技术细节及优化策略,并结合芯片的硬件特性,探讨其在不同应用场景中的适用性及潜在挑战,旨在提供一个全面、客观的技术评估,为相关领域的研究与实践提供参考。

1. 引言

1.1 背景知识

在现代嵌入式系统中,OTA技术已成为提升系统灵活性和可靠性的重要手段。OTA允许设备在不中断运行的情况下,通过远程或本地更新固件,从而快速修复漏洞、优化性能或扩展功能。这一技术在航天、工业控制、汽车电子和物联网等领域具有重要应用价值。特别是在航天领域,由于设备一旦发射后难以进行物理维护,OTA技术成为保障系统长期可靠运行的关键。

1.2 研究意义

AS32S601作为一款高性能、高可靠性的MCU,其OTA方案的设计与优化具有重要的研究意义。通过对该方案的深入分析,可以为类似嵌入式系统的设计提供重要参考,同时也有助于推动OTA技术在更多领域的应用。

2. OTA技术概述

2.1 OTA的基本原理

OTA技术的核心在于动态更新系统固件,而无需中断设备的正常运行。这一过程通常涉及以下几个关键步骤:

固件下载 :通过网络或本地存储设备下载新的固件版本。

固件验证 :对下载的固件进行完整性校验(如CRC校验)和来源验证(如数字签名验证)。

固件更新 :将验证通过的固件写入备用存储区,并设置更新标志位。

系统重启与切换 :设备重启后,根据更新标志位切换至新的固件运行。

2.2 OTA技术的研究进展

近年来,OTA技术在多个领域取得了显著进展。在工业控制领域,OTA被广泛用于机器人控制系统的固件更新,以提升生产效率和设备灵活性。在汽车电子领域,OTA技术被应用于车身控制系统(BCM)、电机驱动系统等,以实现功能升级和故障修复。此外,在商业航天领域,OTA技术也被用于卫星和航天器的在轨维护,延长其使用寿命。

3. AS32S601芯片OTA方案设计与优化

3.1 方案设计

mcu

3.1.1 关键设计

Bootloader设计 :Bootloader负责验证App1和App2的完整性,并跳转至有效应用。在系统启动时,Bootloader首先检查App1和App2的完整性和有效性,若均无效,则进入恢复模式。

App1/App2双备份机制 :互为冗余,支持热切换。设计中采用两个独立的应用存储区,正常运行时一个为活动应用,另一个为备用应用,确保系统在更新过程中始终具备可用的应用。

冗余参数区 :用于存放程序关键参数,保证系统配置的一致性和可靠性。

3.1.2 启动流程逻辑

**void** Bootloader_Run() {

    // 1. 初始化硬件(时钟、串口、Flash等)

    HW_Init();

    // 2. 检查App1/App2的有效性(签名+CRC)

    **if** (Verify_App(App1_Addr) == SUCCESS) {

        Current_App = App1;

    } **else** **if** (Verify_App(App2_Addr) == SUCCESS) {

        Current_App = App2;

    } **else** {

        Enter_Recovery_Mode(); // 无有效App,进入恢复模式

    }

    // 3. 检查是否需要更新(如OTA标志位)

    **if** (Check_OTA_Flag()) {

        Start_OTA_Update();   // 从OTA Cache拷贝到非活动App区

    }

    // 4. 跳转到当前App

    Jump(Current_App);

}

3.1.3 App验证方法

CRC32校验 :快速检查固件完整性,确认数据在传输和存储过程中未被篡改或损坏。

数字签名(ECDSA/RSA) :验证固件来源合法性,确保更新的固件来自可信来源,防止恶意软件入侵。

版本号比对 :防止版本回滚,确保系统始终运行最新版本的固件,提升系统的安全性和稳定性。

3.1.4 OTA更新步骤

下载固件:通过网络或本地存储设备下载新的固件版本。

校验固件 :对下载的固件进行签名验证和CRC校验,确保其完整性和真实性。

设置标志位 :在Flash中标记下次启动时需要切换至新固件所在的应用区。

重启系统 :系统重启后,Bootloader根据标志位完成应用区的切换,并运行新的固件。

3.2 优化策略

3.2.1 存储分区优化

存储分区设计需注意以下几点:

■ PFlash最大支持2MB(包括4个block,即4×512KB)

■ DFlash最大支持512KB(包括1个block)

■ 块(Block)容量:512KB/block

✳注意:每个区都要单独占用一个block(boot、APP1、APP2),因此程序最大不能超过512KB

3.2.2 地址跳转优化

在实现应用切换时,需采用安全的地址跳转方法,确保系统稳定运行。示例代码如下:

__attribute__ ((noinline))

**void** Jump(uint32_t addr)

{

    __asm("jr   a0");

     **while** (1);

}

✳注意:跳转前需关闭所有外设中断,防止中断干扰导致系统异常。

3.2.3 软重启优化

软重启功能允许系统在更新后快速恢复运行,提升系统可用性。实现软重启的代码示例如下:

void Fcu_Init()

{

    FCU_CLK_ENABLE();   

    FCU_InitTypeDef FCU_InitStructure;     

    FCU_StructInit(&FCU_InitStructure);  

    FCU_InitStructure.FCU_Channel             **=** FCU_CHANNEL_SOFTWARE0;     

    FCU_InitStructure.FCU_FaultToResetCnt     **=** 0;                          

    FCU_InitStructure.FCU_AlarmToFaultCnt     **=** 1;                          

    FCU_InitStructure.FCU_FaultAction         **=** GLOBAL_SOFTWARE_RESET;       

    FCU_InitStructure.FCU_AlarmAction         **=** NONE;                        

    FCU_InitStructure.FCU_FaultLevel          **=** FAULT;                     

    FCU_InitStructure.FCU_MaskEnable          **=** DISABLE;                

    FCU_Init(&FCU_InitStructure);

      

    FCU_ClearSoftwareFault(FCU_SOFTWARE_CHANNEL_0);    

    FCU_Cmd(FCU_CHANNEL_SOFTWARE0,ENABLE);    

      

} 

FCU_SetSoftwareTrigger(FCU_SOFTWARE_CHANNEL_0);            **//** 触发软件重启

4. 应用场景分析

4.1 特种工业控制

在工业自动化尤其是核工业领域,AS32S601可用于机器人控制、工业通用控制系统等。其高可靠性和实时性特点使其在复杂的工业环境中表现优异。例如,在机器人关节控制中,OTA技术可以实现运动控制算法的动态更新,提升机器人灵活性和适应性。

4.2 汽车电子

在汽车应用中,OTA技术可作为车身控制系统(BCM)的核心,控制内外灯光、中控锁、车窗等设备,提升驾驶体验和车辆安全性。此外,OTA技术还可用于电机驱动系统的固件更新,优化引擎散热风扇、水泵等部件的性能。

4.3 商业航天

在商业航天领域,AS32S601凭借其高可靠性和抗辐射能力,可用于运动控制、信号系统等关键任务,保障航天任务的顺利执行。OTA技术在卫星和航天器的在轨维护中发挥重要作用,延长其使用寿命并提升任务成功率。

5. 结论

AS32S601的OTA方案通过合理的系统设计和严格的验证机制,实现了固件的动态更新,确保系统在不断电的情况下平滑过渡至新版本。结合其高性能内核、丰富存储资源和强大安全机制,该方案在工业控制、汽车电子和商业航天等领域具有广阔的应用前景。随着技术的不断进步,OTA技术将为嵌入式系统的灵活性和可靠性带来新的提升。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分