首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

求助,如何在s12xep100中定义大于4k的数组

我们没有办法分配一个大于页面尺寸(RAM的页面尺寸为4K)的数据,所以link出错。

根据您的意图:想分别一个50x50的unsigned int 2维数组在RAM_F0和RAM_F1组成的尺寸为8K的RAM中。解决办法是使用全局页面寄存器GPAGE进行访问。具体作法是:

1) 首先在prm文件的SEGMENTS声明中,用一个尺寸为8K的全局RAM块(我们这里取名为RAM_F0ANDF1)代替RAM_F0和RAM_F1:
SEGMENTS
.......
//      RAM_F0        = READ_WRITE  DATA_FAR           0xF01000 TO 0xF01FFF;
//      RAM_F1        = READ_WRITE  DATA_FAR           0xF11000 TO 0xF11FFF;
        RAM_F0ANDF1 = READ_WRITE 0x0F0000'G TO 0x0F3FFF'G;
.......
END

2) 然后在prm文件的PLACEMENT声明中,声明一个新的段(我们这里取名为RAM_8KBLK),并将该段放入RAM_F0ANDF1:
PLACEMENT
.......
      RAM_8KBLK         INTO  RAM_F0ANDF1;
.......
END

3) 再在C文件中使用:
#pragma DATA_SEG  __GPAGE_SEG  RAM_8KBLK
unsigned int variable1[50][50];
#pragma DATA_SEG DEFAULT

这样,就可以了。

注意:
在prm文件中要将所有的“RAM_F0”和“RAM_F1”都注释掉,因为这两个页面已经被RAM_F0ANDF1替代了。
返回列表