|
IAR CSTACK RSTACK - измерение глубины стека |
|
|
|
Apr 17 2016, 11:59
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 19-12-04
Из: Москва
Пользователь №: 1 560

|
Привет! По идеям документа с сайта IAR https://www.iar.com/support/resources/artic...em-reliability/хочу напрямую смотреть использование стека в процессе выполнения программы Идея в том, чтобы через таймерное прерывание периодически замерять указатель на автоматическую переменную, и мониторить сколько стека в использовании. С data stack (CSTACK) все вроде должно получиться без проблем, а вот как получить указатель на текущий RSTACK? C data stack идея такова - Код char *highStack, *lowStack; int main(int argc, char *argv[]) { highStack = (char *)&argc; // ... printf("Current stack usage: %d\n", highStack - lowStack); }
void sampling_timer_interrupt_handler(void) { char* currentStack; int a; currentStack = (char *)&a; if (currentStack < lowStack) lowStack = currentStack; }
|
|
|
|
|
 |
Ответов
|
Apr 20 2016, 08:57
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Посмотрел с утра - код работать не будет. Не учел, что переменные ИАР располагает в сегментах от конца к началу, и что адресация флеш-памяти вдвое больше. Этот код прошел в отладчике: CODE char __low_level_init() { register char* point=(char*)SP; register char* pointtest=(char*)__segment_begin("RSTACK");
while(1) { *point='R'; point--; if(point<pointtest) break; } return 1; }
Для частных случаев работоспособен. P.S. оказалось, что первоначальный вариант тоже работал, сбило то , под сегмент стека ИАР выделил "страницу" памяти и сам стек занимал в нем лишь половину. В том примере нужно лишь добавть инициализацию a[0]='R';
Сообщение отредактировал aiwa - Apr 20 2016, 10:09
|
|
|
|
|
Apr 20 2016, 11:33
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 19-12-04
Из: Москва
Пользователь №: 1 560

|
Спасибо, круто! А вот интересно register char* point=(char*)SP; SP указывает на ПУСТУЮ ячейку или на ячейку с предыдущими данными? Иными словами при PUSH сначала копируется данные, а потом инкрементируется SP или наоборот?
Сообщение отредактировал IgorKossak - Apr 20 2016, 17:21
Причина редактирования: бездумное цитирование
|
|
|
|
Сообщений в этой теме
Mty IAR CSTACK RSTACK - измерение глубины стека Apr 17 2016, 11:59 zltigo QUOTE (Mty @ Apr 17 2016, 14:59) Идея в т... Apr 17 2016, 16:02 IgorKossak Цитата(zltigo @ Apr 17 2016, 19:02) Для к... Apr 17 2016, 16:56 Mty Цитата(zltigo @ Apr 17 2016, 19:02) Для к... Apr 18 2016, 11:05  zltigo QUOTE (Mty @ Apr 18 2016, 14:05) А есть п... Apr 18 2016, 11:21 kolobok0 Цитата(Mty @ Apr 17 2016, 14:59) ...Идея ... Apr 17 2016, 17:09 aiwa Цитата(Mty @ Apr 17 2016, 14:59) С data s... Apr 18 2016, 12:33 Mty Друзья, если у кого то есть рабочий код на С по за... Apr 18 2016, 12:37 zltigo QUOTE (Mty @ Apr 18 2016, 15:37) Пока наш... Apr 18 2016, 14:09 AleksBak А почему у них там (у IAR) стек расположен не ввер... Apr 18 2016, 17:56 zltigo QUOTE (AleksBak @ Apr 18 2016, 20:56) А п... Apr 18 2016, 17:59  AleksBak Цитата(zltigo @ Apr 18 2016, 21:59) А пот... Apr 18 2016, 18:17 zombi Цитата(Mty @ Apr 17 2016, 14:59) хочу нап... Apr 18 2016, 23:37 Mty Цитата(aiwa @ Apr 18 2016, 15:33) Так про... Apr 19 2016, 07:22 zltigo QUOTE (Mty @ Apr 19 2016, 10:22) CODEretu... Apr 19 2016, 07:33 aiwa Осторожнее надо быть с RSTACKом, потому что такой ... Apr 19 2016, 08:30 Mty Цитата(zltigo @ Apr 19 2016, 10:33) Смотр... Apr 19 2016, 07:56 zltigo QUOTE (Mty @ Apr 19 2016, 10:56) Намекает... Apr 19 2016, 08:04 aiwa ЦитатаНамекаете на то что при возврате 1 сегмент и... Apr 19 2016, 11:17 zltigo QUOTE (aiwa @ Apr 19 2016, 14:17) Т.е. ес... Apr 19 2016, 11:22 aiwa Да, наоборот. Подправлю.
Кстати, нетрадиционное р... Apr 19 2016, 11:44 zltigo QUOTE (aiwa @ Apr 19 2016, 14:44) Кстати,... Apr 19 2016, 12:01  aiwa Цитата(zltigo @ Apr 19 2016, 15:01) Так и... Apr 19 2016, 13:29 Mty Насколько я понимаю он при инициализации сегментов... Apr 19 2016, 12:32 zltigo QUOTE (Mty @ Apr 19 2016, 15:32) Наскольк... Apr 19 2016, 13:48 aiwa Заинтересовало, по быстрому написал первоначальный... Apr 20 2016, 00:12 aiwa Цитата(Mty @ Apr 20 2016, 14:33) register... Apr 20 2016, 13:27
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|