Беня (24.02.2006 14:36, просмотров: 1) ответил Bill на Ну, во-первых, можно посмотреть в листинге модуля. Компилятор выдает информацию об этом. А самое главное,
Ответ: Обычно я все конфигурирую (размеры стеков и т. д.), используя диалог - ставлю галочку 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-файл. Вот для компилятора есть пункт Additional Compiler Options. А для линкера я не нашел такого пункта, где бы я мог задать дополнительные опции.
Для подсчета стека опции линкеру задавать :
слегка через задницу, но:
пишешь нужные опции не в LNK3S.XCL, а в src\template\cfg3s.xcl, а в менюшке, чтобы не было ошибки из-за двойного объявления, ставишь options/xlink/list/symbols=none
И еще убрать "Segment map".
Хотя у меня ИАР АВР 2.28a, может в новом можно и дополнительные опции линкеру задавать.