云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > DSP28335—CMD文件解读(映射关系) - 图文

DSP28335—CMD文件解读(映射关系) - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/25 23:49:38

翻译自TI应用手册SPRAAU8

摘要

这个应用报告和相关的代码提供了一种把编译后的程序段从TMS320F28xxx的flash复制到ram的功能,这样可以提高代码的运行速度。这个解决方案在直接启动之后,进入c_int00 ——C语言代码运行之前实现此功能。

本应用报告中所讨论的项目内容和源代码可以从以下网址下载:http://www-s.ti.com/sc/techlit/spraau8.zip

1.引言:

在许多应用中,代码的执行速度是至关重要的。例如在医疗,监控,电机控制等等一些对时间有严格要求的终端设备。许多应用使用TMS320F28xxx DSCs是因为它的内置flash储存器。内置flash是TMS320F28xxx的一个优势,因为它使得设计者不需要外接flash来储存代码。使用内部flash缺点是访问Flash需要等待状态,这使得程序的运行变慢。在大多数应用中,这不是一个问题。其他一些应用中可能会为了获得最高的运行速度要求无等待状态。内部RAM存储器具有零等待状态,它是易失性存储器。所以,引导的初始化代码段不可以存储在此存储器中。

现在提供的解决方案,使得设计者能够在运行时把被编译器初始化的代码段从flash复制到ram里,获得最大的运行速度。这使代码执行从多达15个等待状态的提升到0等待状态。另一种解决方案是只将某些函数从Flash复制到RAM。详见:《Running an Application from Internal Flash Memory on the TMS320F28xx DSP》 (SPRA958)。这种方法应该使用在大多数使用C2000? DSC的应用上,其他要求严格的时序和连续的零等待状态的应用程序应采用这里提出的解决方案。

编写汇编程序来完成代码从Flash到RAM的复制。该汇编代码在复位向量后调用c_int00之前执行。这保证了在c_int00调用mian()之前完成复制。

有一些工程比较小,可以把所有初始化了的段都复制到ram。然而,其他一些工程的初始化了的段比所有的内部ram还要大。这些工程可能不可以把所有的初始化了的段都复制到ram,但是用这种方法复制其中一部分段。

2.编译的代码段:

编译器生成的包含代码和数据的多个部分,称为段。这下段被分为两个不同的组:初始化了的和没被初始化的,初始化的部分是由所有的代码,常量和初始化表组成的。下表列出了由编译器产生的初始化段。

初始化段 段名 内容 代码 不超过64K长度 数据中的任何地方 代码 代码或者数据 代码 限制 .cinit 显式初始化的全局变量和静态变量表 .const 显式初始化的全局和静态的const变量和字符串常量 .econst 长调用的常量 .pinit 全局对象的构造函数表 .switch switch语句产生的表 .text 可执行代码和常数

没初始化的段是由未初始化的变量,堆栈和malloc产生的内存。下表列出了由编译器产生的没初始化段。

没初始化段 段名 .bss .ebss .stack .sysmem .esysmem

内容 全局和静态变量 长调用的全局或静态变量 堆栈空间 malloc函数产生的内存 far_malloc函数产生的内存 限制 不超过64K长度 数据中的任何地方 不超过64K长度 不超过64K长度 数据中的任何地方

一旦编译器生成的这些段,连接器会从各个源文件中取出这些段,并结合它们来创建一个输出文件。连接器命令文件(.cmd)就是用来告诉连接器去哪里找这些段的。初始化段必须分配到非易失性存储器,如flash/ ROM,当电源被撤除时,程序不会消失。未初始化的段可以被分配到RAM中,因为它们是在代码执行期间被初始化的。

关于更多编译段和连接的信息,请参见:《TMS320C28x Assembly Language

Tools User’s Guide 》(SPRU513) 和《 the TMS320C28x Optimizing C/C++ Compiler User’s Guide》(SPRU514)。

德州仪器(TI)提供了多个例子显示如何使用链接器命令文件分配编译段。其中一个就是《Running an Application from Internal Flash Memory on the TMS320F28xx DSP 》(SPRA958)。此应用文档提供的例子,演示了使用基于RAM和Flash的项目的链接器命令文件。

3.软件:

本应用文档相关的代码文件,包括修改后的版本的CodeStartBranch.asm文件和非DSP/BIOS?项目用的文件DSP28xxx_SectionCopy_nonBIOS.asm,由the C/C++ Header Files and Peripheral Examples提供。每个TMS320F28xxx处理器都提供了现成的连接器命令文件。提供的示例项目演示了如何使用这些文件。本应用文档以TMS320F2808为例。

该软件独立存放于F28xxx_Flash_to_Ram文件夹中。代码使用的来自the C/C++ Header Files and Peripheral Examples的几个文件,经过了Code Composer Studio? 3.3和F28xxx代码生成工具5.0.0B3版本的测试。

3.描述:

一般的程序流程是这样子的:code_start->wd_disable->copy_sections->c_int00->mian()

。这个软件流程比标准的软件流程仅仅多了调用复制代码段函数。标准的软件流程:code_start->wd_disable->c_int00->mian()。

程序开始和关闭看门狗:

code_start 和wd_disable 的运行代码由DSP28xxx_CodeStartBranch.asm文件提供。上电后,code_start正常执行,因为它被分配给Flash的引导地址的0x3F7FF6。详见:《Running an Application from Internal Flash Memory on the TMS320F28xx DSP 》(SPRA958)

1. WD_DISABLE .set 1 ;set to 1 to disable WD, else set to 0 2. .ref copy_sections 3. .global code_start

4. *********************************************************************** 5. * Function: codestart section 6. *

7. * Description: Branch to code starting point

8. *********************************************************************** 9. .sect \ 10.

11. code_start:

12. .if WD_DISABLE == 1

13. LB wd_disable ;Branch to watchdog disable code 14. .else

15. LB copy_sections ;Branch to copy_sections 16. .endif

1. WD_DISABLE .set 1 ;set to 1 to disable WD, else set to 0 2. .ref copy_sections 3. .global code_start

4. *********************************************************************** 5. * Function: codestart section 6. *

7. * Description: Branch to code starting point

8. *********************************************************************** 9. .sect \ 10.

11. code_start:

12. .if WD_DISABLE == 1

13. LB wd_disable ;Branch to watchdog disable code 14. .else

15. LB copy_sections ;Branch to copy_sections

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

翻译自TI应用手册SPRAAU8 摘要 这个应用报告和相关的代码提供了一种把编译后的程序段从TMS320F28xxx的flash复制到ram的功能,这样可以提高代码的运行速度。这个解决方案在直接启动之后,进入c_int00 ——C语言代码运行之前实现此功能。 本应用报告中所讨论的项目内容和源代码可以从以下网址下载:http://www-s.ti.com/sc/techlit/spraau8.zip 1.引言: 在许多应用中,代码的执行速度是至关重要的。例如在医疗,监控,电机控制等等一些对时间有严格要求的终端设备。许多应用使用TMS320F28xxx DSCs是因为它的内置flash储存器。内置flash是TMS320F28xxx的一个优势,因为它使得设计者不需要外接fl

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com