Как я могу указать место в памяти для константного массива (C30 Compiler) - PullRequest
1 голос
/ 17 февраля 2012

Я пытаюсь разместить массив в верхнем месте во вспомогательной памяти на процессоре PIC24EP256G810, используя компилятор Microchip C30. Массив определяется следующим образом:

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

Приведенный выше код поместит данные в область вспомогательной памяти, но я не уверен, как заставить компилятор разместить их в самом верхнем месте. Просто сейчас он помещает массив в место, занимаемое загрузчиком.

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 мая 2012

Вам не нужно изменять скрипт компоновщика.Вам просто нужно добавить ключевое слово address () в свой модификатор attribute , в дополнение к space () и align (), и жестко закодировать нужный адрес.Это описано в разделе 2.3.1 моей версии Руководства пользователя C30, но в любом случае вы можете просто выполнить поиск по « атрибуту », где они все задокументированы вместе.(Извините, форма ест мои подчеркивания:)

0 голосов
/ 20 февраля 2012

IIRC вы должны адаптировать файл компоновщика (p24EP256GU810.gld в c30 / support / pic24e / gld)

например. сегмент длины программы:

программа (xr): ORIGIN = 0x200, LENGTH = 0x2A9FE

и уменьшите соответственно.

...