新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于CAN总线连接的MEGA8远距离在线升级方案

基于CAN总线连接的MEGA8远距离在线升级方案

作者:时间:2012-08-04来源:网络收藏

  ……

  ld temp,y+

  mov zl,temp ; Z指针地址赋值

  ld temp,y+

  mov zh,temp

  ldi temp,(1

  rcall Do_SPM ; 执行页写入

  ……

3、BOOT程序介绍及流程图

  Mega8单片机上电后设置冷启动标志,而热启动入口则设置热启动标志。然后初始化堆栈、串口以及必要的I/O状态等。初始化完成后,如果BOOT程序检测到热启动标志则直接进入烧录状态;如果为冷启动标志则继续检测下载位是否允许(本设计通过PB0开关选择),如为高电平则进入烧录状态,如为低电平则进入用户程序。

  程序在设计时提供了两个入口,一个是系统复位时的冷启动入口,另一个是用户程序在运行时进入升级程序的热启动入口。BOOT程序主要包括烧录子程序、串口发送、串口接收、引导主程序等。

  串口发送采用了查询发送完成标志。这样当该标志被设置时,证明串口的停止位已经发送完成,这对于通讯非常有用。烧录程序主要使用“SPM” 指令,该指令完成对MEGA8的烧录等功能。而读取MEGA8的指令则使用“LPM”。由于擦除,页填充,写入,读出等基本命令单片机都已解释完成,因此所有过程都可以由计算机端程序进行控制。

  程序开始时,计算机端发送命令,先对单片机的页进行擦除,然后接收一帧数据,接收完毕后执行页写入命令,写入完成再进行读出进行校验,如果校验无误再继续写入下一页,直到所有页都写入完毕,即完成一次下载过程。如果传输或页校验出现错误,程序会连续进行5次测试,如再仍不成功,则认为本次下载失败。主程序流程图如图3。

  MEGA8单片机的主程序通过CAN接口执行计算机发送的命令,并且定义了一个更新代码的特殊命令,当接收到该命令时,主程序首先关闭中断,关闭看门狗,然后跳转到BOOT的热启动入口,再执行BOOT下载烧录程序。下载完成后再直接跳转到$0000地址进入用户程序区,这样就完成了代码的。为了保证该命令的可靠性,本程序设计时规定单片机必须在100ms内同时接收到两次该命令才认为正确,超过100ms则不予认可。

4、结束语

  由于采用了MEGA8单片机的BOOT功能,以及高速远距离通信,同时抗干扰性强,使得远距离,譬如通过以太网、无线等方式,成为了可能。这对于系统调试及以后的升级维护都提供了极大的便利,这也是今后单片机和发展的一个方向。由于该部分具有通用性,所以可很容易地移植到 AVR其它MEGA系列的设计方案中。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭