0 引言
dsPIC33F系列单片机是美国微芯公司(Microchip)推出的一款高性能单片机,它将数字信号处理器(Digital Signal Processor,DSP)的高速运算能力与单片机的控制特性无缝地集成在一起,为嵌入式系统设计提供了高性价比的单芯片、单指令流的解决方案,在音频处理、视频处理及工业控制等方面得到了广泛应用。但是在实际应用中,由于客户需求变化或程序BUG修改等原因,经常出现需要使单片机应用程序升级的情况,本文利用dsPIC33F单片机运行时的自编程(Run-Time Serf-Programming,RTSP)特性,实现了基于该单片机应用程序的升级功能。
1 基本原理
dsPIC33F系列单片机提供了两种方式用于对其内部程序存储器进行编程:在线串行编程(In-Circuit Serial Programming,ICSP)和运行时自编程(Run-TimeSelf-Programming,RTSP)。ICSP使用5根线对单片机编程,主要用于产品调试或生产过程中,显然不适合用于产品运行时的程序升级。RTSP是通过使用TBLRD(表读)和TBLWT(表写)指令来完成的,使用RTSP可以一次将64条指令(192 B)的块(或“行”)或单个程序存储字写入程序存储器,也可以一次擦除512条指令(1 536 B)的块(或“页”),由于该方法采用程序指令实现了自编程,可应用于产品运行时的程序升级,因此本文采用RTSP方法实现基于dsPIC33F系列单片机的应用程序升级功能。程序升级的实质是对程序存储器内容的更新,所以有必要先了解一下dsPIC33F单片机的程序存储器内部结构。
1.1 dsPIC33F单片机的程序存储器内部结构
dsPIC33F单片机的程序存储器结构如图1所示。一般情况下,“复位地址”的内容为全0,单片机复位后均从程序存储器地址0的位置上开始执行,即从图1中的“GOTO指令”位置开始执行。在这里存放了一个跳转指令,直接指向用户程序的首址,默认情况下该位置的指令为“GOTO 0x200”,即默认跳转到首址为0x200的用户程序(图1中的“用户程序存储空间”)开始执行。dsPIC33F单片机具有2个中断向量表,即“中断向量表”和“备用中断向量表”,地址分别从0x000004~0x0000FF和0x000100~0x0001FF这两个中断向量表允许使用不同的中断服务程序来处理每个中断源。程序升级功能正是基于程序存储器内部结构的以上特性而实现。
1.2 程序升级功能的实现流程
将图1中的“用户程序存储空间”分为引导程序和应用程序2部分,如图2(a)所示。引导程序用于引导用户程序是进入升级状态,还是进入正常运行状态,若进入升级状态则接收新的程序数据,并更新程序存储器的内容;若进入正常运行状态则程序跳转到应用程序区。应用程序是为了实现产品功能而编写的程序,也就是本文所谓&ldqu一体电感器o;程序升级”的对象。
实际应用中,将外部非易失性存储器(如E2PROM)的某些存储单元值当作是否进行程序升级的标志(以下简称程序升级标志)。单片机上电或复位后首先执行“GOTO0x400”指令,即跳转到引导程序。默认情况下程序升级标志是处于“正常运行”状态下的,引导程序调用跳转指令将用户程序引导到应用程序区,若运行过程中发现服务器有新的应用程序版本或接收到服务器发来功率电感器的升级程序命令时,单片机将程序升级标志设置为“程序升级”状态,然后软件复位单片机。这时程序再次跳转到引导程序,根据程序升级标志,单片机进入程序升级状态,接收新的程序,并更新程序存储器的内容,升级完成后,单片机将程序升级标志设置为&线圈电感ldquo;正常运行”状态,然后再次软件复位,此时单片机运行于新的应用程序中。
由于引导程序和应用程序都可能用到中断,因此应用程序采用中断向量表,引导程序采用备用中断向量表,以执行各自相应的中断服务子程序。值得注意的是,在图2(a)中引导程序的首址为0x000400,这是因为dsPIC33F单片机执行一次擦除指令会电感器厂家擦除512条指令空间(即1“ 块”,占用1 024个地址单元),这意味着程序升级必须以1 024(即0x400)为单位。同理,应用程序的首址必须为0x400的整数倍,本文采用0x00C800。
从以上基本原理的分析可看出,程序升级功能的实现主要就是引导程序的实现。
一种新型的蓄电池充放电综合控制设备由于军事应用中一些不断电设备耗能较大,因而普遍采用串连电池组的模式避免过高的电流。串连电池组的充放电与单一电池的充放电有所不同,电池组内不同电池的差异如果不被重视就会造成电池组使用效率降低,减少蓄电池
一款四象限 DC/DC 开关稳压器的实现 引言在很多电子系统中,有必要为特定类型负载提供双极性(正和负)电压或电流。需要双极性电压/电流的负载包括FPGA体偏置应用、热电冷却器、DC电动机以及其他很多类型的应用。有很多传统方法可为负载提供双
LED技术在汽车照明系统的应用LED是英文light emittingdiode(发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用。另外,LED光源