swampman 0 20 августа, 2013 Опубликовано 20 августа, 2013 · Жалоба В проекте для 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++ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex5 0 13 сентября, 2013 Опубликовано 13 сентября, 2013 · Жалоба Интересно в чем проблема? И за чем лечить? Можно написать так 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 ..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться