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

- UID
- 518047
- 性别
- 男
|
我们没有办法分配一个大于页面尺寸(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替代了。 |
|
|
|
|
|