实用的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等)进行远程升级。

电子设计 技术专区

关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

八大类现场总线的阐述

CAN(ControllerAreaNetwork控制器局域网) 最早由德国BOSCH公司推出....
的头像 工控资料窝 发表于 02-06 16:01 次阅读 0条评论
八大类现场总线的阐述

2018年将是人工智能大产业迅速发展的一年

2018年已经到来了,新的一年有新的规划。过去的一年是充满巨大变化的一年。AlphaGo带来的巨大冲....
的头像 嵌入式资讯精选 发表于 02-06 14:11 次阅读 0条评论
2018年将是人工智能大产业迅速发展的一年

基于高速嵌入式系统的信号完整性分析

半导体工艺的进步,使芯片的集成规模越来越大,芯片的时钟频率越来越高,导致信号的上升/下降时间变短。当....
发表于 02-05 18:03 次阅读 0条评论
基于高速嵌入式系统的信号完整性分析

对于系统启动,bootloader的功能的简单分析

mmu,硬件设备(似乎也有软件实现?),实现虚拟地址到物理地址映射,cpu的指令都是在虚拟地址上执行....
的头像 嵌入式ARM 发表于 02-05 10:23 次阅读 0条评论
对于系统启动,bootloader的功能的简单分析

一文详解OpenWrt系统架构和其他系统架构的对比

1. 从上表我们可以看到,openwrt主要的优势体现在小,它运行的内存最小只要32M,存放FW的最....
的头像 嵌入式ARM 发表于 02-05 08:27 次阅读 0条评论
一文详解OpenWrt系统架构和其他系统架构的对比

CAN总线局部错误及全局通知分析

局部错误,全局通知是CAN总线错误类型中较为典型的一种,如何通过错误报文及波形快速定位错误原因呢?本....
的头像 电子发烧友网工程师 发表于 02-16 07:57 次阅读 0条评论
CAN总线局部错误及全局通知分析

汽车电子中公交车GPS车辆管理系统解决方案

城市公共交通是满足人民群众基本出行的社会公益性事业,是交通运输服务业的重要组成部分,与人民群众生产生....
发表于 02-02 16:07 次阅读 0条评论
汽车电子中公交车GPS车辆管理系统解决方案

电子技术在农业中的应用

虽然农业是世界上最古老和最原始的行业,但近年来它被现代技术完全改变了,尤其是电子技术。电子产品几乎在....
的头像 深圳市连接器行业协会 发表于 02-02 10:27 次阅读 0条评论
电子技术在农业中的应用

低速容错CAN协议接入单元及应用

新能源汽车发展的过程中,车载CAN网络故障时有发生,低速容错CAN协议有哪些方法值得我们学习?
的头像 ZLG致远电子 发表于 02-02 09:21 次阅读 0条评论
低速容错CAN协议接入单元及应用

详细介绍凯迪拉克超级巡航系统

实际上超级巡航系统定义为“高级驾驶辅助系统”,而非“自动驾驶辅助系统”,也就是说“人”仍是车辆核心单....
的头像 MEMS 发表于 02-01 14:20 次阅读 0条评论
详细介绍凯迪拉克超级巡航系统

嵌入式系统开发小白必懂的简单知识点梳理

本文主要对嵌入式系统开发简单知识点进行梳理。嵌入式的开发平台不局限于一种操作系统,因此要熟悉各种操作....
的头像 lhl545545 发表于 01-29 16:57 次阅读 0条评论
嵌入式系统开发小白必懂的简单知识点梳理

什么是嵌入式系统_嵌入式系统基础知识介绍

嵌入式系统是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,嵌入式系统包括ARM,D....
发表于 01-29 15:40 次阅读 0条评论
什么是嵌入式系统_嵌入式系统基础知识介绍

嵌入式系统的主要应用_嵌入式系统技术应用领域

嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:交通管理,家庭智能管理系统,POS网络及电....
发表于 01-29 15:25 次阅读 0条评论
嵌入式系统的主要应用_嵌入式系统技术应用领域

基于高性能超低功耗MSP430的倒车雷达系统设计

随着人们对汽车辅助驾驶系统智能化要求的提高和汽车电子系统的网络化发展,新型的倒车雷达应能够连续测距并....
发表于 01-29 03:27 次阅读 0条评论
基于高性能超低功耗MSP430的倒车雷达系统设计

GPS装置的应用测试详解

将产品开发维持在预算和时间计划之内,一直是 GPS 产品经理需要面对的挑战。成功的测试需要谨慎的时间....
发表于 02-14 05:43 次阅读 0条评论
GPS装置的应用测试详解

山东高速与赛维安讯推出第一代物联网实时可视路况App路网

2017年,山东高速与赛维安讯推出的第一代物联网实时可视路况App路网,不到一年时间,就已经获得近十....
的头像 中山市物联网协会 发表于 01-26 11:35 次阅读 0条评论
山东高速与赛维安讯推出第一代物联网实时可视路况App路网

nmealib的使用可以缩短GPS的开发周期

该解码库目前最新为0.5.3版本,它使用纯C语言编写,支持windows、winCE 、UNIX平台....
的头像 单片机爱好者 发表于 01-25 15:12 次阅读 0条评论
nmealib的使用可以缩短GPS的开发周期

如何使用OptoLyzer® MOCCA FD进行CAN FD测试和模拟

OptoLyzer® MOCCA系列是K2L的汽车总线接口产品线。
的头像 Excelpoint世健 发表于 01-24 07:01 次阅读 0条评论
如何使用OptoLyzer® MOCCA FD进行CAN FD测试和模拟

哈曼宣布将为自动驾驶汽车服务推出新的配置娱乐和场景体验

近日,哈曼宣布其将推出新的配置娱乐和场景体验,并建立在该公司的新Audiowor X开发平台上。据介....
的头像 IEEE电气电子工程师学会 发表于 01-23 18:07 次阅读 0条评论
哈曼宣布将为自动驾驶汽车服务推出新的配置娱乐和场景体验

gps技术在物流中的应用案例

国内专家通过对美国和欧洲一些发达国家考察发现,在十几年前,美国公路的空驶率在20%左右,后来降到10....
发表于 01-19 14:49 次阅读 0条评论
gps技术在物流中的应用案例