В компиляторах есть возможность оценить необходимое (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Беня 20 мая 2003 г. 11:11
В ответ на: При работе с прерываниями на Atmega какое рекомендуемое значение для RSTACK, CSTACK и HEAP? отправлено SergMel 20 мая 2003 г. 06:59

значение для CSTACK

Обычно я все конфигурирую (размеры стеков и т. д.), используя диалог - ставлю галочку Configure system using dialogs (not in .XCL file). А вот, оказывается, если использовать XCL-файл, например, LNK3S.XCL, то там есть одна опция, которая по умолчанию закомментирована.
/*
* Data stack
*
* 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.
*/

Вот только, чтобы эту опцию задействовать, приходится использовать XCL-файл - тогда линкер делает выходной файл с информацией о дереве вызова всех функций и о размере локальных переменных.

Можно не использовать XCL-файл, а для подсчета стека опции линкеру задавать :
писать нужные опции не в LNK3S.XCL, а в src\template\cfg3s.xcl, а в менюшке, чтобы не было ошибки из-за двойного объявления, ставить options/xlink/list/symbols=none
И еще убрать "Segment map".

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

Ответы



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

E-mail: info@telesys.ru