电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

TMS320C203扩展引导加载的设计与实现

来源:-- 作者:-- 浏览:394

标签:

摘要: 摘 要 本文介绍了 TI 公司的 TMS320C203 芯片特点,对其引导加载功能进行了扩展实现。 关键词 TMS320C203 引导加载 boot load


摘 要 本文介绍了 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 个引脚需重点考虑:lzh8.GIF (79 bytes)(片选)、 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间连线上设置一接地跳线,以在复位时分别使能监控程序和扩展引导加载程序的加载。在加载程序访问全局数据空间期间,lzh7.GIF (83 bytes)(总线请求)信号一直有效,因此可将lzh7.GIF (83 bytes)用作28F020的片选信号。相关译码电路见图2。

3.3 静态RAM译码电路设计

   为支持最大范围的程序和数据空间寻址,我们采用了两片 128K×8 位的 SRAM 。如果可得到 128K×16 位的 SRAM ,则只需一片,可进一步减少 PCB 板的面积。关于这部分的译码电路,重点需解决片选信号。由于程序和数据共享这两片 SRAM ,故片选逻辑可表示为 lzh8.GIF (79 bytes)= ( lzh10.GIF (86 bytes) · lzh9.GIF (85 bytes) )。但由于在访问全局数据期间,lzh9.GIF (85 bytes)也为有效低,为防止访问全局lzh7.GIF (83 bytes)数据空间时对 SRAM 的错误访问,可采用信号封锁 SRAM 的lzh8.GIF (79 bytes)信号。因此,片选逻辑最终可表示为 lzh8.GIF (79 bytes)= ( lzh10.GIF (86 bytes) · lzh9.GIF (85 bytes) )+ lzh7.GIF (83 bytes) 。另外,' C203 的lzh9.GIF (85 bytes)信号在数据空间无效期间一直为高,可直接连至 628128 的 A16 。从而,在lzh9.GIF (85 bytes)为低期间,数据空间有效,并占据 128K SRAM 中的低 64K ;在lzh10.GIF (86 bytes)为低期间,程序空间有效,占据高 64K 。其中一片 628128 的译码电路见图 3 。

lzh4.GIF (1313 bytes)

图4 片内引导加载支持的目标程序格式


  4 软件设计

4.1 目标程序格式

 

lzh1.GIF (2950 bytes)

lzh2.GIF (2534 bytes)

图2   28F020的部分译码电路

lzh3.GIF (1097 bytes)

图3   628128的部分译码电路

lzh5.GIF (1657 bytes)

图 5 扩展引导加载支持的目标程序格式


  片内引导加载程序支持的目标程序应符合如图 4 所示的格式。开始的 4 个字节分别存放目的地址和目标程序长度。 6.63 以上版本的汇编工具包支持这 4 个字节的自动插入,而 6.60 及以下版本则需手工计算并编辑目标代码以符合这种格式。
   由于扩展引导加载程序需考虑支持64K以上的用户程序,故需要采用4个字节来存放最终用户目标程序长度,相应的被加载程序格式见图5。
   其中,程序长度N=(字节数/2-1);由于片内引导加载程序退出时将程序转移至0000H处,故目的地址只能为0000H。也就是说,片内引导加载程序将首先把28F020中的扩展引导程序加载至程序空间的0000H处。为此,扩展引导程序在开始运行时应首先将自身复制到程序空间的高端,从而为进一步加载最终用户程序让出空间。

4.2 程序流程图

   扩展加载程序流程图如图6所示。

lzh6.GIF (8933 bytes)

图6  扩展加载程序流程图

4.3 复制自身至高端

   扩展加载程序如何将自身复制至程序空间高端,是本软件设计要点之一。 TMS320C2xx 不支持程序空间中的指令移动,但允许程序空间和数据空间之间进行数据传送。为此,可考虑利用 TMS320C203 的片内 RAM B0 块,该块可由软件配置为数据或程序存储器。首先,将 B0 块配置为数据存储器,循环利用 TBLR 指令将程序空间 0000H 开始的扩展加载程序读至数据空间 0200H 开始的 B0 块中;移动完毕,再将 B0 块配置为程序存储器( FF00H 开始)。相关代码如下:

.text

XFER_BOOT:

;Config bLOCk B0 to data(0x200H-0x2FFH)

CLRC       CNF

MAR         *, AR1

;Load B0 start address 0x200H to     AR1

LAR          AR1, #B0_SADDR

; Load the start address of extended   

;boot loader to ACC

LACC       #boot_end

;start address-end address=length

SUB          #boot_start

SACL       TEMP     

LACC          #boot_start

RPT             TEMP

TBLR          *+

; Config block B0 to program(FF00H)

SETC          CNF

B                 BOOT

.sect           "bootext"

; the start address of extended     boot loader

.label           boot_start

BOOT:

  ...( 扩展加载程序主体 )

; the end address of extended boot loader

.label           boot_end     

4.4 存储块边界考虑

   扩展加载程序以 32K 为单位将 28F020 高半部中的用户程序分块传送到 SRAM 中。并且, RPT n (重复)指令是将后续指令重复执行 n+1 次。在此过程中,要特别注意边界条件。为此,以下两点应重点考虑:
   1. 即使长度高位字 Nh=0 ,但如果长度低位字 Nl ≥ FFFAH ,用户程序也将占据 28F020 中第三块 32K 用户程序空间的开头几个字节;
   2. 如果长度高位字 Nh> 0 ,在考虑长度低位字 Nl 时,需加上由于目的地址和长度占据的 6 个字节。

参 考 文 献

1 Texas Instruments User’s Guide of TMS320C2xx. TI, 1995

2 Texas Instruments Data Sheet of TMS320C203/209. TI, 1995

 


型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67