微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > CAN总线分布式嵌入式系统的升级设计

CAN总线分布式嵌入式系统的升级设计

时间:05-15 来源:互联网 点击:

待升级模块工作流程如图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等)进行远程升级。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top