应用笔记 3262

基于8051的微控制器在系统编程

By: Kevin Self

摘要 : 在系统编程是一种有价值的功能,在无需拆解嵌入式系统替换存储器的情况下,就可以对系统固件进行升级。Maxim大多数基于8051的微控制器都能够通过廉价的RS-232串口和一些逻辑门由PC或便携式电脑进行重新编程。启动后,在系统编程特性自动对检测到的波特率进行匹配,并开始执行命令驱动的、基于ROM的引导加载程序。基于PC的微控制器工具包软件可以从Maxim免费获得。

具有在系统编程能力的嵌入式设计使得普通产品能在出厂前才进行软件定制。该特性允许在不拆解系统的情况下对现有应用进行升级,从而降低寿命周期成本。安全微控制器如DS5002FP和DS5250能应用这个特性向应用中加载用户的专有软件,并能够自动加密保护,拒绝未授权的访问。

介绍

Maxim基于8051的微控制器类产品中,许多型号都支持通过通用RS-232串口实现在系统编程。在系统编程意味着程序和/或数据存储器能够在不用拆解嵌入式系统来替换存储器的情况下进行修改。这种特性强调易使用性和多功能性,在所有嵌入式设计中增加了许多非常重要的特性:
  • 允许硬件在工厂组装和存放,而在出厂前才进行软件定制,
  • 需要进行软件升级时,消除了在现场拆解器件的高昂代价,
  • 允许对位置不可达的应用进行软件升级,
  • 访问专用配置与状态寄存器,以及
  • 使用存储器加密的方式把软件加载到安全微控制器。
具有这种特性的器件包括:
安全微控制器:DS2250、DS2250T、DS2251T、DS2252T、DS5000、DS5000T
安全微处理器:DS5000FP、DS5001FP、DS5002FP、DS5002FPM
高速安全微处理器:DS5250
网络微处理器:DS80C400
超高速闪存微控制器:DS89C430、DS89C450
通过将器件的一个或多个外部引脚设置为某特定状态来激活引导加载程序。器件启动后,开始执行位于器件内部专用ROM的加载程序。一旦收到一个回车符号,串口就执行自动波特率功能并与主机的波特率同步。主机(通常为PC)和目标板之间的通讯是通过大多数PC上常见的通用RS-232接口完成的,而不需要昂贵的专用硬件。引导加载程序使用的协议简单,由一个或多个带有相关状态消息和文件传送程序的ASCII字符命令组成。可以使用Maxim免费提供的微控制器工具包通讯软件或任何串口通讯工具软件来完成通讯。

大部分此类器件也支持在应用编程,允许器件在应用软件的控制下修改程序存储器。这种方式下,系统能够在仍然履行其主要功能的情况下完成在线软件升级。详细情况在相关器件的数据资料或用户指南中给出。

此文档是对相关器件的数据资料以及使用指南中所提供信息的补充。阅读此应用笔记时,请根据需要参考这些文档。

物理连接

引导加载程序是通过将器件的一个或多个外部引脚置为如表1所示的特定状态来激活的。此时终止执行应用软件,并且将程序控制权交给内部引导ROM。一定要查阅正确的勘误表,以确定是否有与激活引导加载程序相关的任何勘误信息。

表1. 激活引导加载程序
DEVICE RST PSEN EA PROG P1.7 P2.7 AND P2.6
DS2250(T) 1 0 N/A N/A N/A Unconnected or logic 1
DS5000(T)
DS5000FP
DS2251T N/A N/A N/A 0 N/A Unconnected or logic 1
DS2252T
DS5001FP
DS5002FP/FPM
DS5250
DS80C400 N/A N/A N/A N/A 1 N/A
DS89C430 1 0 0 N/A N/A N/A
DS89C450

对不同的产品系列,调用引导加载程序的物理连接和方法略有不同,但是都包含相同的基本元件。如果连接到一台PC上,需要一个如图所示的RS-232到CMOS电平转换器,来连接主机和目标微控制器间的通讯和控制信号。图中所示的器件可以替换为任何兼容的RS-232转换器。下列图中使用微控制器的DTR信号作为加载/运行模式选择信号。

一些设计使用了具有三态输出的总线缓冲器。当DTR有效时(低电平),它使能打开缓冲器,并驱动用来激活引导加载程序的多个信号。这个总线缓冲器在原理图中一般标成"HC/AC125",这是因为可以使用任何逻辑系列的相似器件,如74HC125、54HC125、74AC125、74LS125等。这些器件很常见,应该能够从任何一家通用逻辑器件供应商买到,如Motorola、Fairchild Semiconductor、Toshiba、ST Microelectronics和许多其它供应商等。

其它器件用单个信号激活引导加载程序,因此不需要这个缓冲器。这种情况下,DTR信号可以直接连接到目标微控制器的激活引脚。

图1. 物理连接, 基于DS89C430/DS89C450的设计方案
图1. 物理连接, 基于DS89C430/DS89C450的设计方案

图2. 物理连接, 基于DS5250和DS5001/DS5002FP的设计方案
图2. 物理连接, 基于DS5250和DS5001/DS5002FP的设计方案

图3. 物理连接, 基于DS5000的设计方案
图3. 物理连接, 基于DS5000的设计方案

引导加载程序使用连接到XTAL1/XTAL2引脚上的时钟源作为它的时间基准。如果使用晶振,它必须满足器件数据资料中列出的推荐指标(基频模式下的谐振,并行AT型切片,负载电容量等)。由于引导加载程序进行自动波特率测量依赖于内部定时器,因此对与引导加载程序兼容的频率范围有一些限制。对于您用到的具体器件,其与引导加载程序兼容的时钟频率范围请参考相关用户指南。

软件

引导加载程序激活后,微控制器将会查询串行端口,寻找一个8数据位,无奇偶校验,一个停止位(8-N-1)格式的回车(0Dh)字符。引导加载程序软件测量这个字符中高低电平的时间长度来确定主机系统的波特率。这种自动波特率特性允许引导加载程序和许多主机系统进行通讯,而不用限制固定的波特率。

一旦调用了引导加载程序并计算好波特率,器件将会发送一个提示信息来识别器件。然后器件将会显示一个提示符并且等待命令。同样,不同的产品系列其命令集不尽相同,但它们通常是单ASCII字符并且总是包括加载,校验和擦除存储器命令等。欲知命令列表请查询具体器件的用户指南。

简单的引导加载程序接口允许使用几种方法来实现PC机与目标微控制器间的通讯。最简单的方法是使用Maxim的微控制器工具包(MTK2)软件。MTK2是一种能用来与大部分Maxim微控制器的ROM/引导加载程序进行通讯的PC应用程序。它具有高度前端特征,简化了目标配置,上传、下载代码以及特殊功能配置等任务操作。

主窗口允许用户直接向目标微控制器输入命令。目标加载程序支持的许多命令都可以由MTK2的主窗口直接输入。对于需要特殊通讯协议的文件相关命令,也提供了特殊支持。

图4. 微控制器工具包
图4. 微控制器工具包

如果是基于DS5000FP、DS5001FP、DS5002FP或DS80C400等目标微控制器,也可以使用简单的终端仿真器,如Procomm Plus或超级终端来进行通讯。Maxim其它基于8051的微控制器使用一种交互式加载协议,这种协议需要协议识别类应用。

调试通讯问题

以下是通过引导加载程序和微控制器通讯时所遇到的常见问题列表。

错误时钟频率

如果器件工作在错误的时钟频率下,引导加载程序可能不会完成自动波特率功能。核对用户指南选择所支持的频率。如果怀疑问题是由时钟频率引起的,强烈推荐使用11.0592MHz的晶振调试任何引导加载程序问题。这是一个非常标准的微控制器工作频率,能够生成大部分标准波特率。

其它应用干扰COM端口

后台应用程序可能有意或无意地干扰所选择的PC机COM端口。检查任务管理器以查找可能的冲突源。

PC的波特率相对于所选择的工作频率过快

在较低的工作频率下(约低于5MHz)器件可能不能和高波特率进行自动波特率匹配,也可能在处理大文件时导致缓冲器溢出。降低波特率并重试。

微控制器不工作

很可能观察到的故障不是和引导加载程序有关,而是和微控制器自身有关。以下是排除系统级故障的简短诊断列表。
  • 器件的所有电源引脚是否都提供了正确的电压? 为了读数精确,要确保探测微控制器的实际引脚而不是与之相连的电路板上的引线。
  • /EA引脚保持低电平时,地址引脚是否跳变? 许多器件在/EA置低时,会将器件置于外部访问模式,强迫器件从外部总线上获取指令。虽然不会立刻证明器件是否产生正确的地址,但是地址总线的变化表明微控制器正处于工作状态。
  • 某些器件的ALE引脚在缺省条件下是来回切换的。是切换的吗? 它和预期的频率相匹配吗? 对于大多数器件,ALE信号会以振荡器频率的某个分频进行振荡。
  • 器件是否有足够的去耦电容? 大部分Maxim的微控制器工作在比传统对应器件更高的内部时钟速率上。直接替换设计或升级可能会要求额外的电容,以实现性能提高。

微控制器工具包版本过期

您是否在使用最新版本的微控制器工具包软件?

下载最新版本的微控制器开发工具编程软件。

勘误表条件

您是否已经核对了对应的勘误表,以查阅任何相关的勘误信息?虽然这种情况很少出现,但有可能引导加载程序和某个器件版本的发布规范有偏差。

电缆线过长

主控计算机和目标计算机间的电缆过长会降低信号的质量。对于电缆长度应该是多少没有明确的规定,但是遵守标准的操作原则如使用屏蔽电缆,远离电动机和磁性线圈等噪声源,应该是有帮助的。使用中降低波特率能够减小长电缆效应。