flyingbox
驱动牛犊
驱动牛犊
  • 注册日期2003-11-06
  • 最后登录2005-09-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1554回复:4

如何在指定地址的SDRAM中分配使用一块内存

楼主#
更多 发布于:2004-08-18 18:02
比如SDRAM的地址0x50000;

如题,请大侠帮忙!!
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-19 09:16
??
不就是指定地址,将数据写入就完了吗?
   MOV DPTR, #5000H
   MOVX @DPTR, XXX
你的地址是32位,硬件电路改一下,或用32位处理器(什么东西?).
不明白你的意思.
新手上路,请多关照.
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-19 11:04
对啊,直接指定地址不就完了?
例如你要往0x51000起始的地址里写数据,用c语言的话就定义个一个指针指向这个地址,然后往这个指针指向的地址里写数据就可以了,用汇编就像楼上所说的那样。
如果你想用malloc之类的函数做的话,就在配置memory的时候把malloc的区域定义在0x50000起始的空间里
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-19 12:37
 你用的是dsp吗?
如果是用下面的方法:
#pragma DATA_SECTION(gMp3, "ERAM")
int gMp3[200000];
我想ERAM应该是你的cmd文件中定义的一块空间,例如这个空间从0x50000开始,长度为0x10000
用上述方法定义的gMp3就会分配在这块空间中。

如果不是dsp,则另当别论,就当我没说过,呵呵
flyingbox
驱动牛犊
驱动牛犊
  • 注册日期2003-11-06
  • 最后登录2005-09-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-19 12:44
回复metalwing ,jinghuiren

我是想在一块指定地址的SDRAM内分配一个大容量的数组,用C语言该如何实现呢?
比如,数组 __align(4) char Buffer[40000];分在0x50000起始地址

这个函数该怎样改呢??
void get_small(size_t sizeofobject)
{
  return ((void *) &(Buffer[sizeofobject]));

}
游客

返回顶部