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

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


Ally
******

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



Цитата(jcxz @ Aug 12 2016, 11:48) *
Ну-ну продолжайте острить дальше. Память у Вас видно коротка (а не только в моём проекте), так хотя-бы почитайте весь тред.


Ладно, допустим вы даже читали про MPU.

В STM32F4 и STM32F7 оно действительно есть, хоть там дальше все равно идут нюансы с картой памяти, атрибутами доступа её областей и кэшированием свойственные только STM-ам.
А в Kinetis сделанных на том же Cortex-M4 ARM-овского MPU нет, а сделано свое MPU.

Или вот обычная практика для задач выделять стек в динамической памяти (ну для динамических задач), и эта же задача должна иметь доступ ко всей динамической памяти.
Т.е. задача не может взять и изолировать кусок в памяти поскольку должна иметь полное право писать и выше и ниже стека.
И все!
Красивая идея стухла и превратилась в костыль.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 13 2016, 08:16
Сообщение #5


Гуру
******

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



Цитата(AlexandrY @ Aug 12 2016, 19:36) *
А в Kinetis сделанных на том же Cortex-M4 ARM-овского MPU нет, а сделано свое MPU.

Пока Kinetis и STM не интересуют, интересуют TI и NXP главным образом.

Цитата(AlexandrY @ Aug 12 2016, 19:36) *
Или вот обычная практика для задач выделять стек в динамической памяти (ну для динамических задач), и эта же задача должна иметь доступ ко всей динамической памяти.
Т.е. задача не может взять и изолировать кусок в памяти поскольку должна иметь полное право писать и выше и ниже стека.

В динамической памяти стеки задачам никогда не выделяю, все задачи живут постоянно - нет удаления задач.
При избытке памяти и "изолировать" ничего не мешает - выделить кусок заведомо большего размера, внутри него - выровненный на степени 2 регион1, закрыть его от доступа через MPU, внутри региона1 - регион2 меньшего размера - разрешить его для доступа (с бОльшим приоритетом чем у региона1). Регион2 расположен внутри региона1 так, чтобы между началом региона1 и региона2 и между их концами были некоторые защитные интервалы памяти.
Всё.
Но я уже сказал - облегчённые частные случаи типа: избыток памяти, избыток свободных регионов в MPU и пр. - не рассматриваю.

Цитата(zltigo @ Aug 12 2016, 16:47) *
Тогда это делается очень просто, но больше для галочки,

Это точно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 13 2016, 20:09
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (jcxz @ Aug 13 2016, 11:16) *
В динамической памяти стеки задачам никогда не выделяю, все задачи живут постоянно - нет удаления задач.

Между прочим, при динамическом выделении памяти под стек, каждый блок памяти имеет MCB, разрушение которого тоже является диагностическими признаком. Просмотр блоков памяти возможен в любой момент и для любого варианта сборки не надо иметь соответствующий ему MAP файл.



--------------------
Feci, quod potui, faciant meliora potentes
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
- - 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


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

 


RSS Текстовая версия Сейчас: 7th August 2025 - 14:21
Рейтинг@Mail.ru


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