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

 
 
> Как определить максимальную реальную глубину CSTACK моей программы?, в отладчике
Разработчики
сообщение Oct 14 2015, 08:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 13-03-14
Из: Санкт-Петербург
Пользователь №: 80 903



Есть ли какая-нибудь встроенная особенность отладчика IAR, которая автоматически показывает максимальную глубину CSTACK, которая произошла в моей программе за время отладки встроенным отладчиком?

Сейчас приходится вручную приблизительно прикидывать, сколько скушает SCTACK, а хотелось бы поточнее.

Думаю, вопрос подойдет про разные платформы. Конкретно - AVR.

Сообщение отредактировал Разработчики - Oct 14 2015, 08:36
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Oct 14 2015, 09:43
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Можно попросить линкер построить дерево вызовов и сложить глубину основного цикла с максимальной глубиной обработчиков прерываний. Вообще без отладчика.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Разработчики
сообщение Oct 14 2015, 11:21
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 13-03-14
Из: Санкт-Петербург
Пользователь №: 80 903



Спасибо. Я посмотрел, он довольно сильно завышает.

А можно как-то из программы определить границы (начало и конец) SCTACK - где расположено?

Сообщение отредактировал Разработчики - Oct 14 2015, 11:22
Go to the top of the page
 
+Quote Post
den_po
сообщение Oct 14 2015, 12:53
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(Разработчики @ Oct 14 2015, 14:21) *
А можно как-то из программы определить границы (начало и конец) SCTACK - где расположено?

__segment_begin("CSTACK")
__segment_end("CSTACK")

и нужно не забыть заранее сделать так:
#pragma segment = "CSTACK"
Go to the top of the page
 
+Quote Post
Разработчики
сообщение Oct 14 2015, 13:55
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 13-03-14
Из: Санкт-Петербург
Пользователь №: 80 903



Цитата(den_po @ Oct 14 2015, 15:53) *
и нужно не забыть заранее сделать так:
#pragma segment = "CSTACK"


Я имел в виду системный сегмент CSTACK, а не мой.

Цитата(jcxz @ Oct 14 2015, 15:49) *
Стек в программе не определяют, а задают. Если что. Так же как любой другой массив.


Для массива можно из программы узнать, куда его запихал компилятор. А CSTACK?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 15 2015, 05:23
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Разработчики @ Oct 14 2015, 19:55) *
Для массива можно из программы узнать, куда его запихал компилятор. А CSTACK?

Я не знаю, что в Вашей программе означает символьное имя CSTACK. Это только Вы можете знать. В моих проектах это имя не используется.
У меня есть массив
static __root __no_init OS_STK stkTaskMain[NNN + STK_SIZE_ISR_NFP] @ ".bssStkMain";
задающий стек используемый стартапом и функцией main() (и, впоследствии, после старта ОС, другой задачей), есть сегмент .bssStkMain, в который линкуется этот массив и указатель на конец которого записывается в вектор сброса.
Есть множество других стеков задач ОС, каждый задан массивом типа
__no_init static OS_STK stkXXX[NNN + STK_SIZE_ISR_NFP] @ ".bssStk";
И место под любой стек задаётся статическим массивом в исходниках либо в файле конфигурации компоновщика (*.icf в IAR).
Go to the top of the page
 
+Quote Post
den_po
сообщение Oct 15 2015, 06:38
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(jcxz @ Oct 15 2015, 08:23) *
Я не знаю, что в Вашей программе означает символьное имя CSTACK. Это только Вы можете знать. В моих проектах это имя не используется.

То есть вы НИКОГДА не использовали иаровский стартап и его же конфиги линкера по умолчанию?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Разработчики   Как определить максимальную реальную глубину CSTACK моей программы?   Oct 14 2015, 08:35
- - Непомнящий Евгений   Заполняете область стека неким шаблоном (0xff, 0xD...   Oct 14 2015, 08:44
|- - Разработчики   Цитата(Непомнящий Евгений @ Oct 14 2015, 11...   Oct 14 2015, 08:48
||- - den_po   Цитата(Разработчики @ Oct 14 2015, 16:55)...   Oct 14 2015, 14:01
|||- - Разработчики   Цитата(den_po @ Oct 14 2015, 17:01) Они о...   Oct 14 2015, 14:11
||- - jcxz   Цитата(den_po @ Oct 15 2015, 12:38) То ес...   Oct 15 2015, 06:50
||- - Target   А подскажите, как получить трехбайтовую величину? ...   Nov 25 2015, 11:33
||- - SSerge   Цитата(Target @ Nov 25 2015, 18:33) А под...   Nov 25 2015, 12:51
||- - Target   Цитата(SSerge @ Nov 25 2015, 15:51) #prag...   Nov 26 2015, 08:20
||- - Ga_ry   Цитата(Target @ Nov 26 2015, 10:20) Обычн...   Nov 26 2015, 10:32
|- - jcxz   Цитата(Сергей Борщ @ Oct 14 2015, 15:43) ...   Oct 14 2015, 12:49
- - Ga_ry   Что то читал, читал эту ветку и так и не понял как...   Nov 25 2015, 19:15
|- - kolobok0   Цитата(Ga_ry @ Nov 25 2015, 22:15) ...Как...   Nov 25 2015, 20:49
|- - k155la3   Цитата(kolobok0 @ Nov 26 2015, 00:49) дел...   Nov 29 2015, 09:38
- - Ga_ry   Понятно. Вот только логи мне писать некуда, 8к поч...   Nov 25 2015, 21:09
|- - kolobok0   Цитата(Ga_ry @ Nov 26 2015, 00:09) ...изн...   Nov 26 2015, 19:37
- - Ga_ry   kolobok0, а зачем надо умножать на два?   Nov 26 2015, 21:21
|- - kolobok0   Цитата(Ga_ry @ Nov 27 2015, 00:21) kolobo...   Nov 26 2015, 23:40
- - x893   а разве DEADBEEF не помогает - или религия запреща...   Nov 26 2015, 22:04
- - Ga_ry   Цитата(x893 @ Nov 27 2015, 00:04) а разве...   Nov 27 2015, 06:23


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:19
Рейтинг@Mail.ru


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