реклама на сайте
подробности

 
 
> Расчёт глубины стека для IAR for AVR, Предлагаю попробовать мою программу для этого
Dmitro25
сообщение Mar 25 2010, 11:57
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 4-04-07
Пользователь №: 26 770



Здравствуйте.
Не так давно начал пользоваться компилятором IAR for AVR (раньше пользовался CodeVisionAVR). В процессе разбирательств я понял, что, в отличие от CodeVisionAVR, IAR никак не контролирует правильность установки значений глубины стека данных (CStack) и стека возврата (RStack). Мало того, самому оценить эти значения проблематично, поскольку они могут зависеть от уровня оптимизации и других параметров. А неправильно заданные значения стеков могут привести либо к полной неработоспособности программы, либо, что хуже, к неработоспособности программы при некоторых случайно совпавших условиях.

Начав разбираться, я понял, что информацию о размере стека, который используется каждой функцией, можно получить из *.LST - файла. В конце его содержится таблица "Maximum stack usage in bytes". Там для текущего модуля проекта содержится список его функций с указанием используемого данной функцией размера CStack и RStack, а также список подфункций, которые вызываются из каждой функции модуля.

Чтобы вычислить максимальный требуемый размер каждого из стеков необходимо просмотреть все пути вызовов и выбрать максимальный по каждому из стеков.
Поскольку вручную это делать не очень удобно, я написал программу, которая находит максимальные пути автоматически.
Она приложена к данному сообщению.
Для её использования необходимо в опциях проекта включить генерацию *.LST-файлов. Программу нужно скопировать в папку "List" текущей конфигурации. После запуска программа анализирует все *.LST файлы в текущей папке, ищет максимальные пути для вычисления максимальных значений для CStack и RStack. Также программа пытается детектировать процедуры прерываний и анализирует максимальные пути для них отдельно. В качестве результата выводится сумма путей для прерываний и для обычных функций. По идее эти значения могут использоваться для задания параметров CStack и RStack компилятора.

На чём мог, я её оттестировал. Замечания и предложения приветствуются.
Прикрепленные файлы
Прикрепленный файл  Stack_1_1.zip ( 43.18 килобайт ) Кол-во скачиваний: 58
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 18:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01338 секунд с 7
ELECTRONIX ©2004-2016