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

 
 
> Обязательный префикс функции.
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
Ответов
Kabdim
сообщение Aug 12 2016, 07:54
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Может попробовать использовать MPU? Расставить за концами стеков области с запретом на доступ...
Хотя кмк с такими запросами пора переходить на чип толще, с защитой адресного пространства задач. Ну или программистов строить - устроить кодревью репозитория с прошивкой.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 12 2016, 08:48
Сообщение #3


Гуру
******

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



Цитата(Kabdim @ Aug 12 2016, 13:54) *
Может попробовать использовать MPU? Расставить за концами стеков области с запретом на доступ...

Я уже писал про такой вариант. Во-первых: нужно довольно много доп. памяти, а её в обрез; во-вторых: задач около 10 (даже больше), а в MPU регионов всего 8 и большую часть из них я уже использую.

Цитата(Kabdim @ Aug 12 2016, 13:54) *
Хотя кмк с такими запросами пора переходить на чип толще, с защитой адресного пространства задач. Ну или программистов строить - устроить кодревью репозитория с прошивкой.

Это точно! Но не получается у меня так, проще уволиться самому... sm.gif
На следующей работе обязательно для такой задачи буду требовать чип с MMU.

Цитата(ViKo @ Aug 12 2016, 11:25) *
В Кейловской РТОС можно включить контроль переполнения стека, одной галочкой в настройке. Если случится, вылетаем в os_error, и там можно определить, из какой задачи прилетели.

Как это реализовано? Скорей всего - периодический контроль затёртости шаблона в стеке. Именно так сделано в uCOS. Это малоэффективно. Я уже писал почему.

Цитата(AlexandrY @ Aug 12 2016, 14:08) *
TC похоже этим еще не интересовался даже.

Ну-ну продолжайте острить дальше. Память у Вас видно коротка (а не только в моём проекте), так хотя-бы почитайте весь тред.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 12 2016, 09:31
Сообщение #4


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

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



Цитата(jcxz @ Aug 12 2016, 11:48) *
Как это реализовано? Скорей всего - периодический контроль затёртости шаблона в стеке. Именно так сделано в uCOS. Это малоэффективно. Я уже писал почему.

Нет. Там можно другой галкой задавать шаблон (watermark) или не задавать. А проверка все равно работает.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 12 2016, 09:45
Сообщение #5


Гуру
******

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



Цитата(ViKo @ Aug 12 2016, 15:31) *
Нет. Там можно другой галкой задавать шаблон (watermark) или не задавать. А проверка все равно работает.

хм... странно... А как тогда работает? По какому алгоритму. У меня IAR, Keil-а нет.
Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 12 2016, 09:59
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(jcxz @ Aug 12 2016, 12:45) *
хм... странно... А как тогда работает? По какому алгоритму. У меня IAR, Keil-а нет.

Мануал намекает, что проверка стека производится во время переключения задачи:
Цитата
Enabled Stack Checking slightly decreases the kernel performance because on every task switch the kernel needs to execute additional code for stack checking.
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
- - ViKo   Да, вроде, ни первое ни второе не помеха хорошему ...   Aug 3 2016, 10:08
|- - jcxz   Цитата(ViKo @ Aug 3 2016, 16:08) Да, врод...   Aug 3 2016, 10:23
|- - scifi   Цитата(jcxz @ Aug 3 2016, 13:23) Других с...   Aug 3 2016, 10:44
|- - AlexandrY   Цитата(jcxz @ Aug 3 2016, 13:23) Забитие ...   Aug 3 2016, 10:47
|- - jcxz   Цитата(AlexandrY @ Aug 3 2016, 16:47) J-L...   Aug 3 2016, 11:11
- - 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
- - AlexandrY   Цитата(Kabdim @ Aug 12 2016, 10:54) Может...   Aug 12 2016, 08:08
|- - 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 August 2025 - 14:27
Рейтинг@Mail.ru


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