Когда я пишу на IAR-ском компиляторе для AVR-ов, то (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Беня 24 января 2003 г. 13:57
В ответ на: AT90S2313 & Stack - есть ли ограничения на количество вложенных процедур? отправлено olga 24 января 2003 г. 11:35

надо правильно задать компилятору значения CSTACK (для локальных переменных - они динамические, а не статические) и RSTACK (для адресов возвратов функций) (Options-General-System Configuration). Иначе (если задать меньше, чем надо) наступит крах системы во время выполнения.
Для этого есть одна умная опция линкера -xmos. Вот ее описание :
The data stack is used for auto variables, function parameters and
temporary storage. It is therefore important that the size of the data stack is large enough. However, a too large stack will waste valuable RAM space. To determine approximately how much data stack that is needed for an application, perform a trial link with the list file option 'o' present, e.g. -xmos. This will tell xlink to generate a stack usage tree in the map file. The values in the map file could then be used as an approximation. Please note that the given value does not include stack used by interrupts and assembler functions written by the end-user. It is therefore neccesary to add a small safety margin to the value given by xlink.

В общем с этой опцией линкер генерирует в листинге дерево вызовов функций и рассказывает, сколько надо минимум байт под стеки.
Чтобы задать эту опцию, надо :
1) Установить options/xlink/list/symbols=none
и убрать галочку с "Segment map"
2) В подключаемый *.xcl файл (см. XLINK-Include какой именно) добавить опцию -xmos
Теперь слинковать и посмотреть *.map-файл.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru