您的位置: OpenADSP社区论坛 -> SHARC/TigerSHARC专区 -> 新手上路 -> [求助]ADSP-21369如何将数组放在固定的内部... 
本帖共有638个阅读者
发表帖子 发表投票 回复主题
[求助]ADSP-21369如何将数组放在固定的内部存储地址上
btbt208(论坛新手)
btbt208
头衔:社区公民
帮派:无帮无派
帖数:18
金钱:224
积分:22
注册时间:2013/3/1
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]ADSP-21369如何将数组放在固定的内部存储地址上
同上,,#pragma 如何操作,一直没有成功,求教!!

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/21 11:56:43
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
如果想固定指定地址的话,可以用指针,用数组,空间都是随机分配的。
#pragma   是控制编译器的指令,告知编译器如何处理以下的代码,如采用何种优化方式,不进行优化等等。
#pragma 后面跟上命令参数,放在要优化的函数之前就可以了。如:

#pragma optimize_off
void delay()
{
……
}

这样,这个delay函数,即使你打开了工程优化,编译器也不会对其做优化。

具体命令参数你可以搜索帮助文件。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/4/21 22:36:10
btbt208(论坛新手)
btbt208
头衔:社区公民
帮派:无帮无派
帖数:18
金钱:224
积分:22
注册时间:2013/3/1
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
谢谢你的回复,可不可以采用 修改LDF 内存分配,比如要分配的 int a[3]到固定的内存地址中,就在ldf中开辟3个32位的地址空间,然后通过section的方式指定数组存在该位置,可不可以???

你说的用指针指向固定的地址,这个是可以,但是我只想这3个地址空间只供3个数组使用,,,比如该地址为DM RAM中的一个地址,我本来在ldf中开辟出3个32位地址单独给数组,,但是编译之后,并没有空出来,其他预编译 占了这几个地址空间    

如果是外部指定地址传输数据,而这几个位置之前是哪个#define宏定义,那不是糟糕了,就会被覆盖点,程序有可能会出错。。。

有没有什么方法使得这三个地址单独给这三个变量,而不受其他影响,



「该帖子被 btbt208 在 2014-04-22 09:01:56 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/22 8:49:03
btbt208(论坛新手)
btbt208
头衔:社区公民
帮派:无帮无派
帖数:18
金钱:224
积分:22
注册时间:2013/3/1
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
不知这样可否。。。。
我  shim_data{ TYPE(DM RAM) START(0x000b8000) END(0x000b8002) WIDTH(32) }//固定SHIM存储地址
  seg_dmda { TYPE(DM RAM) START(0x000b8003) END(0x000bbfff) WIDTH(32) }

shim_data
{
INPUT_SECTIONS( $OBJECTS(shim_data) $LIBRARIES(shim_data))
} > shim_data


在LDF文件中开辟3个32位地址

然后在C文件中#pragma section("shim_data")
int Channel_Shim[3];

从memory中Two Column中可以看到
         Channel_Shim
0B8000   00000000 00000000 00000000
__argv_string
0B8003   00000000


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/22 9:25:41
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159027 Call, 1 Queries, Processed in 0.031250 second(s),