当前位置:首页 > 嵌入式 > 嵌入式硬件

摘 要:在进行DSP 产品化设计时, Bo otLOAder 是一项关键技术。为了更好地解决数字信号处理器应用程序的加载问题, 以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 烧写工具FLASHBurn 提供的示例工程, 这里不再详述。

  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 外部主机HPI 引导实现

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

图1 H PI 引导流程图。

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

  4 .结语

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭