打印

DSP中PRAGMA的用法

[复制链接]
929|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
blong75|  楼主 | 2015-10-27 22:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

ti的帮助文档里是这么讲的:

The DATA_SECTION pragma allocates space for the symbol in a section called section name.
The syntax for the pragma in C is:

#pragma DATA_SECTION (symbol, "section name");

我个人的理解是:

定义一个数据段:
          段名为:    "section name"
          段的内容在: symbol 里
在CCS编程中,如果我们不指定变量的存放位置,编译器会自动的给变量分配一个位置,但是如果有的时候需要把变量放在一个特定的空间内,我们应该如何操作呢,CCS提供了如下的两个指令
#pragma CODE_SECTION
#pragma DATA_SECTION
其中data_section是针对数据空间的,code_section是针对程序空间的,具体的使用办法是
#pragma DATA_SECTION(bufferB, ”my_sect”)
char bufferB[512];
在.cmd文件中建立对应的section就可以使用了。

注意:在使用#pragma DATA_SECTION时,应该先开辟一个空间,即:#pragma DATA_SECTION(bufferB, ”my_sect”),然后再定义该空间的大小:char bufferB[512];


#pragma,是一个编译控制指令,可以在编译时动态地调整编译选项,这种指令在不同的编译系统中是不同的.

#pragma DATA_ALIGN( symbol,constant)

指令的作用是:排列排列symbol到constant指点的列边界上.


#pragma DATA_ALIGN( rxdata_stream,   128)
就是让rxdata_stream地址的末尾7位是0(二进制地址),就是128字节对齐。
对齐的目的,一般是位了CACHE读写外存。
如果一个CACHE的line是128字节。这样,如果数据128字节对齐,那么取一个128字节的数据,只使用一个CACHE行就够了。

char efd;
#prgma DATA_ALIGN(efd, 8)
编译时一定会把efd变量的地址安排在8字节对齐的位置上,也即efd地址的低3位一定为0。


相关帖子

沙发
blong75|  楼主 | 2015-10-27 22:55 | 只看该作者
自定义段(C语言)
#pragma DATA_SECTION(函数名或全局变量名,"用户自定义在数据空间的段名");
#pragma CODE_SECTION(函数名或全局变量名,"用户自定义在程序空间的段名");
不能在函数体内声明。必须在定义和使用前声明
#pragma可以阻止对未调用的函数的优化
#pragma DATA_ALIGN( symbol,constant)

指令的作用是:排列排列symbol到constant指点的列边界上.
例如

#pragma DATA_ALIGN( rxdata_stream,   128)
就是让rxdata_stream地址的末尾7位是0(二进制地址),就是128字节对齐。
对齐的目的,一般是位了CACHE读写外存。
如果一个CACHE的line是128字节。这样,如果数据128字节对齐,那么取一个128字节的数据,只使用一个CACHE行就够了。
#prgma DATA_ALIGN(efd, 8)
编译时一定会把efd变量的地址安排在8字节对齐的位置上,也即efd地址的低3位一定为0。

使用特权

评论回复
板凳
裁定心生| | 2015-10-31 17:32 | 只看该作者
PRAGMA,我还看成是PROGRAM,程序编程呢

使用特权

评论回复
地板
尤彼卡| | 2015-10-31 20:28 | 只看该作者
#pragma,是一个编译控制指令,可以在编译时动态地调整编译选项

使用特权

评论回复
5
捉虫天师| | 2015-10-31 20:39 | 只看该作者
如果一个CACHE的line是128字节。这样,如果数据128字节对齐,那么取一个128字节的数据,只使用一个CACHE行就够了。

使用特权

评论回复
6
Roderman_z| | 2015-10-31 20:40 | 只看该作者
#pragma DATA_ALIGN( rxdata_stream,   128)
就是让rxdata_stream地址的末尾7位是0(二进制地址),就是128字节对齐。

使用特权

评论回复
7
可可球| | 2015-10-31 21:00 | 只看该作者
#pragma可以阻止对未调用的函数的优化

使用特权

评论回复
8
DreamofOven| | 2015-10-31 21:35 | 只看该作者
#pragma,是一个编译控制指令,可以在编译时动态地调整编译选项,这种指令在不同的编译系统中是不同的.

使用特权

评论回复
9
wangdezhi| | 2015-10-31 21:43 | 只看该作者
这个是定义词

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

83

帖子

1

粉丝