#pragma DATA_SECTION的使用
(一)#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的使用相关推荐
- #pragma DATA_SECTION与#pragma CODE_SECTION的使用
(一)#pragma DATA_SECTION 利用CCS进行DSP编程时,如果不指定变量的存储位置,那么编译器会自动给变量分配存储位置,但是,有些时候,需要将某个变量存放到某个特定的位置,这个时候就 ...
- c语言 变量 section,#pragma DATA_SECTION的解释
DSP CMD文件的编写EETOP专业博客---电子工程师自己的家园L}#gZnWr 1. COFF格式 1> 通用目标文件格式(Common Object File Fo ...
- 编译指示_#pragma在DSP中的编程技巧
转载自:https://blog.csdn.net/ranyeliang/article/details/102454462 编译指示(Pragma Directives)可能是所有的预处理指令中最复 ...
- dsp 中DATA_SECTION用法
DSP中pragma 的用法 ti的帮助文档里是这么讲的: The DATA_SECTION pragma allocates space for the symbol in a section ca ...
- DSP中由C转成C++出现编译 badly formed pragma错误的解决.
这是由于C++的#pragma DATA_SECTION用法同C不一致造成,以下是实例.省去了NAME. Using the DATA_SECTION Pragma a) C source fil ...
- DSP学习初阶的一些笔记
这些内容都是一些基础的.概述性的知识,是本人在学习.使用DSP开始阶段的一些总结,对于DSP内部结构:各个寄存器的配置使用.各种外设的详细配置.中断处理机制.内存管理以及各种编程.调试的经验,以后有空 ...
- dsp产生正弦波 c语言,TMS320C5502多波形发生器源程序 可产生正弦波,锯齿波等
/***********************************************************************************/ /* 文件名: Tayl ...
- cmd c语言 文件,DSP,如何编写CMD文件!(转)
刚找到的资料,虽然不够全,希望能帮到你... 祝愿同在努力的你,成功 CMD文件的作用: 在DSP里,程序执行过程中也有好多地方需要跳转,所以需要跳转的目标地址.如果你在编程序时知道你所要跳转的地址, ...
- CMD各段定义与分配方法指引
DSP28335-CMD文件中的各个段解释 CMD文件里有两个基本的段:初始化段和非初始化段.初始化段包含代码和常数等必须在DSP上电之后有效的数.故初始化块必须保存在如片内FLASH等非易失性存储器 ...
最新文章
- linux启动脚本 范本,Linux—微服务启停shell脚本编写模板
- 移动互联网教育领域或将出现新的风口?
- QLineEdit响应回车时避免Button同时响应
- beego使用php,介绍beego、nginx性能测试实例
- DataGrip使用: 表的数据迁移-数据导出sql和执行sql
- 投资理财web后端系统_如何挑选现金类理财产品?三大对比了解一下
- Linux内核分析 读书笔记 (第四章)
- 缠论入门到精通理论到实战
- 抗癌中草药彩色图谱——西洋参
- Directshow 采集-截屏和显示
- ZYNQ ADAU1761裸机音频驱动调试
- css特效一:文字覆盖图像悬停效果
- ChucK初步(3)
- 用php语言说句情话,说给女朋友的感动情话50句
- 通过mtd读写flash_【转】 Linux下读写FLASH驱动——MTD设备分析
- 实战EM算法与图像分割
- Python编程之外星人入侵(一)
- IDEA创建新的类(Java文件)时,自动添加作者创建时间(文件注释)等信息的设置方法
- MATLAB 深度学习部署到树莓派问题解决方法
- 【Java】jar解压后重新打成jar,不依靠开发工具