单片机在线升级软件的方法

单片机在线升级软件的方法

ID:37334939

大小:327.74 KB

页数:3页

时间:2019-05-22

单片机在线升级软件的方法_第1页
单片机在线升级软件的方法_第2页
单片机在线升级软件的方法_第3页
资源描述:

《单片机在线升级软件的方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、维普资讯http://www.cqvip.com8051单片机在线升级软件的方法一西安应用光学研究所庞澜本文通过对8051单片机的特点分析,提出了一种低2硬件电路成本的方法,使其软件可以利用系统已有的通信链路在线升级。硬件参考电路如图2所示。系统加电后,由于C3两端电压不能瞬变,使D触发器置1端保持一短暂低电平,1基本原理强制将单片机EA信号置高。在U4看门狗上电复位信号类似于其他引导装载升级程序的方法,在系统中必须撤销后,单片机开始从内部程序空间0地址起执行。内部始终存在一段用于程序装载的代码(b

2、ootloader),该代码装载程序先通过P1.4、P1.5模拟10C总线时序从在启动时被运行。其基本功能是根据外部条件来判断是E2PROM—U3中将应用程序代码拷贝到片外RAM从0运行现有版本的程序还是从主机下载新程序。8051具有地址起的空间中。如果到代码拷贝结束串行口一直没有选择执行片内或者片外程序的功能,而对片内EzPROM收到预定的程序下载命令,则通过软件置低P1.6口触发编程过程相对比较复杂,因此这里将程序引导装载代码烧看门狗芯片对单片机复位,在复位脉冲的上升沿,D触发结在内部程序空间中

3、,并不准备改变;而将系统应用程序器锁存其输出Q的信号使EA电平翻转为低电平。待复存放在片外一编程相对简单和独立的EzPROM内,是随位信号撤销后,单片机开始执行位于外部程序空间的系统时可以更新的部分。通过外围电路的支持,单片机上电复应用程序代码。在执行外部程序时,如果看门狗再次复位时首先执行片内的装载程序,如图1所示。该装载代码位,EA将会恢复高电平并重新执行内部装载程序。将应用程序从EzPROM拷贝到外部存储器(RAM)中以备执行,同时还通过通信接口监听主机命令。当收到主机更新程序的请求后,立即接

4、收新的应用程序内容,并在最终确认后写入扩展E2PROM内。当片内程序执行完毕后,系统软件复位并执行片外RAM中的程序,而RAM的内容正是由装载所决定的。如果CPU再次复位,那么将重复上述装载执行过程。值得注意的是,在对外部程序存储器访问时,8051单片机只提供读指令(MOVC)而并不具备写指令。但是从单片机对外部程序和数据存储器的访问时序上看具有一致性,不同的是读代码使用PSEN信号而读数据使用RD信号。同时,单片机的PSEN、RD和WR信号不会同时有效,因此将PSEN和RD逻辑合并后,可以使程序和

5、数据合二为一读写成为可能。这样同一个地址单元RD、WR(MOVX)和PSEN(MOVC)均可以进行访问。单片机可以使用MOVX写指令来更改相当于其外部程序空间中的内容。特别要注意的是,当程序和数据共存于一片RAM中时,必须使用编译器提供的相关连接命令使数据图1系统程序装载执行过程区偏离代码可能占用的区域,否则会导致系统混乱。—lMictII&Embeddedsyst71维普资讯http://www.cqvip.com图2引导装载电路当上位机欲更改终端设备程序时,可通过串口向其发I2c_wr(addh

6、,addl,buf,16,1);送特定的握手字符串,无论片外程序还是片内程序最好都for(j一0;j<16;j++)能识别该字符串并且复位单片机(如果是正在运行外部程/*将代码写入外部绝对地址*/XBYTE[I++]一buf[j];序)执行内部装载程序。装载程序就绪后向上位机发送确)认回应,并接收来自上位机的程序代码。单片机通过置低I2c_wr(addh,0xf0,buf,16,1);P1.3允许E2PROM写操作,将新的内容写入E2PROMfor(j一0;j<16;j++)中,完成程序的更新。、x

7、BYTE[I++]一buf[j];WDI=~WDI;3软件设计)装载程序主要有两个功能,其一是要将E2PROM的if(shake_hand=一1){内容拷贝到片外RAM中;其二是要响应上位机的更新程/*shake—hand由串口中断收到握手命令后置1*/序命令并接收代码内容更新E0PROM。rev_data();/*该函数负责从上位机获取程序*/#defineucharunsignedchar)#defineuintunsignedintXBYTE[0xlff]一Oxaa~/*置程序拷贝好标志*/s

8、bitWDI=P1‘7;RESET=0;/*复位单片机并执行外部RAM内的程序*/sbitRESET—P1‘6;while(1):/*声明外部10C读写函数*/)externvoidI2c—wr(ucharaddh,ucharaddl,ucharbuf[],uchar为了确保程序在装载完全正确后才开始执行,装载程num,bitwr);序使用了外部RAMOxlfff地址内容作为装载成功的标voidmain(void){志。那么相应的应用程序应判断此标志后再执行。ucha

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。