实用的CAN总线分布式嵌入式系统升级设计方案

电子设计 2018-01-13 07:30 次阅读

嵌入式系统具有智能化程度高、体积小、可靠性高、实时性强等诸多优点,已经越来越多地应用于消费电子、工业控制、汽车电子等各个行业。往往一个大的系统又由许多小的嵌入式系统共同构成,它们之间通过相互通信协同完成各种检测控制任务,构成分布式嵌入式系统。汽车电子系统中的车载GPS、倒车雷达、发动机控制、仪表盘系统等,数控机床中的键盘显示系统、马达控制系统等,这些无一不是嵌入式系统的具体应用。

众多嵌入式系统的应用也为软件升级带来了诸多困难,主要有以下几点:

①这些系统分处于大系统的各个位置,单独对每个系统进行升级比较困难;

②某些系统为了满足保密和可靠性的要求,对系统进行了永久密封,只预留了通信和电源端口,这就更不可能单独对它进行升级。

针对这些问题,本文提出一种利用CAN总线的分布式嵌入式系统升级方案,实现了多点、单点甚至全系统的升级,其他种类的通信端口与此类似。

1 系统架构

系统结构框图如图1所示。

整个系统由多个独立的完成一定功能的嵌入式模块、CAN总线和一个用于对整个系统进行升级的控制模块组成。其中,控制模块也可以是其中一个功能模块。在每个功能模块上安装有独立的引导程序,可以看作该模块的Bootloader,该引导程序永久固化在模块内,不随程序升级而升级。在该引导程序中嵌入CAN总线通信程序。正常工作情况下每个功能模块单独或通过CAN总线与其他模块协同工作。当需要对某个模块进行软件升级时,通过系统升级控制模块向该模块发送升级命令,该模块接收到命令后即跳转至引导程序,并等待系统升级模块发送升级数据,升级结束后再跳回至应用程序。

2 系统实现

2.1 在线升级的实现原理

采用ST公司基于ARM Cortex-M3核心的32位嵌入式处理器STM32F103VC,其片上Flash为主存储区。应用程序代码是存储在闪存(Flash)中的(0x0800C3000~0x0807FFFF),而Flash是按Page来管理的,所以可以把Flash分成几个区域来使用。在本系统中将Flash分成两个区域,其中一个为前面提到的引导程序区,另外一个为应用程序区。Flash分区如图2所示。

图2 Flash分区

芯片上电后,STM32F103VC会自动跳转到0x08000000地址执行后面的程序。而一个工程的起始位置(也就是main函数的地址)具体映射到Flash的地址是可以设置的。在本系统的设计中,在Flash放了两个main函数。引导程序用于对应用程序的升级和上电后跳转至应用程序,应用程序则完成相应的模块功能。这两个区域通过特定的指令可以实现相互的跳转,并以此实现在线升级。

 2.2 硬件系统

STM32F103VC处理器具有高性能、低成本、低功耗等特点。该处理器片上外设丰富,具有多个系统定时器、CAN通信接口、USART通信接口、DMA等丰富的资源,并且借助于ST公司提供的固件库,可以很容易地对系统资源进行操作。该处理器集成了256 KB片上Flash和64KB片上SRAM,足以应对大多数任务。为实现CAN总线通信,只需要为STM32F103VC添加一片CAN驱动芯片进行电平转换。

系统硬件结构框图如图3所示。

2.3 软件系统

为实现在线升级功能,首先需要编写引导程序,然后将它烧入Flash引导区中。为防止应用程序升级失败,在引导程序中需判断Flash指定位置是否有程序完好标志,该标志由完整的应用程序在每次上电后写入。应用程序可采用烧写方式和升级方式写入相应程序区。为实现引导程序和应用程序之间的相互跳转,采取指向函数指针的方式来实现。可以将Flash中的引导程序和应用程序作为两个普通函数,这两个函数的进入位置分别为0x08000000和0x08004000,然后在引导程序中设置一个指向函数的指针,其指针值为0x08004000;同理,在应用程序中设置一个函数指针,其值为0x08000000.这样在相应的程序中调用函数指针时就可以实现程序跳转。

CAN总线采用多主竞争工作方式和非破坏性总线仲裁技术,总线上任意节点可在任意时刻主动地向网络上其他节点发送信息而不分主次,各节点之间实现自由通信。当多个节点同时向总线发信息时,优先级较低的节点会主动退出发送,而优先级较高的节点不受影响,从而大大节省了总线冲突仲裁时间,即使在网络负载很重的情况下,也不会出现网络瘫痪的情况。因此,适用于分布式监控系统的数据通信。由于CAN总线协议规范只定义了物理层和数据链路层,所以在实际应用中必须根据实际系统制定合适的应用层协议。本系统中根据数据传输要求自定义了几个应用层命令,分别是升级相关命令和数据收发校验相关命令,限于篇幅在此就不一一详述。

3 软件升级过程

软件升级包括升级控制模块部分和待升级模块部分。

升级控制模块部分的工作过程为:向待升级模块发送升级命令,待接收到模块返回的确认标志后,再通过CAN应用层协议向待升级模块发送升级数据,升级完成后向待升级模块发送完成命令。

待升级模块工作流程如图4所示。分为引导程序部分和应用程序部分,这两部分内容在开发的时候是作为两个独立的工程项目来完成的。

为确保在线升级的安全性,在Flash指定位置设置了一个程序完好标志。由于Flash的擦写是按照Page进行的,所以这个标志即使只有一位也需占用一个Page的大小。本系统中将标志设置在Flash最后一个Page.如果应用程序区没有空余的Page来写入该标志,就要考虑换用更大Flash容量的产品或者外扩存储器。程序完好标志在应用程序进入的时候写入,在接收到升级命令时擦除。若在引导程序中检测该标志不合法,就一直处于升级状态,直到最后收到升级成功命令为止。

程序跳转示例性跳转代码如下:

typedef void(*pFunc)(vold); //自定义函数指针数据类型

pFunc Jump_To_App; //定义一个指向应用程序的指针

Jump_To_App=(pFunc)0x08004000;

Jump_To_App();

需要注意的是,在程序执行跳转代码前,需要关闭中断响应,以避免发生不可预测的异常。同时,当程序跳转前,需要将堆栈指针设置到相应的程序区域。

结语

通过CAN总线对分布式嵌入式系统进行在线升级非常具有代表性,随着越来越多的芯片集成了丰富多样的片上通信外设(如以太端口、I2C总线等),使得嵌入式系统的升级也具有更多样式,甚至可以通过公用网络(如因特网、GPRS等)进行远程升级。

热门推荐

收藏 人收藏
分享:

评论

相关推荐

这些常用的9个嵌入式工程师常见面试题你会不会?

1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) ....

的头像 单片机爱好者 发表于 07-19 16:39 164次 阅读
这些常用的9个嵌入式工程师常见面试题你会不会?

车载GPS模块有哪些?详解SKYLAB车规级定位模块SKG12Q

随着近年来车载导航的快速发展,用户对定位精度需求也顺势提高,为满足日益增长的车载GPS模块定位精度的....

的头像 无线模块 发表于 07-19 14:49 54次 阅读
车载GPS模块有哪些?详解SKYLAB车规级定位模块SKG12Q

GPS轨道记录PC端

发表于 07-19 04:48 4次 阅读
GPS轨道记录PC端

无人机创新带给人印象最深刻的有哪些方面?

科技随时可能改变我们的世界,而不是在我们已经准备好的时候,无人机会引领我们走向世界。

发表于 07-18 07:13 73次 阅读
无人机创新带给人印象最深刻的有哪些方面?

GPS导航定位的缺陷与电子罗盘原理

地球本身具有磁性,所以地球和近地空间之间存在着磁场,叫做地磁场。地磁场的强度为0. 3 至0. 6 ....

的头像 传感器技术 发表于 07-17 15:53 221次 阅读
GPS导航定位的缺陷与电子罗盘原理

7个导致嵌入式系统失败罪魁祸首

本文就给大家介绍一下是什么原因会让一个项目在不知不觉中慢慢地且不声不响地走上失败之路。

的头像 嵌入式资讯精选 发表于 07-17 14:53 109次 阅读
7个导致嵌入式系统失败罪魁祸首

关于SKG09/SKG12 定位模块EVB使用方法之浅析

SKG09D是高性能GNSS一体化解决方案模块,功能超级敏感,超低权力和小的形式因素。应用于射频信号....

发表于 07-17 11:00 15次 阅读
关于SKG09/SKG12 定位模块EVB使用方法之浅析

了解手机是如何定位的

手机是怎么知道你的位置坐标的?卫星到底是怎么找到你的?这些看似深奥的问题,答案就藏在简单的数学公式中....

的头像 电源联盟 发表于 07-15 10:04 571次 阅读
了解手机是如何定位的

ZLGCANTest v1.5.0版本应用程序免费下载

本文档的主要内容是ZLGCANTestv1.5.0通用测试软件(周立功can卡驱动)免费下载

发表于 07-13 16:22 20次 阅读
ZLGCANTest v1.5.0版本应用程序免费下载

要想最大限度的减少潜在的数据安全漏洞,首先就要做到像黑客一样思考

如果你是一名负责搭建嵌入式系统(或软件、设备、网络等)的工程师或开发者,那么你排在最高优先级之一的....

发表于 07-13 14:54 97次 阅读
要想最大限度的减少潜在的数据安全漏洞,首先就要做到像黑客一样思考

TIDA-01255原理图/物料清单及参考指南下载

发表于 07-13 12:34 12次 阅读
TIDA-01255原理图/物料清单及参考指南下载

请问如何开发自己的嵌入式系统?

发表于 07-13 07:27 15次 阅读
请问如何开发自己的嵌入式系统?

我国卫星导航产业的规模快速发展,将逐渐打破国产北斗缺“芯”困局

日前,我国北斗卫星导航产业传来捷报。7月10日4点58分,我国在西昌卫星发射中心用长征三号甲运载火箭....

的头像 半导体动态 发表于 07-12 16:47 467次 阅读
我国卫星导航产业的规模快速发展,将逐渐打破国产北斗缺“芯”困局

浅谈嵌入式系统失败7大的原因

许多工程师都有一种完美主义者的态度。这种态度所带来的问题是,不可能开发出完美的系统,撰写出完美的代码....

发表于 07-12 14:55 156次 阅读
浅谈嵌入式系统失败7大的原因

各类总线大全和汽车网络中的LIN与CAN总线

控制总线:用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和I/O接口电路的;也有是....

的头像 电子发烧友网 发表于 07-12 09:56 264次 阅读
各类总线大全和汽车网络中的LIN与CAN总线

超高灵敏度低功耗GPS接收机SKG12A模块详细数据手册免费下载

SKG12A是一个完整的GPS引擎模块,具有超灵敏度,超低功耗和小的形状因子。将GPS信号应用于模块....

发表于 07-11 08:00 37次 阅读
超高灵敏度低功耗GPS接收机SKG12A模块详细数据手册免费下载

超高灵敏度低功耗GPS接收机SKG12B模块详细数据手册免费下载

SKG12B是一个完整的GPS引擎模块,具有超敏、超低功率和小形状因子。将GPS信号应用于模块的天线....

发表于 07-11 08:00 21次 阅读
超高灵敏度低功耗GPS接收机SKG12B模块详细数据手册免费下载

VIO定位技术取代GPS,4K航拍机超额集资25万美元

再有航拍机于 Kickstarter 众筹!这台由中国无人机厂商高巨创新(High Great)研发....

的头像 无人机网 发表于 07-10 14:54 250次 阅读
VIO定位技术取代GPS,4K航拍机超额集资25万美元

嵌入式开发者需要掌握的硬件知识

  对于一些刚接触嵌入式系统开发的小白来说,误以为嵌入式开发只是需要掌握软件即可。但当你对嵌入式掌握....

发表于 07-10 11:00 29次 阅读
嵌入式开发者需要掌握的硬件知识

带SPllnterface的外部CAN FD控制器MCP2517FD的英文数据手册

MCP2517FD是一种低成本、占地面积小的FD控制器,可以很容易地添加到具有可用SPI接口的微控制....

发表于 07-10 08:00 30次 阅读
带SPllnterface的外部CAN FD控制器MCP2517FD的英文数据手册

如何使用MCP251XFD CAN FD主板作为演示板来评估MCP2517FD器件概述

本文介绍了如何使用MCP251XFD CAN FD主板作为演示板来评估MCP2517FD器件。

发表于 07-10 08:00 25次 阅读
如何使用MCP251XFD CAN FD主板作为演示板来评估MCP2517FD器件概述

你了解GPS和北斗吗?GPS模块与北斗模块使用中各类常见问题解答

文档总结了GPS模块和北斗模块一些在使用中常会遇到的问题,包括FLP模式的使用、UTC设置等、重点介....

发表于 07-10 08:00 35次 阅读
你了解GPS和北斗吗?GPS模块与北斗模块使用中各类常见问题解答

嵌入式系统的特点

  最近。嵌入式这个词越来越火,假如放在前几年,或许你大概不知道嵌入式个啥?而随着大数据,物联网等的....

发表于 07-09 11:53 68次 阅读
嵌入式系统的特点

摩拜“北斗+GPS”多模卫星定位,信号环境弱也能精准定位

关于GPS定位模块,为了方便用户找车,摩拜单车在智能锁内嵌入GPS定位模块,用户打开APP就可以获取....

发表于 07-09 08:50 115次 阅读
摩拜“北斗+GPS”多模卫星定位,信号环境弱也能精准定位

关于Atmel GPS跟踪器的演示视频

这是一个有趣的视频,该视频展示了Atmel GPS跟踪系统是如何跟踪你的老板在哪里的

的头像 Microchip视频 发表于 07-08 00:21 796次 观看
关于Atmel GPS跟踪器的演示视频

培训邀请函 | CAN总线技术培训

发表于 07-06 14:53 353次 阅读
培训邀请函 | CAN总线技术培训

培训邀请函 | CAN诊断协议详解及应用培训

发表于 07-06 14:43 305次 阅读
培训邀请函 | CAN诊断协议详解及应用培训

北斗导航技术已十分成熟,为什么在用户心中存在感很低?

目前,我国北斗导航卫星系统已经发展到第三代,按计划,今年全年将发射18颗卫星,年底实现覆盖“一带一路....

发表于 07-06 11:30 105次 阅读
北斗导航技术已十分成熟,为什么在用户心中存在感很低?

CAN隔离网桥中继器集线器系列应用方案

充电桩变多了,充电站变大了,通讯线变长了,那如何才能确保通讯能正常进行就变得重要了。

的头像 ZLG致远电子 发表于 07-06 09:16 705次 阅读
CAN隔离网桥中继器集线器系列应用方案

STM32F107VC的CAN多帧中断发送程序

发表于 07-06 04:50 54次 阅读
STM32F107VC的CAN多帧中断发送程序

ARM和嵌入式系统方向介绍

发表于 07-05 08:04 90次 阅读
ARM和嵌入式系统方向介绍

GPS材料对GPS模块接收信号的影响因素总结详细资料概述

文档详细的介绍了在GPS模块选型的过程中需要考虑的GPS模块信号屏蔽因素,熟记这几条GPS模块接收信....

发表于 07-05 08:00 29次 阅读
GPS材料对GPS模块接收信号的影响因素总结详细资料概述

GPS模块的应用包括智能穿戴类的、无人机类等详细资料概述

这篇文档列出了一些常用的GPS模块大合集,包括智能穿戴类的、无人机类的、汽车导航类的等等,想做GPS....

发表于 07-05 08:00 57次 阅读
GPS模块的应用包括智能穿戴类的、无人机类等详细资料概述

智能农业是如何做到这么“聪明”的

随着现代社会科学技术的不断发展,近年来我国农业的进步是显而易见的。从八九十年代农业生产以人力为主,到....

的头像 无线模块 发表于 07-04 10:08 269次 阅读
智能农业是如何做到这么“聪明”的

stm32 GPS模块实验ATK-NEO-6M

发表于 07-04 05:39 60次 阅读
stm32 GPS模块实验ATK-NEO-6M

ARM快速嵌入式系统原型设计下载地址

发表于 07-04 00:00 47次 阅读
ARM快速嵌入式系统原型设计下载地址

【回顾往年CES】佳明携智能穿戴产品亮相

众所周知,从6月7日开始,为期三天的2017年亚洲消费电子展(CES Asia 2017)在上海新国....

的头像 ces asia 2018 发表于 07-03 11:10 783次 阅读
【回顾往年CES】佳明携智能穿戴产品亮相

适合DFU的微控制器都有哪些你知道吗?

几乎所有的嵌入式系统都需要能够在现场更新其固件,从而添加新特性或修复漏洞。然而,固件现场更新可能会颇....

的头像 电子发烧友网 发表于 07-03 10:20 246次 阅读
适合DFU的微控制器都有哪些你知道吗?

Can通讯检测,根据协议发送请求多帧,只能收到第一帧,请问这是为什么?如何解决?

发表于 07-02 16:31 270次 阅读
Can通讯检测,根据协议发送请求多帧,只能收到第一帧,请问这是为什么?如何解决?

关于GPS/BD射频接收机中镜像抑制混频器设计

随着近些年卫星导航产业的迅猛发展,人们对射频接收机前端芯片在面积、功耗、性能、成本等方面都有了更高的....

的头像 电子设计 发表于 07-02 14:24 304次 阅读
关于GPS/BD射频接收机中镜像抑制混频器设计

盘点CAN节点设计时应注意的要点

要搭建一个健壮的CAN网络,隔离、阻抗匹配、外围保护,需要考虑的点非常之多,稍有不慎就有可能留下“内....

的头像 ZLG致远电子 发表于 07-02 10:09 1324次 阅读
盘点CAN节点设计时应注意的要点

赛峰公司研发出了名为Geonyx的军用导航系统,没有采用GPS

在巴黎举行的欧洲防务展上,法国赛峰电子防务公司(Safran ED公司)公布了一系列被称为Geony....

的头像 新光电 发表于 06-29 15:10 504次 阅读
赛峰公司研发出了名为Geonyx的军用导航系统,没有采用GPS

如何实现伺服电机远程控制?

本文针对伺服电机远程控制接线复杂性、单一性、不稳定性等问题,提出采用开放式通信协议DS301、驱动子....

的头像 工控帮 发表于 06-28 14:58 331次 阅读
如何实现伺服电机远程控制?

GPS测速原理设计解析

本文主要介绍了GPS测速原理设计解析。

发表于 06-26 15:00 39次 阅读
GPS测速原理设计解析

简单介绍高性能SKYLAB授时模块的精准授时应用

物联网的兴起,包括NB-IOT及LoRa基站的逐渐减量,对于授时和同步的需求渐渐增加,SKYLAB授....

的头像 无线模块 发表于 06-25 11:55 354次 阅读
简单介绍高性能SKYLAB授时模块的精准授时应用

异常和中断处理简介

任何一种中断模式都可以通过手动的修改cpsr的值来进入。但是User和System模式是仅有的2个不....

的头像 嵌入式ARM 发表于 06-25 10:49 606次 阅读
异常和中断处理简介

除了显示车牌号,电子车牌还有啥用?

首先,是电子车牌可能导致的交通安全和隐私问题。很多人会担心内置GPS会不会将车辆的位置和行车记录泄露....

的头像 电子工程专辑 发表于 06-24 09:00 1042次 阅读
除了显示车牌号,电子车牌还有啥用?

嵌入式系统的定义及嵌入式系统的开发流程

建立交叉开发环境:安装交叉编译工具链(如arm-linux-gcc)、安装开发调试工具、设置好环境变....

的头像 嵌入式ARM 发表于 06-22 15:16 535次 阅读
嵌入式系统的定义及嵌入式系统的开发流程

安华高科技在汽车领域的产品

安华高科技针对汽车信息娱乐系统和通讯应用的解决方案。

的头像 Avago视频 发表于 06-22 09:10 645次 观看
安华高科技在汽车领域的产品

姿态传感器-专为防盗设计,采用GPS+北斗双模定位

姿态传感器-又名资产保全系统 该资产保全系统主要是对目标的姿态检测,采用北斗/GPS双模定位,保证定....

的头像 物联网资讯 发表于 06-21 11:21 1299次 阅读
姿态传感器-专为防盗设计,采用GPS+北斗双模定位

即使没有GPS网络覆蓋 无人机也可以精准落地

无人机物联网开发商Flytbase成功利用「电脑视觉技术」(Computer Vision Tech....

的头像 无人机网 发表于 06-21 09:47 1082次 阅读
即使没有GPS网络覆蓋 无人机也可以精准落地

介绍一款高精度GPS授时模块SKG12AT

在基站、通讯、广电等授时领域中,具备自动授时功能的授时系统内一定少不了GPS授时模块,得益于其实用性....

的头像 无线模块 发表于 06-20 11:00 913次 阅读
介绍一款高精度GPS授时模块SKG12AT

佳明推出fēnix 5 Plus 系列手表

一向专注于 GPS 类产品的佳明(Garmin),于近日推出其定位旗舰的 fēnix 5 Plus ....

发表于 06-20 10:52 373次 阅读
佳明推出fēnix 5 Plus 系列手表

带有隔离CAN或RS-485通信接口模块设计

隔离模块应用于各类复杂的工业环境中,以提升总线的抗干扰能力,但设备接口可能会采用端子与外部连接,可能....

的头像 ZLG致远电子 发表于 06-20 09:11 1426次 阅读
带有隔离CAN或RS-485通信接口模块设计

SKG12AT的GPS引擎模块的详细英文数据手册免费下载

SKG12AT是一个完整的GPS引擎模块,具有超敏、超低功率和小形状因子。将GPS信号应用于模块的天....

发表于 06-20 08:00 47次 阅读
SKG12AT的GPS引擎模块的详细英文数据手册免费下载

Refactor Fitness发布多功能GPS骑行记录仪RF-1

骑行记录仪通过结合加速度计和高度计的梯度数据,以及气压计的空气密度数据,该设备甚至能够准确预估骑行者....

的头像 MEMS 发表于 06-14 16:17 1086次 阅读
Refactor Fitness发布多功能GPS骑行记录仪RF-1

以太网究竟能否替代CAN总线?

当前汽车的创新有70%是用在了汽车电子产品创新身上,而一辆汽车的成本中,电子产品的成本占比已经从20....

的头像 广成CAN总线 发表于 06-14 08:42 1318次 阅读
以太网究竟能否替代CAN总线?

借“北斗”之名进行炒作已构建成了另一种商业“生态圈”

在工商关系上,吉祥贸易与北斗和正之间有着间接关联关系。贵州吉祥数贸贸易股份有限公司(以下简称贵州吉祥....

的头像 21ic电子网 发表于 06-14 08:39 666次 阅读
借“北斗”之名进行炒作已构建成了另一种商业“生态圈”

一文看懂CAN总线

前言 CAN总线的应用在现在看来越来越广泛,我厂设备从最初的ARM9与ARM7平台、期间升级过度到C....

的头像 设计idea 发表于 06-13 11:16 4183次 阅读
一文看懂CAN总线

以太网分析、车载总线协议解码、CAN位时间测试3个方面解读示波器

一提起汽车电子行业的通信问题,大家自然会想到以太网及CAN、LIN、CANFD等协议。那关于示波器在....

的头像 ZLG致远电子 发表于 06-12 09:04 1629次 阅读
以太网分析、车载总线协议解码、CAN位时间测试3个方面解读示波器