如何为常量数组指定内存位置(C30编译器)

时间:2012-02-16 22:26:37

标签: arrays memory-management pic microchip

我正在尝试使用Microchip C30编译器将阵列放置在PIC24EP256G810处理器的辅助存储器中的最高位置。该数组定义如下:

const int __attribute__((space(auxflash), aligned(2048))) AuxFlashRows[8][128]
{
    {
        0x0000,etc,etc
    },
    {
        0x0000,etc,etc
    },
    etc
};

上面的代码会将数据放在辅助存储空间中,但我不确定如何让编译器将它放在最高位置。刚才它将数组放在引导加载程序占用的位置。

由于

2 个答案:

答案 0 :(得分:0)

IIRC你必须调整链接器文件(c30 / support / pic24e / gld中的p24EP256GU810.gld)

e.g。程序长度段:

program(xr):ORIGIN = 0x200,LENGTH = 0x2A9FE

并相应减少。

答案 1 :(得分:0)

您不需要修改链接描述文件。除了space()和aligned()之外,您还必须在属性修饰符中添加address()关键字,并对您想要的地址进行硬编码。它在我的C30用户指南版本的2.3.1节中有记录,但无论哪种方式,您都可以搜索“属性”,它们都记录在一起。 (对不起,表格正在吃掉我的下划线:)。