摘 要 本文介绍了 TI 公司的 TMS320C203 芯片特点,对其引导加载功能进行了扩展实现。
关键词 TMS320C203 引导加载 boot loader
TMS320C2xx 是美国 TI (德州仪器)公司继 TMS320C2x 和 TMS320C5x 之后推出的一种低价格、高性能 16 位定点运算 DSP 。其 CPU 接近于 TMS320C25 ,但时钟速率提高、指令集更为丰富和优化、片内外设向 TMS320C5x 靠拢,可以将其视为 TMS320C5x 的精简版。 TMS320C2xx 的性价比很高,目前已成为高档单片机的理想替代。 TMS320C203 (以下简称 ' C203)是 TMS320C 2xx 系列中应用较为广泛的一种,本文拟就对 TMS320C203 的引导加载功能加以扩展,以支持更为广泛的应用。
1 TMS320C203器件特点
'C203的主要性能如下:
(1)指令周期为50ns、35ns或25ns;
(2)可寻址224K存储空间——64K程序、数据和I/O空间以及32K扩展数据空间;
(3)丰富的片内外设——同步串口、异步串口、锁相环、软件等待状态发生器;
(4)源码向下兼容TMS320C25,向上兼容TMS320C5x;
(5)强大的指令集——单周期乘/加、块移动、多条件转移和调用、位倒序寻址;
(6)从片外ROM中自动引导加载程序的功能。
2 引导加载(boot loader)
引导加载是指器件复位时执行一段引导程序,一般用于从端口(异步串口、 I/O 口或 HPI 主机接口)或 EPROM/FLASH 等非易失性存储器中加载程序至高速 RAM 中运行。人们所以要采用 DSP ,主要目的是利用其高速运算能力。然而,目前市场上通用的非易失性存储器速度都比较慢,少数高速器件则容量有限、价格昂贵。与此同时,高速、大容量静态 RAM 的价格已下降很多。因此,针对高速 CPU 来说,将存放在慢速非易失性存储器中的程序加载到高速静态 RAM 中运行是一种惯常用法。
'C203具有544字的片内RAM,其中的256字可配置为程序存储器。这种片内RAM配置,对于稍微复杂一点的应用来说,一般都需外扩数据和程序RAM。'C203支持上电后自动从8位EPROM/FLASH中加载程序至16位RAM中。在设计中,可采用简单的译码电路,使数据RAM 和程序RAM共享同一片物理存储器(如果是8位,则需两片),以减少印制电路板的面积。
引导加载程序一般被固化在片内ROM中,但 'C203片内并无ROM。那么,引导加载程序究竟位于何处?原来, 'C203片内有一块映射至地址FF00H处的PLA,其中存放有这段程序。利用XDS510仿真器,执行RESET功能,即可看到这段引导加载程序。
由于被加载程序存放在映射至32K全局数据空间的8位(一个16位字被拆成连续的两个8位字节)存储器中,因此被加载程序的容量限制在16K字以下。该容量对于一般应用已经足够,但一旦应用程序超出这个范围,片内原有的引导加载就不再适用。为此,我们编写了一段扩展加载程序,目的是支持0~64K字范围内的用户程序加载。上电后,片内引导加载程序首先将这段扩展程序加载到RAM中,再由这段扩展程序将最终的用户程序加载到RAM中运行。下面具体介绍相关的硬件电路和软件设计。
3 硬件设计
3.1 FLASH的选择与配置
鉴于 FLASH 存储器的可多次擦写、大容量、低价格,为此选择采用 TI 公司的 TMS28Fxxx 系列。为了能够存放最大 64K×16 位字的用户目标程序以及另外的扩展加载程序,最终决定采用 TMS28F020 (以下简称 28F020 )。为了提高目标板的应用范围并充分利用 FLASH 的剩余空间,我们还在 28F020 的剩余空间中存放了一段简单的监控程序,可通过 C203的异步串口与 PC 机进行通信,以进行简单的调试。 28F020 的配置如图 1 。
3.2 FLASH译码电路设计
涉及 28F020 的译码电路,共有 4 个引脚需重点考虑:(片选)、 A17 、 A16 和 A15 。 为了给用户程序留出最大可用的数据空间,被加载的程序被映射至32K的全局数据空间。为此,需将28F020分成八个32K页,这可由A17、A16和A15来区分。'C203共有四个通用I/O引脚,IO0~IO3,复位后这四个引脚缺省配置为输入。可将IO2、IO1上拉后直接连至28F020的A15和A16,并在扩展的加载程序中用软件来控制IO2和IO1引脚的状态,从而达到控制A15和A16引脚之目的。由于全局数据空间与局部数据空间共享数据空间的高32K地址(8000H- FFFFH),因此 'C203的A15在加载期间一直为高电平,而用户程序又位于28F020的高端(A17为高),为此考虑将 'C203的A15直接连至28F020的A17。但扩展引导加载程序位于28F020的低端(A17为低),因此可将 'C203的A15和IO0(上拉后)逻辑“与非”后连至28F020的A17。上电后,A17为低电平,片内引导加载程序从28F020的1,8000H处加载扩展的加载程序;然后,扩展加载程序执行,配置IO0、IO1、IO2为输出,且设置IO0为低电平,使得A17为高电平,传送第一块32K×8位的用户程序;再依次设置相应的IO1、IO2,实现软分页。另外,根据图1中的存储器配置,可在IO1和28F020的A16间连线上设置一接地跳线,以在复位时分别使能监控程序和扩展引导加载程序的加载。在加载程序访问全局数据空间期间,
(总线请求)信号一直有效,因此可将
用作28F020的片选信号。相关译码电路见图2。
3.3 静态RAM译码电路设计
为支持最大范围的程序和数据空间寻址,我们采用了两片 128K×8 位的 SRAM 。如果可得到 128K×16 位的 SRAM ,则只需一片,可进一步减少 PCB 板的面积。关于这部分的译码电路,重点需解决片选信号。由于程序和数据共享这两片 SRAM ,故片选逻辑可表示为 = (
·
)。但由于在访问全局数据期间,
也为有效低,为防止访问全局
数据空间时对 SRAM 的错误访问,可采用信号封锁 SRAM 的
信号。因此,片选逻辑最终可表示为
= (
本文关键字:暂无联系方式DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术