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

对不同的产品系列,调用引导加载程序的物理连接和方法略有不同,但是都包含相同的基本元件。如果连接到一台PC上,需要一个如图所示的RS-232到CMOS电平转换器,来连接主机和目标微控制器间的通讯和控制信号。图中所示的器件可以替换为任何兼容的RS-232转换器。下列图中使用微控制器的DTR信号作为加载/运行模式选择信号。
一些设计使用了具有三态输出的总线缓冲器。当DTR有效时(低电平),它使能打开缓冲器,并驱动用来激活引导加载程序的多个信号。这个总线缓冲器在原理图中一般标成"HC/AC125",这是因为可以使用任何逻辑系列的相似器件,如74HC125, 54HC125, 74AC125, 74LS125等。这些器件很常见,应该能够从任何一家通用逻辑器件供应商买到,如Motorola, Fairchild Semiconductor, Toshiba, ST Microelectronics 和许多其它供应商等。
其它器件用单个信号激活引导加载程序,因此不需要这个缓冲器。这种情况下,DTR信号可以直接连接到目标微控制器的激活引脚。

引导加载程序使用连接到XTAL1/XTAL2引脚上的时钟源作为它的时间基准。如果使用晶振,它必须满足器件数据手册中列出的推荐指

如果是基于DS5000FP, DS5001FP, DS5002FP, 或DS80C400等目标微控制器,也可以使用简单的终端仿真器,如Procomm Plus 或超级终端来进行通讯。Dallas Semiconductor其它基于8051的微控制器使用一种交互式加载协议,这种协议需要协议识别类应用。
调试通讯问题
以下是通过引导加载程序和微控制器通讯时所遇到的常见问题列表。
(1) 错误时钟频率
如果器件工作在错误的时钟频率下,引导加载程序可能不会完成自动波特率功能。核对用户指南选择所支持的频率。如果怀疑问题是由时钟频率引起的,强烈推荐使用11.0592MHz的晶振调试任何引导加载程序问题。这是一个非常标准的微控制器工作频率,能够生成大部分标准波特率。
(2)其它应用干扰COM端口
后台应用程序可能有意或无意地干扰所选择的PC机COM端口。检查任务管理器以查找可能的冲突源。
(3)PC的波特率相对于所选择的工作频率过快
在较低的工作频率下(约低于5MHz)器件可能不能和高波特率进行自动波特率匹配,也可能在处理大文件时导致缓冲器溢出。降低波特率并重试。
(4)微控制器不工作
很可能观察到的故障不是和引导加载程序有关,而是和微控制器自身有关。以下是排除系统级故障的简短诊断列表。
器件的所有电源引脚是否都提供了正确的电压? 为了读数精确,要确保探测微控制器的实际引脚而不是与之相连的电路板上的引线。
EA\引脚保持低电平时,地址引脚是否跳变?许多器件在EA\置低时,会将器件置于外部访问模式,强迫器件从外部总线上获取指令。虽然不会立刻证明器件是否产生正确的