新闻中心

EEPW首页>嵌入式系统>设计应用> C8051F单片机的软件IAP技术

C8051F单片机的软件IAP技术

作者: 时间:2016-12-02 来源:网络 收藏


   RSTSRC=0x10;//实现软件复位
  Jmpmain();

对RSTSRC的写操作均用直接赋值方式完成(如RSTSRC = 0x02),不能用读/写指令(如ORL或ANL)来完成。例如,代码“RSTSRC |= 0x02”就是非法的。为保证完美的复位,在设置了复位寄存器后笔者还添加了汇编复位程序,以做到万无一失。

  Jmpmain:
  LJMP 0000H
  RET

这样通过一条长跳转指令跳到程序区最开始的位置。在C中调用汇编程序的方法请参考其他文档。

2引导区的编译

作为程序引导区的程序,平时不参与主程序的执行。而主程序主要用于和用户操作界面PC 机部分进行握手,当接收到PC 机部分要进行软件升级的命令时,程序跳至引导程序区,执行如下流程:

发送准备升级字节到PC 机→删除Flash 程序区→发送开始下载命令到PC 机→接收且放到相应地址。


图1主程序流程

主程序流程如图1所示。引导区的程序要固定在一个位置,并单独编译,由 JTAG下载到MCU中。引导区的程序不能编译分配Flash地址。笔者使用的Keil编译器是一个很简单、易用的编译器。在Keil中,定位升级程序位置的实现方法非常简单,通过修改其Project菜单下的Options for target一项就可以了。

在本程序中,引导区的程序定义在62 KB之后的位置。

编者注: 硬件接口和主从机程序见本刊网站www.mesnet.com.cn。

3注意的问题

① 使用内部振荡器,这样能提高系统时钟的抗干扰能力。
② 使用Flash时会限制执行写操作的速度。完成1个字节的操作最长需要40 μs ,所以最好选用9 600的波特率。
③ 减少将PSWE置1的指令操作。理想的情况是只有2个操作会将PSWE置1,即写1个Flash字节和擦除1个Flash字节。
④ 将Flash写/擦除指针指向data或idata区。
⑤ 引导区的程序应该以512字节为边界。
⑥ 升级用的HEX程序必须由PC机上的软件转化为BIN文件。
⑦ C8051F120 MCU程序的操作最大特点是:在配置寄存器时能切换到该寄存器所在的页。
⑧ 引导区的程序在擦除或者写时,不可以开中断,且要关掉所有中断。

结语

本文中的软硬件模块已被嵌入到相关的应用系统之中,提高了系统的性价比。该方案解决了升级过程中的一些关键技术问题,节约了资源,将会在一些高端控制中得到更为广泛的应用。软件IAP 技术不但适用于C8051F单片机,而且对使用其他单片机的产品设计也具有重要的参考价值。

参考文献

[1] 姜晓梅,李祥和.基于ARM的IAP在线及远程升级技术[J].计算机应用,2008(2):519521.
[2] 周立功,张华.深入浅出ARM7[M].北京:北京航空航天大学出版社, 2005: 426438.
[3] 刘忆辉,魏银库,等.片外Flash存储器IAP的一种方案[J].单片机与嵌入式系统应用, 2006(2).
[4] 王飒.用C8051F020的SPI接口扩展大容量数据存储器[J].微计算机信息, 2006(22).
[5] 李光飞,阳富民,楼然苗.基于K9F2808UOC的FAT16文件系统[J].浙江海洋学院学报:自然科学版,2006(6).
[6] K9F2808UOC datasheets[OL]. http: //www. samsung. com /Prod?ucts/datasheets. htm.

上一页 1 2 下一页

评论


技术专区

关闭