8051单片机在线升级软件的方法
时间:01-09
来源:单片机与嵌入式系统应用
点击:
本文通过对8051单片机的特点分析,提出了一种低成本的方法,使其软件可以利用系统已有的通信链路在线升级。
1 基本原理
类似于其他引导装载升级程序的方法,在系统中必须始终存在一段用于程序装载的代码(bootloader),该代码在启动时被运行。其基本功能是根据外部条件来判断是运行现有版本的程序还是从主机下载新程序。8051具有选择执行片内或者片外程序的功能,而对片内E2PROM编程过程相对比较复杂,因此这里将程序引导装载代码烧结在内部程序空间中,并不准备改变;而将系统应用程序存放在片外一编程相对简单和独立的E2PROM内,是随时可以更新的部分。通过外围电路的支持,单片机上电复位时首先执行片内的装载程序,如图1所示。该装载代码将应用程序从E2PROM拷贝到外部存储器(RAM)中以备执行,同时还通过通信接口监系统程序装载执行过程听主机命令。当收到主机更新程序的请求后,立即接收新的应用程序内容,并在最终确认后写入扩展E2PROM内。当片内程序执行完毕后,系统软件复位并执行片外RAM中的程序,而RAM的内容正是由装载所决定的。如果CPU再次复位,那么将重复上述装载执行过程。
1 基本原理
类似于其他引导装载升级程序的方法,在系统中必须始终存在一段用于程序装载的代码(bootloader),该代码在启动时被运行。其基本功能是根据外部条件来判断是运行现有版本的程序还是从主机下载新程序。8051具有选择执行片内或者片外程序的功能,而对片内E2PROM编程过程相对比较复杂,因此这里将程序引导装载代码烧结在内部程序空间中,并不准备改变;而将系统应用程序存放在片外一编程相对简单和独立的E2PROM内,是随时可以更新的部分。通过外围电路的支持,单片机上电复位时首先执行片内的装载程序,如图1所示。该装载代码将应用程序从E2PROM拷贝到外部存储器(RAM)中以备执行,同时还通过通信接口监系统程序装载执行过程听主机命令。当收到主机更新程序的请求后,立即接收新的应用程序内容,并在最终确认后写入扩展E2PROM内。当片内程序执行完毕后,系统软件复位并执行片外RAM中的程序,而RAM的内容正是由装载所决定的。如果CPU再次复位,那么将重复上述装载执行过程。
图1 值得注意的是,在对外部程序存储器访问时,8051单片机只提供读指令(MOVC)而并不具备写指令。但是从单片机对外部程序和数据存储器的访问时序上看具有一致性,不同的是读代码使用PSEN信号而读数据使用RD信号。同时,单片机的PSEN﹑RD和WR信号不会同时有效,因此将PSEN和RD逻辑合并后,可以使程序和数据合二为一读写成为可能。这样同一个地址单元RD、WR(MOVX)和PSEN(MOVC)均可以进行访问。单片机可以使用MOVX写指令来更改相当于其外部程序空间中的内容。特别要注意的是,当程序和数据共存于一片RAM中时,必须使用编译器提供的相关连接命令使数据区偏离代码可能占用的区域,否则会导致系统混乱。 2 硬件电路 硬件参考电路如图2所示。系统加电后,由于C3两端电压不能瞬变,使D触发器置1端保持一短暂低电平,强制将单片机EA信号置高。在U4看门狗上电复位信号撤销后,单片机开始从内部程序空间0地址起执行。内部装载程序先通过P1.4、P1.5模拟I2C总线时序从E2PROMU3中将应用程序代码拷贝到片外RAM从0地址起的空间中。如果到代码拷贝结束串行口一直没有收到预定的程序下载命令,则通过软件置低P1.6口触发看门狗芯片对单片机复位,在复位脉冲的上升沿,D触发器锁存其输出的信号使EA电平翻转为低电平。待复位信号撤销后,单片机开始执行位于外部程序空间的系统应用程序代码。在执行外部程序时,如果看门狗再次复位,EA将会恢复高电平并重新执行内部装载程序。
|
8051 相关文章:
- Intersil推出高性能单路输出低压差稳压器ISL80510和ISL80505(09-08)
- Silicon Labs参考设计帮助开发人员在5分钟内转动电机(10-12)
- 8051系列单片机(01-09)
- 时代民芯:“军转民”的突围(05-02)
- Silicon Labs扩充符合车用标准微控制器系列(10-11)
- Microchip继续生产100%兼容NXP停产MCU的8051/80C51单片机(01-23)