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

 
 
> Обязательный префикс функции.
jcxz
сообщение Aug 3 2016, 08:47
Сообщение #1


Гуру
******

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



Интересно - есть-ли у IAR возможность вставки префикса в начало каждой функции при компиляции?
Т.е. - чтобы после входа в каждую функцию в проекте, после PUSH, он вставлял некий фиксированный код (hook). Возможно это несколько ассемблерных строк или просто вызов функции BL (естественно с предварительным сохранением исходного LR на стеке). Видел такую возможность у какого-то компилятора, не помню точно, но вроде у CCS.
Думаю добавить в проект функционал контроля стеков задач. И думаю как это удобнее всего сделать. С помощью такого хука это можно было-бы реализовать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Aug 3 2016, 10:08
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Да, вроде, ни первое ни второе не помеха хорошему танцору. Забейте стек шаблоном и проверяйте его. А как закончите проверку, сразу в спячку.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 3 2016, 10:23
Сообщение #3


Гуру
******

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



Цитата(ViKo @ Aug 3 2016, 16:08) *
Да, вроде, ни первое ни второе не помеха хорошему танцору. Забейте стек шаблоном и проверяйте его. А как закончите проверку, сразу в спячку.

Забитие шаблоном - не лучший метод. Так как стек успеет переполниться, ПО повиснет, а я об этом так и не узнаю. Не говоря уже о ненулевой вероятности совпадения записываемых данных с шаблоном.
Был бы в Cortex-M более функциональный MPU, сделал бы на нём.
А так: или префикс в начало каждой функции или периодическая проверка в ISR высокочастотного таймера. Других способов не вижу пока.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 3 2016, 10:47
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(jcxz @ Aug 3 2016, 13:23) *
Забитие шаблоном - не лучший метод. Так как стек успеет переполниться, ПО повиснет, а я об этом так и не узнаю. Не говоря уже о ненулевой вероятности совпадения записываемых данных с шаблоном.
Был бы в Cortex-M более функциональный MPU, сделал бы на нём.
А так: или префикс в начало каждой функции или периодическая проверка в ISR высокочастотного таймера. Других способов не вижу пока.


J-Link Pro в IAR показывает полную пирамиду вызовы в реальном времени в окне timeline.
И весь перечень вызовов в любой точке останова в окне Call Stack.
Если применить MQX то будет отображаться стек вызовов для каждой задачи отдельно.
Также будет виден максимальный расход стека для каждой задачи.
Также покажет автоматически все повреждения служебных структур RTOS.
Покажет и переполнение менеджера памяти и фрагментацию памяти.


Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 3 2016, 11:11
Сообщение #5


Гуру
******

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



Цитата(AlexandrY @ Aug 3 2016, 16:47) *
J-Link Pro в IAR показывает полную пирамиду вызовы в реальном времени в окне timeline.
И весь перечень вызовов в любой точке останова в окне Call Stack.

И что это даст? Мне нужно максимальное использование стека. По всем задачам.

Цитата(AlexandrY @ Aug 3 2016, 16:47) *
Если применить MQX то будет отображаться стек вызовов для каждой задачи отдельно.
Также будет виден максимальный расход стека для каждой задачи.

У меня не MQX. И как интересно MQX это вычисляет? Периодически анализируя затёртость шаблона в отдельной сервисной задаче? Плохо, так как это никак не спасает при переполнении стека.
Я прекрасно понимаю, что заполняя стек шаблоном, можно с большой долей вероятности оценить глубину использования стека. И собственно так сейчас и делаю. Но это работает, только если нет случаев переполнения стека!

Цитата(scifi @ Aug 3 2016, 16:44) *
В ассемблерном листинге заменить все BL на запрещённый опкод (уж это, наверное, можно автоматизировать). Далее обрабатывать исключение на invalid opcode.

Ну да. А ещё BLX. А ещё и все B проанализировать, так как они тоже могут являться вызовами функций (если такой вызов находится в конце другой функции).
Да и что потом с этим листингом делать? Как из него прошивку получить?
Заменять тогда уж надо не BL, а все PUSH и SUB SP,#...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- jcxz   Обязательный префикс функции.   Aug 3 2016, 08:47
- - ig_z   QUOTE (jcxz @ Aug 3 2016, 11:47) Т.е. - ч...   Aug 3 2016, 08:58
|- - demiurg_spb   Цитата(ig_z @ Aug 3 2016, 11:58) Такое то...   Aug 3 2016, 13:36
- - ViKo   Цитата(jcxz @ Aug 3 2016, 11:47) Думаю до...   Aug 3 2016, 09:08
|- - jcxz   Цитата(ViKo @ Aug 3 2016, 15:08) А в idle...   Aug 3 2016, 10:05
|- - scifi   Цитата(jcxz @ Aug 3 2016, 13:23) Других с...   Aug 3 2016, 10:44
- - k155la3   да простят меня .... переобразовать return в Retu...   Aug 3 2016, 13:16
|- - jcxz   Цитата(k155la3 @ Aug 3 2016, 19:16) да пр...   Aug 3 2016, 15:20
|- - demiurg_spb   Цитата(jcxz @ Aug 3 2016, 18:20) Прошерст...   Aug 3 2016, 16:00
|- - AlexandrY   Цитата(demiurg_spb @ Aug 3 2016, 19:00) В...   Aug 3 2016, 16:11
|- - demiurg_spb   Цитата(AlexandrY @ Aug 3 2016, 19:11) Сде...   Aug 3 2016, 17:01
|- - jcxz   Цитата(AlexandrY @ Aug 3 2016, 22:11) А и...   Aug 3 2016, 18:14
|- - AlexandrY   Цитата(jcxz @ Aug 3 2016, 21:14) Терпимо:...   Aug 3 2016, 19:46
|- - jcxz   Цитата(AlexandrY @ Aug 4 2016, 01:46) Т.е...   Aug 4 2016, 02:58
- - scifi   Вроде бы всю жизнь это называлось "пролог...   Aug 4 2016, 05:37
|- - jcxz   Цитата(scifi @ Aug 4 2016, 11:37) Вроде б...   Aug 4 2016, 06:29
|- - AlexandrY   Цитата(jcxz @ Aug 4 2016, 09:29) По этому...   Aug 4 2016, 06:59
|- - jcxz   Цитата(AlexandrY @ Aug 4 2016, 12:59) Спе...   Aug 4 2016, 08:23
|- - AlexandrY   Цитата(jcxz @ Aug 4 2016, 11:23) Не сочти...   Aug 4 2016, 08:40
|- - jcxz   Цитата(AlexandrY @ Aug 4 2016, 14:40) ...   Aug 4 2016, 10:11
|- - AlexandrY   Цитата(jcxz @ Aug 4 2016, 13:11) Не подхо...   Aug 4 2016, 12:38
|- - jcxz   Цитата(AlexandrY @ Aug 4 2016, 18:38) Есл...   Aug 5 2016, 08:28
|- - AlexandrY   Цитата(jcxz @ Aug 5 2016, 11:28) Неэффект...   Aug 5 2016, 10:52
|- - jcxz   Цитата(AlexandrY @ Aug 5 2016, 16:52) Т.е...   Aug 8 2016, 11:24
|- - AlexandrY   Цитата(jcxz @ Aug 8 2016, 14:24) Идея про...   Aug 8 2016, 12:47
||- - jcxz   Цитата(AlexandrY @ Aug 8 2016, 18:47) Это...   Aug 9 2016, 10:55
|- - scifi   Цитата(jcxz @ Aug 8 2016, 14:24) Идеально...   Aug 9 2016, 11:29
|- - jcxz   Цитата(scifi @ Aug 9 2016, 17:29) Ну здра...   Aug 9 2016, 11:42
|- - scifi   Цитата(jcxz @ Aug 9 2016, 14:42) А каким ...   Aug 9 2016, 11:49
|- - AlexandrY   Цитата(jcxz @ Aug 9 2016, 14:42) А каким ...   Aug 9 2016, 13:07
|- - jcxz   Цитата(AlexandrY @ Aug 9 2016, 19:07) Да ...   Aug 10 2016, 06:37
|- - scifi   Цитата(jcxz @ Aug 10 2016, 09:37) Каким о...   Aug 10 2016, 06:57
||- - demiurg_spb   Цитата(scifi @ Aug 10 2016, 09:57) Коллег...   Aug 10 2016, 09:07
||- - zltigo   QUOTE (scifi @ Aug 10 2016, 09:57) У меня...   Aug 10 2016, 09:41
|||- - scifi   Цитата(zltigo @ Aug 10 2016, 12:41) Ну Вы...   Aug 10 2016, 09:50
||- - jcxz   Цитата(scifi @ Aug 10 2016, 12:57) У меня...   Aug 10 2016, 10:07
||- - scifi   Цитата(jcxz @ Aug 10 2016, 13:07) Вообще-...   Aug 10 2016, 10:12
|- - AlexandrY   Цитата(jcxz @ Aug 10 2016, 09:37) Мне каж...   Aug 10 2016, 09:22
|- - jcxz   Цитата(AlexandrY @ Aug 10 2016, 15:22) Си...   Aug 10 2016, 10:34
|- - scifi   Цитата(jcxz @ Aug 10 2016, 13:34) И нет в...   Aug 10 2016, 11:10
||- - jcxz   Цитата(scifi @ Aug 10 2016, 17:10) О госп...   Aug 10 2016, 11:43
||- - AlexandrY   Цитата(jcxz @ Aug 10 2016, 14:43) Не вижу...   Aug 10 2016, 11:48
|||- - jcxz   Цитата(AlexandrY @ Aug 10 2016, 17:48) Пр...   Aug 10 2016, 11:52
|||- - AlexandrY   Цитата(jcxz @ Aug 10 2016, 14:52) Я так и...   Aug 10 2016, 12:10
|||- - jcxz   Цитата(AlexandrY @ Aug 10 2016, 18:10) Ну...   Aug 10 2016, 12:25
||- - scifi   Цитата(jcxz @ Aug 10 2016, 14:43) Хорошо....   Aug 10 2016, 20:06
||- - jcxz   Цитата(scifi @ Aug 11 2016, 02:06) Пока я...   Aug 11 2016, 01:58
||- - AlexandrY   Цитата(jcxz @ Aug 11 2016, 04:58) И причи...   Aug 11 2016, 06:30
||- - jcxz   Цитата(AlexandrY @ Aug 11 2016, 12:30) 70...   Aug 11 2016, 08:23
||- - AlexandrY   Цитата(jcxz @ Aug 11 2016, 11:23) Только ...   Aug 11 2016, 09:15
||- - jcxz   Цитата(AlexandrY @ Aug 11 2016, 15:15) Ви...   Aug 12 2016, 03:35
|- - AlexandrY   Цитата(jcxz @ Aug 10 2016, 13:34) А её пр...   Aug 10 2016, 11:42
|- - zltigo   QUOTE (jcxz @ Aug 10 2016, 13:34) char b[...   Aug 10 2016, 12:53
|- - jcxz   Цитата(zltigo @ Aug 10 2016, 18:53) Из ли...   Aug 10 2016, 13:44
- - ViKo   В Кейловской РТОС можно включить контроль переполн...   Aug 12 2016, 05:25
- - Kabdim   Может попробовать использовать MPU? Расставить за ...   Aug 12 2016, 07:54
- - AlexandrY   Цитата(Kabdim @ Aug 12 2016, 10:54) Может...   Aug 12 2016, 08:08
- - jcxz   Цитата(Kabdim @ Aug 12 2016, 13:54) Может...   Aug 12 2016, 08:48
- - ViKo   Цитата(jcxz @ Aug 12 2016, 11:48) Как это...   Aug 12 2016, 09:31
|- - jcxz   Цитата(ViKo @ Aug 12 2016, 15:31) Нет. Та...   Aug 12 2016, 09:45
|- - scifi   Цитата(jcxz @ Aug 12 2016, 12:45) хм... с...   Aug 12 2016, 09:59
|- - zltigo   QUOTE (scifi @ Aug 12 2016, 12:59) Мануал...   Aug 12 2016, 10:47
- - AlexandrY   Цитата(jcxz @ Aug 12 2016, 11:48) Ну-ну п...   Aug 12 2016, 13:36
- - jcxz   Цитата(AlexandrY @ Aug 12 2016, 19:36) А ...   Aug 13 2016, 08:16
- - zltigo   QUOTE (jcxz @ Aug 13 2016, 11:16) В динам...   Aug 13 2016, 20:09


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 13:27
Рейтинг@Mail.ru


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