嵌入式系统具有许多优势,例如,智能度高,体积小,可靠性高和实时性强。
它们已越来越多地用于各种行业,例如消费电子,工业控制和汽车电子。
大型系统通常由许多小型嵌入式系统组成。
他们进行沟通和合作以完成各种检测和控制任务,从而形成一个分布式嵌入式系统。
汽车电子系统中的车载GPS,倒车雷达,发动机控制,仪表板系统等,CNC机床中的键盘显示系统和电机控制系统,这些都是嵌入式系统的特定应用。
许多嵌入式系统的应用也给软件升级带来了很多困难,主要有以下几个方面:①这些系统位于大型系统的各个位置,很难分别升级每个系统; ②有些系统是为了满足机密性。
除了可靠性要求之外,系统是永久密封的,并且仅保留通信和电源端口。
单独升级它甚至是不可能的。
针对这些问题,本文提出了一种使用CAN总线的分布式嵌入式系统升级方案,该方案可实现多点,单点甚至系统范围的升级。
其他类型的通信端口类似。
1系统结构框图如图1所示。
图1系统结构框图整个系统由多个独立的嵌入式模块组成,这些模块完成某些功能,CAN总线和用于升级整个系统的控制模块。
其中,控制模块也可以是功能模块之一。
每个功能模块上都安装了一个独立的引导程序,可以将其视为模块的Bootloader。
引导程序将在模块中永久固化,并且不会通过程序升级进行升级。
引导程序中嵌入了CAN总线通信程序。
在正常工作条件下,每个功能模块可以单独工作,也可以通过CAN总线与其他模块协同工作。
需要升级某个模块的软件时,请通过系统升级控制模块向该模块发送升级命令。
收到命令后,模块跳转到引导程序,等待系统升级模块发送升级数据,然后在升级完成后跳转。
返回到应用程序。
2系统实现2.1 of在线升级的实现原理ST采用基于ARM公司的ST公司的Cortex-M3核心32位嵌入式处理器STM32F103VC,其片上Flash是主要的存储区域。
应用程序代码存储在闪存(0x08000000〜0x0807FFFF)中,并且Flash由Page管理,因此Flash可以分为几个使用区域。
图2 Flash分区在此系统中,Flash分为两个区域,一个区域是上述引导程序区域,另一个区域是应用程序区域。
Flash分区如图2所示。
the接通电源后,STM32F103VC将自动跳转到地址0x08000000以执行以下程序。
可以将项目的开始位置(即主功能的地址)专门映射到Flash存储器的地址。
在该系统的设计中,Flash中具有两个主要功能。
引导程序用于升级应用程序,并在加电后跳转到应用程序,并且该应用程序完成相应的模块功能。
这两个区域可以通过特定的说明相互跳转,从而可以实现在线升级。
2.2硬件系统STM32F103VC处理器具有高性能,低成本,低功耗等特点。
该处理器具有丰富的片上外围设备,具有多个系统计时器,CAN通信接口,USART通信接口,DMA和其他丰富的资源,借助ST提供的固件库,它可以轻松地操作系统资源。
该处理器集成了256 KB的片上Flash和64 KB的片上SRAM,足以完成大多数任务。
为了实现CAN总线通讯,只需要在STM32F103VC上增加一个CAN驱动器芯片就可以进行电平转换。
系统硬件结构框图如图3所示。
图3系统硬件结构框图2.3系统软件系统为了实现在线升级功能,首先需要编写启动程序,然后将其刻录到Flash启动中区域。
为了防止应用程序升级失败,有必要判断引导程序中Flash的指定位置是否存在程序完整标记。