(一)#pragma DATA_SECTION 
利用CCS进行DSP编程时,如果不指定变量的存储位置,那么编译器会自动给变量分配存储位置,但是,有些时候,需要将某个变量存放到某个特定的位置,这个时候就可以利用#pragma DATA_SECTION指令了。

第一步,利用#pragma DATA_SECTION指令将变量xxxCmdBuf关联到SECTIONS“ramdata”;

#pragma DATA_SECTION(xxxCmdBuf,"ramdata");
uint16_t xxxCmdBuf[4];

第二步,修改CMD文件使得“ramdata”映射到指定的地址空间。

MEMORY
{
PAGE 0 :   /* Program Memory */
......

PAGE 1 :   /* Data Memory */
......
RAML_XXXCMD     : origin = 0x00BFF0, length = 0x000004     
}
......

SECTIONS
{
......
ramdata         : > RAML_XXXCMD,   PAGE = 1
......
}

只需完成上述简单的两步就可以将某个变量指定到特定的位置,一些博文指出采用这种方法时,需要先利用#pragma DATA_SECTION开辟一个空间,然后在定义该空间的大小,即第一步中的两行代码是有先后顺序的。

TI 的技术文档《Programming TMS320x28xx and 28xxx Peripherals in C/C++》(SPRAA85D–November 2005–Revised January 2013)对该方法也有相应的描述,如下所示。

(二)#pragma CODE_SECTION 
利用#pragma CODE_SECTION指令可以将程序从Flash搬到RAM中运行,从而提高程序执行速率,该方法需要完成以下四步。

第一步,利用#pragma CODE_SECTION指令关联程序和SECTIONS;

#pragma CODE_SECTION(mainISR,"ramfuncs");

第二步,为链接创建相关变量;

// Used for running BackGround in flash, and ISR in RAM
extern uint16_t *RamfuncsLoadStart, *RamfuncsLoadEnd, *RamfuncsRunStart;

第三步,复制时间关键代码以及Flash设置代码到RAM;

// Copy time critical code and Flash setup code to RAM
// The RamfuncsLoadStart, RamfuncsLoadEnd, and 
// RamfuncsRunStart symbols are created by the linker. // Refer to the linker files.
memCopy((uint16_t *)&RamfuncsLoadStart,(uint16_t *)&RamfuncsLoadEnd,(uint16_t *)&RamfuncsRunStart);

第四步,修改CMD文件。

SECTIONS
{
/* Allocate program areas: */
......
ramfuncs       : LOAD = FLASHD, 
                 RUN = RAML0_1,                                    
                 LOAD_START(_RamfuncsLoadStart),
                 LOAD_END(_RamfuncsLoadEnd),
                 RUN_START(_RamfuncsRunStart),
                 PAGE = 0

上面代码中, 
LOAD = FLASHD, //指定了要加载程序在Flash里的地址段 
RUN = RAML0_1, //指定了在RAM里运行程序的RAM地址段 
LOAD_START(_RamfuncsLoadStart), // 所要加载程序在Flash里的初始地址 
LOAD_END(_RamfuncsLoadEnd), // 所要加载程序在Flash里的结束地址 
RUN_START(_RamfuncsRunStart), // 程序运行的起始地址
--------------------- 
作者:Ronnie_Hu 
来源:CSDN 
原文:https://blog.csdn.net/Ronnie_Hu/article/details/74075090 
版权声明:本文为博主原创文章,转载请附上博文链接!

#pragma DATA_SECTION的使用相关推荐

  1. #pragma DATA_SECTION与#pragma CODE_SECTION的使用

    (一)#pragma DATA_SECTION 利用CCS进行DSP编程时,如果不指定变量的存储位置,那么编译器会自动给变量分配存储位置,但是,有些时候,需要将某个变量存放到某个特定的位置,这个时候就 ...

  2. c语言 变量 section,#pragma DATA_SECTION的解释

    DSP  CMD文件的编写EETOP专业博客---电子工程师自己的家园L}#gZnWr 1.       COFF格式 1>     通用目标文件格式(Common Object File Fo ...

  3. 编译指示_#pragma在DSP中的编程技巧

    转载自:https://blog.csdn.net/ranyeliang/article/details/102454462 编译指示(Pragma Directives)可能是所有的预处理指令中最复 ...

  4. dsp 中DATA_SECTION用法

    DSP中pragma 的用法 ti的帮助文档里是这么讲的: The DATA_SECTION pragma allocates space for the symbol in a section ca ...

  5. DSP中由C转成C++出现编译 badly formed pragma错误的解决.

    这是由于C++的#pragma DATA_SECTION用法同C不一致造成,以下是实例.省去了NAME. Using the DATA_SECTION Pragma a)   C source fil ...

  6. DSP学习初阶的一些笔记

    这些内容都是一些基础的.概述性的知识,是本人在学习.使用DSP开始阶段的一些总结,对于DSP内部结构:各个寄存器的配置使用.各种外设的详细配置.中断处理机制.内存管理以及各种编程.调试的经验,以后有空 ...

  7. dsp产生正弦波 c语言,TMS320C5502多波形发生器源程序 可产生正弦波,锯齿波等

    /***********************************************************************************/ /*   文件名: Tayl ...

  8. cmd c语言 文件,DSP,如何编写CMD文件!(转)

    刚找到的资料,虽然不够全,希望能帮到你... 祝愿同在努力的你,成功 CMD文件的作用: 在DSP里,程序执行过程中也有好多地方需要跳转,所以需要跳转的目标地址.如果你在编程序时知道你所要跳转的地址, ...

  9. CMD各段定义与分配方法指引

    DSP28335-CMD文件中的各个段解释 CMD文件里有两个基本的段:初始化段和非初始化段.初始化段包含代码和常数等必须在DSP上电之后有效的数.故初始化块必须保存在如片内FLASH等非易失性存储器 ...

最新文章

  1. linux启动脚本 范本,Linux—微服务启停shell脚本编写模板
  2. 移动互联网教育领域或将出现新的风口?
  3. QLineEdit响应回车时避免Button同时响应
  4. beego使用php,介绍beego、nginx性能测试实例
  5. DataGrip使用: 表的数据迁移-数据导出sql和执行sql
  6. 投资理财web后端系统_如何挑选现金类理财产品?三大对比了解一下
  7. Linux内核分析 读书笔记 (第四章)
  8. 缠论入门到精通理论到实战
  9. 抗癌中草药彩色图谱——西洋参
  10. Directshow 采集-截屏和显示
  11. ZYNQ ADAU1761裸机音频驱动调试
  12. css特效一:文字覆盖图像悬停效果
  13. ChucK初步(3)
  14. 用php语言说句情话,说给女朋友的感动情话50句
  15. 通过mtd读写flash_【转】 Linux下读写FLASH驱动——MTD设备分析
  16. 实战EM算法与图像分割
  17. Python编程之外星人入侵(一)
  18. IDEA创建新的类(Java文件)时,自动添加作者创建时间(文件注释)等信息的设置方法
  19. MATLAB 深度学习部署到树莓派问题解决方法
  20. 【Java】jar解压后重新打成jar,不依靠开发工具

热门文章

  1. xx壳通过外网远程访问本地SQLServer服务器(原创)
  2. 消防安全监测模块,筑牢工厂消防安全屏障
  3. SPA 中前端路由基本原理与实现方式
  4. 永不停歇(obama在亚利桑那州治大学毕业典礼上的演讲)
  5. 法线变换详解 和 3D 变换中法向量变换矩阵的推导
  6. 将3060独显笔记本升级为高级AI工作站
  7. 我用过的最好脑图工具——Xmind(含安装包)
  8. 对于大型公司项目平台选择j2ee的几层认识(一)
  9. Oracle动态采样分析
  10. t3服务器更换之后要修改什么,用友t3服务器地址变更