您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术TMS320C203扩展引导加载的设计与实现 正文
TMS320C203扩展引导加载的设计与实现

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

点击数:7156 次   录入时间:03-04 11:58:09   整理:http://www.55dianzi.com   DSP/FPGA技术
· 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

上一页  [1] [2] [3]  下一页


本文关键字:暂无联系方式DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术