下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【Word版本下载可任意编辑】 CAN总线分布式嵌入式系统的升级设计 引言 嵌入式系统具有智能化程度高、体积小、可靠性高、实时性强等诸多优点,已经越来越多地应用于消费电子、工业控制、汽车电子等各个行业。往往一个大的系统又由许多小的嵌入式系统共同构成,它们之间通过相互通信协同完成各种检测控制任务,构成分布式嵌入式系统。汽车电子系统中的车载GPS、倒车雷达、发动机控制、仪表盘系统等,数控机床中的键盘显示系统、马达控制系统等,这些无一不是嵌入式系统的具体应用。 众多嵌入式系统的应用也为软件升级带来了诸多困难,主要有以下几点: 这些系统分处于大系统的各个位置,单独对每个系统开展升级比较困难; 某些系统
2、为了满足保密和可靠性的要求,对系统开展了密封,只预留了通信和电源端口,这就更不可能单独对它开展升级。 针对这些问题,本文提出一种利用CAN总线的分布式嵌入式系统升级方案,实现了多点、单点甚至全系统的升级,其他种类的通信端口与此类似。 1 系统架构 系统构造框图如图1所示。 整个系统由多个独立的完成一定功能的嵌入式模块、CAN总线和一个用于对整个系统开展升级的控制模块组成。其中,控制模块也可以是其中一个功能模块。在每个功能模块上安装有独立的引导程序,可以看作该模块的Bootloader,该引导程序固化在模块内,不随程序升级而升级。在该引导程序中嵌入CAN总线通信程序。正常工作情况下每个功能模块单
3、独或通过CAN总线与其他模块协同工作。当需要对某个模块开展软件升级时,通过系统升级控制模块向该模块发送升级命令,该模块接收到命令后即跳转至引导程序,并等待系统升级模块发送升级数据,升级结束后再跳回至应用程序。 2 系统实现 2.1 在线升级的实现原理 采用ST公司基于ARM Cortex-M3的32位嵌入式处理器STM32F103VC,其片上Flash为主存储区。应用程序代码是存储在闪存(Flash)中的(0 x0800C30000 x0807FFFF),而Flash是按Page来管理的,所以可以把Flash分成几个区域来使用。在本系统中将Flash分成两个区域,其中一个为前面提到的引导程序区
4、,另外一个为应用程序区。Flash分区如图2所示。 图2 Flash分区 芯片上电后,STM32F103VC会自动跳转到0 x08000000地址执行后面的程序。而一个工程的起始位置(也就是main函数的地址)具体映射到Flash的地址是可以设置的。在本系统的设计中,在Flash放了两个main函数。引导程序用于对应用程序的升级和上电后跳转至应用程序,应用程序则完成相应的模块功能。这两个区域通过特定的指令可以实现相互的跳转,并以此实现在线升级。 2.2 硬件系统 STM32F103VC处理器具有高性能、低成本、低功耗等特点。该处理器片上外设丰富,具有多个系统定时器、CAN通信接口、USART通
5、信接口、DMA等丰富的资源,并且借助于ST公司提供的固件库,可以很容易地对系统资源开展操作。该处理器集成了256 KB片上Flash和64KB片上SRAM,足以应对大多数任务。为实现CAN总线通信,只需要为STM32F103VC添加一片CAN驱动芯片开展电平转换。 系统硬件构造框图如图3所示。 2.3 软件系统 为实现在线升级功能,首先需要编写引导程序,然后将它烧入Flash引导区中。为防止应用程序升级失败,在引导程序中需判断Flash指定位置是否有程序完好标志,该标志由完整的应用程序在每次上电后写入。应用程序可采用烧写方式和升级方式写入相应程序区。为实现引导程序和应用程序之间的相互跳转,采取
6、指向函数指针的方式来实现。可以将Flash中的引导程序和应用程序作为两个普通函数,这两个函数的进入位置分别为0 x08000000和0 x08004000,然后在引导程序中设置一个指向函数的指针,其指针值为0 x08004000;同理,在应用程序中设置一个函数指针,其值为0 x08000000.这样在相应的程序中调用函数指针时就可以实现程序跳转。 CAN总线采用多主竞争工作方式和非破坏性总线仲裁技术,总线上任意节点可在任意时刻主动地向网络上其他节点发送信息而不分主次,各节点之间实现自由通信。当多个节点同时向总线发信息时,优先级较低的节点会主动退出发送,而优先级较高的节点不受影响,从而大大节省了
7、总线冲突仲裁时间,即使在网络负载很重的情况下,也不会出现网络瘫痪的情况。因此,适用于分布式监控系统的数据通信。由于CAN总线协议规范只定义了物理层和数据链路层,所以在实际应用中必须根据实际系统制定合适的应用层协议。本系统中根据数据传输要求自定义了几个应用层命令,分别是升级相关命令和数据收发校验相关命令,限于篇幅在此就不一一详述。 3 软件升级过程 软件升级包括升级控制模块部分和待升级模块部分。 升级控制模块部分的工作过程为:向待升级模块发送升级命令,待接收到模块返回确实认标志后,再通过CAN应用层协议向待升级模块发送升级数据,升级完成后向待升级模块发送完成命令。 待升级模块工作流程如图4所示。
8、分为引导程序部分和应用程序部分,这两部分内容在开发的时候是作为两个独立的工程项目来完成的。 为确保在线升级的安全性,在Flash指定位置设置了一个程序完好标志。由于Flash的擦写是按照Page开展的,所以这个标志即使只有一位也需占用一个Page的大小。本系统中将标志设置在Flash一个Page.如果应用程序区没有空余的Page来写入该标志,就要考虑换用更大Flash容量的产品或者外扩存储器。程序完好标志在应用程序进入的时候写入,在接收到升级命令时擦除。若在引导程序中检测该标志不合法,就一直处于升级状态,直到收到升级成功命令为止。 程序跳转例如性跳转代码如下: typedef void(*pFunc)(vold); /自定义函数指针数据类型 pFunc Jump_To_App; /定义一个指向应用程序的指针 Jump_To_App=(pFunc)0 x08004000; Jump_To_App(); 需要注意的是,在程序执行跳转代码前,需要关闭中断响应,以防止发生不可预测的异常。同时,当程序跳转前,需要将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新人教版八年级英语下学期Unit5-Unit 6作文指导范文素材
- 2025办公复印设备故障维修合同协议
- Solid 机械基础及教程 7
- 新生儿睡眠护理
- 护理数据分析
- 2026年农机维修专业技术人员合同
- 照顾早产宝宝的技巧与方法
- 椎管内肿瘤患者的健康教育与患者参与
- 护理人文关怀的叙事研究
- 护理学本科:老年护理学专题讲座
- 中国空白地图(打印)
- 绘画的力量知到智慧树章节测试课后答案2024年秋青海师范大学
- 韩国大学入学申请书
- 陕西煤业智能矿井建设标准(暂行)(征求意见稿)
- GB/T 3324-2024木家具通用技术条件
- 高考英语必背688个高频词汇全集(建议每天背一些)
- 2024年广东省广州市市中考英语试卷真题(含答案解析)+2023年中考英语试卷及解析
- 2024年广东省广州市中考历史试卷真题(含答案)+2023年中考试卷及答案
- 少先队辅导员技能大赛考试题库300题(含答案)
- 个体工商户登记(备案)申请书(个体设立表格)
- 高中数学必修二(人教A版2019)课后习题答案解析
评论
0/150
提交评论