首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
TMS320C641X 系列DSP 引导方法研究
来源:本站整理  作者:佚名  2011-04-12 10:11:26



     摘 要:在进行 DSP 产品化设计时, Bo otL OA der 是一项关键技术。为了更好地解决数字信号 处理器 应用程序的加载问题, 以TI 公司641X 系列DSP 为例, 详细论述了DSP 的两种引导方法:ROM 引导和主机H PI 引导, 包括二次代码编写、 存储器 空间分配、引导表生成和. hex 文件的烧写。经某星载 接收机 系统实测验证, 所述方法同时适用于BIOS 和NoBIOS 两种系统, 具有可靠性高、可行性强的优点。

  0  引 言

  近年来, 以数字 信号处理器 ( DSP) 为基础的通用信号处理模块的研制受到人们的重视, 它的研制成功满足了信号处理系统实时性和通用性的要求, 被广泛应用于雷达、通信、 电子 测量和图像等领域。进行DSP 开发, 最终的目标产品要脱离 仿真器 运行, 在上电后可自行启动程序代码, 这就需要一个能在断电后保存程序的存储器。对于C641X 系列的DSP, 内部没有供用户使用的非易失性存储器, 只能将程序代码存放在外部的非易失性存储器中。因此, 通常需要在上电复位时, 将存储在外部速度较慢的存储器的程序代码搬移到片内高速RAM 中, 这个过程被称为Bo otLo ader 。因此, 在设计通用信号处理模块前, 有必要研究DSP 的多种引导方式。

  1  C641X BootLoader 方式和过程

  C641X 有三种Boot 模式:不引导、ROM 引导和主机引导。第一种方式只能用于仿真运行; 第二种方式利用片内固化的Boo tLoader 程序通过EDMA 通道, 从 EMIF 的CE1 空间拷贝1 KB 数据到地址0 处, 然后从地址0 处开始执行。这种方式只需一片非易失性存储器, 实现较为简单; 第三种方式是在DSP 内核处于复位时, 由外部主机通过主机 接口 实现程序引导。这种方法虽然复杂度较前者高, 但也被广泛应用于一些具有抗空间辐射效应的星载平台中。

  2  ROM BOOT 实现

  前面提到这种方式是在DSP 上电复位后, 由片内固化的Bo otLo ader 代码采用EDMA 方式从CE1 空间复制1 KB 代码到地址0 处。但通常用户程序都远大于1 KB, 这就需要编写二次Bo otLoader 代码, 将用户程序搬移到DSP 内部RAM 中。下面介绍具体实现过程。

  2. 1  二次引导程序编写

  由于系统最初启动时, C 语言环境还没有初始化,所以二次引导程序一般用汇编语言编写。主要完成EMIF 寄存器配置, 程序搬移, 最后跳转到C 程序入口函数。其中, 程序搬移主要有两种实现方式。一种方法无需Co py Table( 引导表) , 而采用镜像的方式将所有程序代码看成是一个连续的数据段, 二次引导时将片外存储器的内容镜像到内部RAM 即可。这种方法虽然实现简单, 但存在占用空间资源大, 引导效率低的问题。

  第二种方法是利用引导表实现。这种方法生成的引导文件是各段连续存放的, 因而引导效率较前一种方法高。关于引导表的格式和生成参见2. 4 节; 两种方法的二次装载汇编程序可参见CCS 烧写 工具 FLASH Burn 提供的示例工程, 这里不再详述。

  2. 2  存储空间分配

  程序存储空间可分为LOAD 空间和RUN 空间。

  前者保存程序代码, 物理介质一般为片外 FLASH 或E2 PROM; 后者是程序代码实际运行的空间, 物理介质一般是内部RAM。通常, 经常访问的程序和初始化变量的LOAD 空间放在FLASH 中, 而RU N 空间则放在内部RAM 中; 对于只在初始化时使用的段, 其LOAD和RU N 空间都放在FLASH 中; 而对于非初始化变量, 其LOAD 和RU N 空间都安排在内部RAM 中。当然, 如果存储空间充足时, 也可统一将LOAD 空间放在FLASH 中, 而把RUN 空间放在内部RAM 中。根据上述内容, 可以将C64X 存储区作表1 所示的安排。

表1  存储区分配。

存储区分配

  其中, VECS 用于存放中断向量表, BOOT 存放二次引导程序。

  2. 3  cmd 文件

  cmd 文件的作用是实现前两节所述的二次装载代码、中断向量表等的存储空间分配, 其主要包含 内存 的划分以及各程序代码段的load 地址和run 地址的分配。常见的cmd 文件如下所示:


}

  其中, vecto rs 是包含中断向量表的段; BootLoad是包含二次装载代码的段。

  2. 4  引导表的生成

  引导表的常用格式如下:

  段1 的大小

  段1 的目的地址

  段1 的内容

  段2 的大小

  ……

  0;

  0;

  0;

  一种方便的生成引导表的方法是, 当工程文件编译生成. out 文件后, 用CCS 自带的hex6x 可执行程序将其转化为用于程序引导的. hex 文件。这种方法需要编写一个转换命令文件作为hex6x 命令的输入参数,具体如下:


  其中len 的大小可以查看map 文件, 只要大于程序和数据的实际长度即可。

  2. 5  文件烧写

  将. hex 文件烧入ROOM 或FLASH 中的方法有以下几种 :

  ( 1) 使用通用 烧写器 写入。

  ( 2) 使用CCS 自带的烧写工具FlashBur n。

  ( 3) 用户自己编写烧写FLASH 的程序。

  其中, 使用通用烧写器需要文件格式转换且要求烧入的器件是可插拔的; 而第三种方法又需要自己编写代码, 费时费力; 常用的是第二种方法, 这种方法只需稍加改动, 就可以运用于不同的目标系统中。这是因为这种方法需要首先下载FlashBurn 提供的工程FBT C 的. out文件到目标系统中。这个工程的代码包含了系统中使用的存储器的烧写命令字, 而对于不同的存储器,该命令字是有差别的。这里要做的就是将工程的控制字宏定义改为自己目标系统 芯片 的控制字, 重新编译链接, 然后在FlashBurn 中选定新生成的FBTC. o ut 文件和待烧入的. hex 文件, 就可完成文件烧写。

  3  外部主机 HP I 引导实现

  选择这种引导方式时, 外部主机在DSP 内核处于复位状态, 但芯片其他部分已经脱离复位状态时, 通过HPI 接口访问DSP 的全部存储空间和外设寄存器。当主机完成代码装载和初始化后, 置HPIC 寄存器中的DSPNIT 位为1 使内核脱离复位状态, 然后从0 地址处开始运行, 具体流程如图1 所示。

H PI 引导流程图

图1 H PI 引导流程图。

  这种方式也需要如ROM BOOT 方式一样生成. hex 文件, 生成方法和上述大致相同, 只是由于有了外部主机的参与, 可以将程序代码一次性装载到片内RAM 中, 没有1 KB 的限制, 因而无需二次启动代码, 只需在0地址处添加跳转指令, 使得DSP内核复位后能从入口函数_c_int00 处开始执行即可。

  4 .结语

  本文详细论述了TMS320C641X 系列DSP 上电自启动的两种方法, 并通过某星载通信接收机系统的验证, 方法简单可行。该方*述时虽然是基于非DSP/BIOS 框架, 经验证也同样适用于DSP/ BIOS 系统中。

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:39,980.47000 毫秒