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

Keil 5.23 ошибка L6971E

Здравствуйте!

Платка STM32F746-discovery. Подключил GUIBuilder, создал проект по кейловскому хелпу. Получил вот такую ошибку. Никогда раньше не сталкивался с таким. Прошу подсказать что это значит и как лечится? Спасибо.

 

.\Objects\STM32F746NGH6-DISCOVERY.axf: Error: L6971E: gui_x_rte.o(.data) type RW incompatible with lcdconf.o(.ARM.__AT_0x20000000) type ZI in er RW_IRAM2.

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


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

Гугль по коду ошибки дает это:

L6971E
<objname>(<secname>) type <type> incompatible with <prevobj>(<prevname>) type <prevtype> in er <ername>.
You might see this message when placing __at sections with a scatter file. For example, the following code in main.c and the related scatter file gives this error:
int variable __attribute__((at(0x200000)));
LR1 0x0000 0x20000
{
    ER1 0x0 0x2000
    {
        *(+RO)
    }
    ER2 0x8000 0x2000
    {
        main.o
    }
    RAM 0x200000 (0x1FF00-0x2000)
    {
        *(+RW, +ZI)
    }
}
The variable has the type ZI, and the linker attempts to place it at address 0x200000. However, this address is reserved for RW sections by the scatter file. This produces the error:
Error: L6971E: stdio_streams.o(.data) type RW incompatible with main.o(.ARM.__AT_0x00200000) type ZI in er RAM.
To fix this change the address in your source code, for example:
int variable __attribute__((at(0x210000)));

 

Искал по коду ошибки тут.

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


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

Здравствуйте!

Платка STM32F746-discovery. Подключил GUIBuilder, создал проект по кейловскому хелпу. Получил вот такую ошибку. Никогда раньше не сталкивался с таким. Прошу подсказать что это значит и как лечится? Спасибо.

 

.\Objects\STM32F746NGH6-DISCOVERY.axf: Error: L6971E: gui_x_rte.o(.data) type RW incompatible with lcdconf.o(.ARM.__AT_0x20000000) type ZI in er RW_IRAM2.

 

Компилятор Keil не разрешает размещать данные в ОЗУ таким образом через __attribute,типа char lcdconf[20] __attribute(at(0x20000000))).....

видимо прихоть его разработчиков...Обхожу данный нюанс при помощи ассемблера

 

               AREA   |.ARM.__AT_0x2000000|,DATA,READWRITE
                                  EXPORT lcdconf
lcdconf     space 20

в h-файле прописываете

extern char lcdconf[20];

Изменено пользователем romas2010

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


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

Компилятор Keil не разрешает размещать данные в ОЗУ таким образом через __attribute,типа char lcdconf[20] __attribute(at(0x20000000))).....

видимо прихоть его разработчиков...Обхожу данный нюанс при помощи ассемблера

 

               AREA   |.ARM.__AT_0x2000000|,DATA,READWRITE
                                  EXPORT lcdconf
lcdconf     space 20

в h-файле прописываете

extern char lcdconf[20];

А можно подробнее. Сейсас scatter file выглядит вот так:

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00100000  {   ; load region size_region
  ER_IROM1 0x08000000 0x00100000  { ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20010000 0x00040000  { ; RW data
   .ANY (+RW +ZI)
  }
  RW_IRAM2 0x20000000 0x00010000  {
   *GUI_CM4F_L.lib (+RO +ZI +RW)
    GUI_X_RTE.o (+RO +ZI +RW)
    GUIConf.o (+RO +ZI +RW)
   .ANY (+RW +ZI)
  }
}

 

Когда подключил его в проект то получил такую ошибку: error: A1355U: A Label was found which was in no AREA.

Если можно, то подробней как обойти предыдущую или эту ситуацию? Как правильно и куда сделать ассемблерную вставку? Спасибо.

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


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

Компилятор Keil не разрешает размещать данные в ОЗУ таким образом через __attribute,типа char lcdconf[20] __attribute(at(0x20000000))).....

видимо прихоть его разработчиков...Обхожу данный нюанс при помощи ассемблера

Вот так можно (с подчеркиваниями с двух сторон):

uint16_t ExtDpyBuf[0x9600] __attribute__((at(0x64000000), zero_init));

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


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

Спасибо за ответ. Прикрепляю картинку. Думаю по ней понятно будет что за проблема. Вот в этом ключе что-то можно предпринять? Смотрел примеры но ничего не вынес толком. Там в основном либо простые примеры либо операционка. Мне нужно без операционки.

post-3446-1501523098_thumb.jpg

post-3446-1501522899_thumb.jpg

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


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

Сделайте простейший пример и меняйте scatter файл.

После этого смотрите что в map файле.

через 10 минут поймете логику описания scatter.

Код из GUI... планировалось размещать IRAM2 ?

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


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

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

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

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

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

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

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

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

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

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