8051 单片机在线升级软件的方法作者:庞澜文章来源:单片机与嵌入式系统应用点击数: 478 更新时间: 2007-3-16 本文通过对 8051 单片机的特点分析, 提出了一种低成本的方法, 使其软件可以利用系统已有的通信链路在线升级。 1 基本原理类似于其他引导装载升级程序的方法,在系统中必须始终存在一段用于程序装载的代码( bootloader ),该代码在启动时被运行。其基本功能是根据外部条件来判断是运行现有版本的程序还是从主机下载新程序。 805 1 具有选择执行片内或者片外程序的功能, 而对片内 E2PROM 编程过程相对比较复杂, 因此这里将程序引导装载代码烧结在内部程序空间中,并不准备改变;而将系统应用程序存放在片外一编程相对简单和独立的 E2PRO M 内, 是随时可以更新的部分。通过外围电路的支持, 单片机上电复位时首先执行片内的装载程序, 如图 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 地址起执行。内部装载程序先通过 、 模拟 I2C 总线时序从 E2PROMU3 中将应用程序代码拷贝到片外 RAM 从 0 地址起的空间中。如果到代码拷贝结束串行口一直没有收到预定的程序下载命令,则通过软件置低 口触发看门狗芯片对单片机复位, 在复位脉冲的上升沿, D 触发器锁存其输出的信号使 EA 电平翻转为低电平。待复位信号撤销后,单片机开始执行位于外部程序空间的系统应用程序代码。在执行外部程序时,如果看门狗再次复位, EA 将会恢复高电平并重新执行内部装载程序。图 2 引导装载电路当上位机欲更改终端设备程序时,可通过串口向其发送特定的握手字符串,无论片外程序还是片内程序最好都能识别该字符串并且复位单片机(如果是正在运行外部程序)执行内部装载程序。装载程序就绪后向上位机发送
8051单片机在线升级软件的办法 来自淘豆网m.daumloan.com转载请标明出处.