远程升级的流程1.基础准备
远程升级程序是通过远程无线或者是有限的方式把代码写入到单片机的flash存储器中,无需工作人员到现场更换程序,大大的节省了人力和物力,提高了工作效率。
要进行远程升级程序首先需要搞清楚下面的几点;
一、首先需要搞清楚程序在单片机中的存储位置,中断向量表的存储位置。
二、搞清楚单片机在启动过程都做了哪些工作,从上电那一刻开始到能够正常的工作这一段时间。
三、画出适当的升级流程图,主要是单片机和上位机之间的信息交互;比如什么时候开始升级,由下位机发起还是上位机发起,单片机对下发信息的解析等,升级所用通信方式因人而异(有Uart、zigbee、GPRS、Lora、WiFi、USB等各种形式的通信方式)。
四、修改配置文件;一般人对配置文件接触的比较少,对这部分也不太了解;配合文件在IAR安装目录下,后缀是.xcl。比如MSP430F5324的配置文件名字是在IAR安装目录下找到这个文件然后用IAR打开,里面描述了单片机的所有资源,当然也可以在此处配置堆栈大小。
下面的截图中的内容就是用来配置代码的存储位置。
从上面能够得出如下信息
默认的代码存储区域是0x4400~0xFF7F、0x10000~0x143FF,即有2段存储区域。第一个大小是46.875K字节,第二个大小是17K字节。中断向量区存储区域是0xFF80~0xFFFF,其中0xFFFE~0xFFFF存放的是复位中断,从这个中断就可以进入上层的main函数中去。中断向量区大小是0.125K字节。
46.875K+0.125K+17K=64k字节。
这是存储区的整体分布情况,现在我们要做的就是写一段boot代码存放到上面的存储区中,显而易见,加入了boot代码就会打乱原来application的存储代码起始位置和中断向量表的位置。(application是相对于bootloader的,他就是我们普通的单片机代码,我们要做的就是用一个新的application把老的application给覆盖掉,这些操作都是由bootloader代码来完成的)
所以我们要做两个配置文件,即和,写好后分别在两个工程中加载这俩个文件,然后编译,application的执行文件用离线下载器下载,bootloader的执行文件可以用仿真器下载。
五、写出升级程序,简称boot代码,也叫作bootloader,启动引导程序。