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等)进行远程升级。
- 基于dsPIC33F系列单片机的应用程序升级方法(04-03)
- 设计基于NXP LPC2000的次级启动加载程序用于代码升级(04-04)
- PIC18单片机的一种新颖的Bootloader设计(03-28)
- 一种嵌入式系统升级的设计和实现(06-15)
- FLASH K9F1G08U0M在MSP430F149嵌入式系统中的应用(08-28)
- Android装置常见问题风险(11-30)