#pragma DATA_SECTION与#pragma CODE_SECTION的使用

article/2025/10/7 1:52:32

(一)#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), // 程序运行的起始地址


http://chatgpt.dhexx.cn/article/YCsguEXh.shtml

相关文章

#pragma用法大全

一、#pragma 1.1 #pragma message message能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。 #pragma message("test message!")1.2 #pragma code_seg 格式如: #pragma code_seg( [ [ { push | pop}, ] [ iden…

C语言#pragma使用

1.#pragma简介 (1)#pragma用于指示编译器完成一些特定的动作 (2)#pragma所定义的很多指示字是编译器特有的 (3)#pragma在不同的编译器间是不可移植的 (4)预处理器将忽略它不认识的#…

C语言#pragma使用方法

C语言#pragma使用方法 一、总结 1、#pragma用于指示编译器完成一些特定的动作 2、#pragma所定义的很多指示字是编译器特有的(每种编译可能都不一样) (1) #pragma message 用于自定义编译信息 (2)#pragma once 用于保证头文件只被…

pragma是什么意思?(词源强迫症患者的无聊问题

------此处的pragma仅指各类编程语言中的预处理指令#pragma------ 作为一位词源强迫症患者,为了我自己(以免遗忘)和广大病友们,我将找到的一些信息源在此记录如下: ---中文信息 “#Pragma是预处理指令它的作用是设定编…

#pragma的常用方法讲解

概述 我们在写代码时,总会遇到头文件多次包含的情况,刚开始时我们使用宏定义进行控制,之后发现有#pragma once这样简单的东西,当时是很兴奋,以为#pragma就这一种用法。唉~,现在想想当时还是年轻啊&#xf…

Attribute(特性)

一向都觉得.NET的Attribute好神秘。一个方框框住的东西,置身于类、方法的头部,本身不在类或方法里面,但又会起作用,有时作用还很大,仿佛充满了魔力。简直给人一种无冕之王,幕后之黑手的感觉! 某…

attribute的用法--C#

一直以来都没理解attribute是个什么东西,也没怎么用,但是看msdn或者git上源码使用的还是蛮频繁的,今天好好整理了下,写下自己的理解和例子: attribute主要用来说明代码段的的信息,标志等;可以一…

attribute属性

attribute属性 __attribute__介绍 attribute的格式. __attribute__((attribute-list))attribute属性可以在编译的时候告诉编译器函数, 结构体的属性是什么, 进行某些编译优化, 也可以提供更加准确的错误检查. attribute是GNU特有的特性 这里主要说明attribute的4个属性, 分…

【C#】Attribute

原文链接:http://bbs.51aspx.com/showtopic-33963.html 前言 作为一个.NET开发人员,了解Attribute的重要性,用.NET大师Jeffrey Richter的话就是“任何.NET Framework 开发人员都有必要对定制attribute有一个牢靠的掌握”,所以掌…

attributes() 函数

查看更多 https://www.yuque.com/docs/share/a6cc2c96-9824-4903-acb8-284f4ebeb4fb

__attribute__ 用法

转自:http://www.cnblogs.com/astwish/p/3460618.html GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type …

View绘制体系(三)——AttributeSet与TypedArray详解

View绘制体系(三)——AttributeSet与TypedArray详解 前言 上篇博客中讲了LayoutInflater.inflate机制,其中提到了AttributeSet和XmlPullParser两个接口,这里我们来详细的了解一下Android中提供的AttributeSet接口和它与XmlPullPa…

Android自定义View(三)自定义属性AttributeSet

自定义View的时候通常需要提供一些自定义属性,自定义属性非常简单,只需要在res资源目录的values目录下创建一个attrs.xml的属性定义文件,然后在该文件中定义相应的属性,并在自定义View的构造函数中获取并设置自定义属性的默认值即…

web搜索框的制作(必应)

前两天没事突然对搜索来了兴趣,我一直在想搜索框中我们输入一些字或者字母,为何下面就会有一些自动补齐的相关搜索,比如我在搜索输入框中输入一个字母e,下面就会出现饿了么,e租宝,ems等相关的搜索链接。然后…

html怎么调搜索框宽高,百度站内搜索css:输入框宽度及样式自定义

近日网站使用了百度站内搜索api,目的是为了提高站内搜索的速度,减轻查询站内数据库带来的服务器压力。 不过在使用百度站内搜索api(生效范围:*webkaka.com/*)后发现一个问题,不同的频道模版造成排版不合适的后果,如搜索…

织梦手机站站内搜索

今天在做手机网站发现一个问题,当在手机是使用搜索功能时马上就跳转到电脑端网站去了,在手机上无法使用。在网上找半天没有找到解决的办法,后来自己想通了,下面告诉大家怎么样简单的实现这个功能!我的手机站是在m/这个…

基于 Elasticsearch 的站内搜索引擎实战

站内搜索,可以认为是针对一个网站特性内容的搜索功能。由于内容、格式可控,站内搜索比全网搜索的实现要简单很多。 简书这个网站本身自带一个搜索,但是缺乏针对个人文章的搜索,所以本文的实战内容是解决这个痛点。 代码在 https…

使用swiftype实现站内搜索

本人博客opiece.me,欢迎访问。 前言 首先,以下的内容是基于最新的swifytpe的教程,应该是2.0.0。 站内搜索顾名思义就是将范围限定在你的网站内,以此范围进行关键字搜索。 常见的站内搜索是google和baidu的,但是现在…

Compass实战 站内搜索

今天早上打算对这两天学习的Lucene以及Compass总结一下,想来想去,还是写个小项目来验证最好了。于是就有了今天的这篇文章。难易程度适合对于Compass或者Lucene刚入门的童鞋,大牛看到后望轻喷 :-) 项目预览项目需求项目目录核心处理 发帖部分查询部分总结项目预览 项目需求 …

html中的搜索

目录 hello😄 form表单🍉 form的语法🍊 from的属性🍊 提交?重置?🍊 表单按钮(html)🔍 JavaScript提交表单🔍 JavaScript重置表单&#x1f…