ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
13 мая
26478 Топик полностью
Беня (18.04.2005 11:59, просмотров: 1) ответил Сергей Сидоров на Можно ли в IAR 2.31c для AVR контролировать максимальный размер стеков? Что-то залезает на переменные.
Ответ: Обычно я все конфигурирую (размеры стеков и т. д.), используя диалог - ставлю галочку 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".