打印

如何在SRAM开辟自己的一段空间

[复制链接]
1721|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenzhi658|  楼主 | 2013-6-6 08:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uint16 *i=(uint16 *)0x20000000;
uint16 initial_i;
for(initial_i=0;initial_i<1000;initial_i++)
{
       *(i+initial_i)=0;
}
这段空间用来给上位机读写数据的,以前我是随便这么初始化下。后来发现这样不好,违反了指针,又没有一开始就保护好这段空间。我在网上看到KEIL C51里的一段代码
#pragma arm section rwdata = "TEST_DATA"
  DATA_TEST 0x20000010  0x00000500
  {   
    *(TEST_DATA)
  }
  ; embedded SRAM 20kB
  DATA 0x20000510  0x00004700
  {   
    * (+RW, +ZI)
  }从 0x20000010 开始,开辟了 0x500字节的地址,其他的变量放在之后的区域,编译器自己处理。那么我定义的数组的首地址就是0x20000010。

我想,能不能像他一样,一开始就开辟好空间,PSOC5上能做到吗?请指教?如果不可以,能否定义一个数组,指定首地址呢?请指教
沙发
taoest| | 2013-6-6 20:41 | 只看该作者
定义一个全局数组,就开辟了一个空间。地址由编译器决定。

使用特权

评论回复
板凳
chenzhi658|  楼主 | 2013-6-13 13:51 | 只看该作者
taoest 发表于 2013-6-6 20:41
定义一个全局数组,就开辟了一个空间。地址由编译器决定。

主要是那块地址要被另一块单片机寻址用啊,地址肯定要确定的

使用特权

评论回复
地板
taoest| | 2013-6-13 17:14 | 只看该作者
外部SRAM吗?还是共享的?

使用特权

评论回复
5
PSoC小子| | 2013-6-13 20:31 | 只看该作者
可以,我明天到办公室回复你

使用特权

评论回复
6
PSoC小子| | 2013-6-14 16:10 | 只看该作者
请看附件

SRAM_Reservation.zip

2.33 MB

使用特权

评论回复
7
chenzhi658|  楼主 | 2013-6-25 14:13 | 只看该作者
PSoC小子 发表于 2013-6-14 16:10
请看附件

前段时间比较忙,没上21。今天,有收获呀。我一直那段用的空间都没保护好,今天得认真看看。多:lol谢

使用特权

评论回复
8
chenzhi658|  楼主 | 2013-6-28 10:47 | 只看该作者
本帖最后由 chenzhi658 于 2013-6-28 11:33 编辑
PSoC小子 发表于 2013-6-14 16:10
请看附件


基本弄好了。就是闲置了一部分空间,我是0x1fff 8000--1fff ffff为系统RAM,0x2000 0000--0x2000 4000为用户保护自用RAM。还有一部分没用,用户RAM必须从0x2000 0000开头的,不知道接下去的一段RAM怎么还给系统RAM?

使用特权

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

本版积分规则

29

主题

247

帖子

1

粉丝