打印

can总线程序升级

[复制链接]
1430|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maoyanketi|  楼主 | 2010-10-26 23:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
yoyowodeai| | 2010-10-31 13:02 | 只看该作者
见识过串口对程序升级的,好像还有IAP什么的,但是还没有用过CAN总线的,不过原理应该差不多吧

使用特权

评论回复
板凳
vivisa| | 2010-11-9 17:04 | 只看该作者
帮顶

使用特权

评论回复
地板
米其林r| | 2010-11-9 22:29 | 只看该作者
用CAN总线升级MCU程序
2009年08月07日 星期五 23:36
使用CAN分析仪升级MUC程序协议
    使用CAN总线进行在线升级的MCU必须具有IAP的功能,即能自身擦写FLASH。上位机使用CAN接口卡传送HEX文件。这里直接使用CANALYST-II的CAN分析仪自带的发送文件程序。
1.    上位机设置上位机界面如图所示:

这是目前周立功CAN分析仪中所带有的传送文件程序,可以传送HEX文件。
具体的协议设置(注意均为16进制):
1.       握手:
上位机发送帧    ID: 0x10001000 DATA: (无)
前面的1表示握手信号,后面1000表示将要发送的升级文件大小为 0x1000个CAN帧
下位机回应帧   ID: 0x10000001(表示1号节点准备好升级)DATA:(无)
注意:可能有许多节点需要升级,那下位机可能发送ID为:0x10000002 , 0x10000003为2号和3号节点回应的
2.       发送升级文件:
上位机发送帧   ID:0x20000001~0x20001000 DATA:hex文件的内容
注意:hex文件传送为小端格式,即01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0F 10 11用CAN帧传即为: ID 0x20000001 DATA:01 02 03 04 05 06 07 08
ID 0x20000002 DATA:09 0A 0B 0C 0D 0F 10 11
     由于CAN帧传输本身有CRC校验,故数据无需校验,只要保证前后顺序不颠倒,中间数据不丢即可。发送CAN帧的间隔可以设置。
下位机回应帧   ID: 0x20000001(表示1号节点升级完成)DATA:(无)


2.下位机设置下位机的程序有2段,即升级段程序与工作段程序。MCU启动后,先进入升级段程序,从存储区(FLASH或EEPROM)中读取升级标志,如果为0,则进入工作段。
当在工作段时,遇到上位机的握手信号,则更改存储区(FLASH或EEPROM)中升级标志为1,并存储需要接收的升级CAN帧数。然后停止喂狗(系统必须有看门狗),这样系统自动就复位了,再一次进入升级段程序,从存储区(FLASH或EEPROM)中读取升级标志如果为1,则擦除工作区程序,然后发送回应帧给上位机,表示准备好了。
这样上位机发送升级程序,下位机通过帧号的排列,将HEX数据拼接起来,然后烧写工作区程序。最后当帧号=需要接收到的升级CAN帧数时,则说明烧写完成,发送烧写完成的帧。并更改存储区(FLASH或EEPROM)中升级标志为0,停止喂狗,系统自动复位,然后就进入正常开机的流程。
若中间丢帧或者最终帧数不足,则不发送烧写完成的帧,不更改存储区(FLASH或EEPROM)中升级标志。停止喂狗,系统自动复位,程序一直处于升级段程序,等待上位机发送升级命令。不过在物理网络稳定下,这样的情况发生的几率很小

使用特权

评论回复
5
ty新气象| | 2010-11-11 10:35 | 只看该作者
看楼上的,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

143

主题

1079

帖子

0

粉丝