新闻中心

EEPW首页>嵌入式系统>设计应用> 基于CAN的远程下载技术开发及应用

基于CAN的远程下载技术开发及应用

作者: 时间:2010-12-07 来源:网络 收藏


1.2 系统功能设计

在整个设计开发中,关键之处是目标端 Bootloader 自举程序的开发。结合到VRV 空调系统的实际应用,整个系统应该至少具有以下功能:

(1)多种下载方式的提供。VRV 空调系统运行当中,可能需要根据实际情况采用不同的方式来进行远程下载。因而需要实现对单点、多点及广播等通讯方式的支持。

(2)软件复位功能。即便是目标端设备已经具备利用Bootloader 自举程序来实现远程下载的能力,但由于Bootloader 机制需要目标端先复位,才能重新再执行Bootloader 自举程序。

然而现场环境往往不能实施掉电或其他硬件方式复位目标端设备,这便需要有软件实现复位的手段。在此,将软件复位作为自定义的通讯协议中一个命令,由主机端发送给目标端,目标端的用户应用程序内接收到这一命令,经过解析、确认后进行复位。

(3)加/解密功能。鉴于多联机空调系统的商用价值,Bootloader 程序应当具备加密的功能,保护知识产权。这可以通过主机端和目标端之间采用一种密钥或加、解密算法,融合到通讯数据中实现。

(4)异常处理功能。在通讯过程中,很有可能出现如主机端出现故障,造成当前的数据不能继续成功发给目标端。目标端运行自举程序时,只有等到主机端数据全部通讯完毕,才可以跳转到用户应用程序,继续执行。此会造成目标端一直处于等待状态,效率低下或者接收错误数据并执行,以致出现严重后果。在系统设计开发时需要预留一个能够实现异常处理的命令以便主机端恢复后,将这个命令下发,目标段根据这个命令,重新接收正确的数据。

2 协议设计

要将系统的目标端和主机端之间,设计成支持单点、多点以及广播等多种远程下载方式,并且支持、软件复位和异常处理、加解密等功能,可以充分利用总线数据帧的29 位(遵循2.0B 协议)标识符来实现。定制的通讯协议中的帧格式如表1 所示,将CAN 的29 位标示符分为五段:优先级、控制域、通讯方式、节点编号、命令编号。

表 1 数据帧29 位标识符分配表
数据帧29 位标识符分配表
数据帧29 位标识符分配表

优先级:00->01->10->11 优先级别依次降低,默认优先级别为11,故障报警优先级最高为00,数据传输优先级为01,命令下传优先级为10,应答返回优先级为11。

控制域:ID26/ID22,用以表示当前的数据帧属于哪一种类型:故障为00、数据为01、命令10、应答11。

通讯方式:ID24/ID15,指定当前的数据帧是广播传输或者单点传输,全为0 是单点而全为1 是广播。

节点编号:ID14/ID8,共7 位,足够标识CAN 总线支持的多达112 个节点的最大负载。

命令编号:这里存放的是根据实际需要定制的一些命令,如软件复位命令、异常处理命令。主机端将定制的命令编号下发,目标端接收到命令后,解析后执行相应动作。仿照上表,配置各个目标端的接收过滤码和接收屏蔽码,便可以实现单点、多点以及广播通讯。另外,对于单点通讯方式下的远程下载,为保证主机端和目标端的通讯数据的正确和可靠传输,采用应答机制来实现,并定制了一套图3 所示的通讯链路机制。

主机端和目标端应答链路机制图
主机端和目标端应答链路机制图
图 3 主机端和目标端应答链路机制图

远程下载的通讯只能由主机端开启。主机端先发送读取器件型号命令,读取目标端器件芯片型号,目标端收到这个命令,回复本身的型号数据作为一个应答,主机端根据这个型号,再开辟动态内存和组织要下传的数据。主机端接着下发一个读取器件PROM 命令,以获取目标端器件位于地址0x00 处的数据,将和从主机端读取并解析、组织后的HEX 文件一起下传。主机端收到这一步的应答后,开始发送写PROM 命令和PROM 数据,目标端将接收到的数据写入相应的地址段,每完成一页写操作,返回一个应答,接着接收主机端下传的下一页数据。PROM 写数据发送完后,主机端接着发送写CM 数据命令和写CM 数据,过程和写PROM 是一样的。最后,主机端下发一个跳转命令,目标端收到这个命令后,跳转到程序存储器的0x00 地址处。然后,目标端根据地址0x00 处存放的数据,跳转到用户应用程序。

而对于多点或广播,通常都是对数百甚至上千目标端进行下载。如果目标端都应答,会造成总线上数据的堵塞,浪费大量的总线时间。所以采用非应答机制,直接烧写程序存储器。

此时主机端数据的下传,采用定时器触发方式。每当定时时间到达时,触发一次数据的发送。

直至最后,发送一个跳转命令。如果目标端没有执行跳转,那么认为当前目标端没能正确接收主机端发送的数据,主机端重新对当前目标端进行一次单点方式下的远程下载。

3 目标端设计方案

目标端Bootloader 自举程序一般只是一个简单的通讯程序,负责接收和发送数据,通常只需极少的存储空间,可以位于程序存储器特定的Boot Segment 区域。程序存储器还有一段称为General Segment 区域可用于存储用户应用程序。的程序存储器大多都是FLASH 闪存,数据是以一个个数据页的形式存储,必须先对当前存储页擦除,然后才能写入数据。自举程序还需使用dsPIC33器件中断向量表 (IVT) 中的复位向量实现程序的跳转、以及器件上的CAN 通信模块。单片机的程序存储器的地址映射如下图4 所示。

dsPIC33F 程序存储器地址映射图
dsPIC33F 程序存储器地址映射图
图 4 dsPIC33F 程序存储器地址映射图


关键词:单片机CAN

评论


相关推荐

技术专区

关闭