Перейти к содержанию
    

EWARM Error[Be006]

Любезное сообщество, вожусь с SAM3S1A в среде EWARM 6.40…

 

RO cекция в .icf файле объявлена:

define region ROM_region     = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
place at end of ROM_region {ro data section BITMAPS};

Байтовые массивы (битмапы для ЖКМ) в секцию BITMAPS размещаются:

const uint8_t BitMap_Digit_0[] @"BITMAPS" = {0x00, 0xFE, 0xFF, 0x01, 0x01, 0xFF, 0xFE, 0x00,//    0
                             0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00};

Ну и понятно, такие же массивы от BitMap_Digit_1 до BitMap_Blank.

 

Структуры, описывающие битмапы:

const struct bitmap_t _Digit_0 @"BITMAPS" = {10, 8, (uint8_t *)&BitMap_Digit_0};

в эту же секцию тоже размещаются, нет вопросов. Соответственно такие же структуры от _Digit_1 до _Blank.

 

А вот массив с указателями на битмапы (точнее с указателями на структуры, описывающие битмапы):

const struct bitmap_t *Nmbr10x8[] @"BITMAPS" = {&_Digit_0, &_Digit_1, &_Digit_2, &_Digit_3, &_Digit_4,
                       &_Digit_5, &_Digit_6, &_Digit_7, &_Digit_8, &_Digit_9,
                       &_DcmlPnt, &_MnsSign, &_Blank};

вызывает ошибку Error[be006]: conflicting attributes for segment/section "BITMAPS".

 

В листинге это выглядит так:

     41          #include    "Bitmaps_SAM3S1.h"

  const struct bitmap_t *Nmbr10x8[] @"BITMAPS" = {&_Digit_0, &_Digit_1, &_Digit_2, &_Digit_3, &_Digit_4,
                        ^
"D:\ARM\Bitmaps_SAM3S1.h",82  Error[Be006]: conflicting attributes for segment/section "BITMAPS"

- "не нравится" массив из указателей.

Какой атрибут с каким конфликтует, я мозг уже вывихнул. "IAR C/C++ Development Guide. Compiling and Linking" - да, читал и читаю ;)

 

Если из определения "const struct bitmap_t *Nmbr10x8[]" удалить @"BITMAPS", то массив размещается в ОЗУ, мне же надобно во flash.

На ассме вообще не вопрос, но нельзя (не поймут)…

 

Т.е. компилятор/линкер не могут определить и разместить во flash массив с указателями? Есть "лекарство" от "недуга"?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте

const struct bitmap_t * const Nmbr10x8[]

т.е. указать компилятору, что не только результат обращения по указателю - константа, но и сам указатель - тоже константа

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...