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

Перенос проекта из 5.5 в 6.5

В проекте для at91sam7x на версии IAR 5.5 расположение стеков в RAM задавалось вручную в ICF-файле:

place in RAM_region   { readwrite,
                        block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
                        block UND_STACK, block ABT_STACK, block HEAP, block SYS_STACK };

соответственно в MAP-файле я видел:

"P4", part 1 of 3:                         0x1510
  CSTACK                      0x00200000   0x1000  <Block>
    CSTACK           uninit   0x00200000   0x1000  <Block tail>
  .iar.dynexit                0x00201000    0x210  <Block>
    .iar.dynexit     uninit   0x00201000      0xc  cppinit.o [3]
    .iar.dynexit     uninit   0x0020100c    0x204  <Block tail>
  SVC_STACK                   0x00201210    0x200  <Block>
    SVC_STACK        uninit   0x00201210    0x200  <Block tail>
  IRQ_STACK                   0x00201410    0x100  <Block>
    IRQ_STACK        uninit   0x00201410    0x100  <Block tail>
  FIQ_STACK                   0x00201510      0x0  <Block>
  UND_STACK                   0x00201510      0x0  <Block>
  ABT_STACK                   0x00201510      0x0  <Block>
  HEAP                        0x00201510      0x0  <Block>
                            - 0x00201510   0x1510

 

После переноса проекта на версию IAR 6.5 линкер правильно читает все что касается ROM, но все стеки пихает в конец

"P4", part 3 of 3:                          0x1300
  CSTACK                       0x002138b0   0x1000  <Block>
    CSTACK            uninit   0x002138b0   0x1000  <Block tail>
  SVC_STACK                    0x002148b0    0x200  <Block>
    SVC_STACK         uninit   0x002148b0    0x200  <Block tail>
  IRQ_STACK                    0x00214ab0    0x100  <Block>
    IRQ_STACK         uninit   0x00214ab0    0x100  <Block tail>
  FIQ_STACK                    0x00214bb0      0x0  <Block>
  UND_STACK                    0x00214bb0      0x0  <Block>
  ABT_STACK                    0x00214bb0      0x0  <Block>
  HEAP                         0x00214bb0      0x0  <Block>
                             - 0x00214bb0   0x1300

Как это лечить?

 

P.S. в проекте некоторые файлы компилируются C++

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


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

Интересно в чем проблема? И за чем лечить?

Можно написать так

place at start of RAM_region { block CSTACK, block HEAP};

place in RAM_region { readwrite};

для одного блока можно

place in RAM_region { readwrite, first block CSTACK, block HEAP};

можно по абсолютному адресу

place at address Mem:0x0 .....

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


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

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

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

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

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

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

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

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

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

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