微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 小弟有个简单的问题,关于#pragma

小弟有个简单的问题,关于#pragma

时间:10-02 整理:3721RD 点击:
我看ti的例子中有这样定义:
#ifdef __cplusplus
#pragma DATA_SECTION(\"AdcRegsFile\"


#else
#pragma DATA_SECTION(AdcRegs,\"AdcRegsFile\"

;
#endif
volatile struct ADC_REGS AdcRegs;
诸如此类。

我理解为,将那些寄存器的定义类和相关的段对应起来。
但是我自己做了一个程序,我只是把那个DSP281x_GlobalVariableDefs.c通过菜单project->add file tu project。出现问题是:
>> warning: creating output section FlashRegsFile without SECTIONS specification
诸如此类的警告信息。
我想请问,这种信息到底是什么意思,怎么样才能够解决。

还有,这些段要跟相应的地址对应,但是为什么没有这样的语句呢?

#pragma DATA_SECTION
在C和C++下的参数是不一样的,所以就要判断一下
至于DATA_SECTION()这个函数的意思就是将某个数组(反正是某些地址)
放在指定的存储空间里面
比如你定义了数组b[],然后要将这个数组放在片内就
#pragma DATA_SECTION(b,\"XXXX\"

;
其中XXXX就是片内的那个标志--这个是c下面的

那么xxxx的标号是怎么定义的呢?

我知道那个xxxx的意思。
但是,ti 给的例子中没有定义什么AdcRegsFile段,我找了很久都没有看到。
那是不是这个段定义是在lib文件中的?

我就想知道rts2800_ml.lib文件中到底有些什么东西?

如果真的像楼上大哥说得那样我就安心了。但是ti给出的cmd文件是这样的:



MEMORY
{
PAGE 0 :


RAMM0 : origin = 0x000000, length = 0x000400
BEGIN : origin = 0x3F8000, length = 0x000002
PRAMH0 : origin = 0x3F8002, length = 0x000FFE
RESET : origin = 0x3FFFC0, length = 0x000002


PAGE 1 :

/* For this example, H0 is split between PAGE 0 and PAGE 1 */

RAMM1 : origin = 0x000400, length = 0x000400
DRAMH0 : origin = 0x3f9000, length = 0x001000
}

SECTIONS
{

codestart : > BEGIN, PAGE = 0
ramfuncs : > PRAMH0 PAGE = 0
.text : > PRAMH0, PAGE = 0
.cinit : > PRAMH0, PAGE = 0
.pinit : > PRAMH0, PAGE = 0
.switch : > RAMM0, PAGE = 0
.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */

.stack : > RAMM1, PAGE = 1
.ebss : > DRAMH0, PAGE = 1
.econst : > DRAMH0, PAGE = 1
.esysmem : > DRAMH0, PAGE = 1


}
大家可以看到根本没有我上面的离子所说的AdcRegsFile段。我就很纳闷了。怎么会让寄存器的c定义和这些地址联系起来呢。由哪位高人能够解出其中真妙。我感觉,中国总是被外国人糊弄。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top