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

 
 
> Прерывание в прерывании, Для реализации Super Simple Tasker
arhiv6
сообщение Nov 7 2017, 12:00
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 633
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423



Super Simple Tasker - один из вариантов реализации вытесняющей многозадачности для микроконтроллеров. Как в нём работает асинхронное переключение на более приоритетные задачи написано в статье под рисунком 3. Для реализации SST нужна такая вещь: в функции-обработчике прерывания, после выполнения необходимого кода, нужно как-то сообщить микроконтроллеру, что с прерыванием закончили работать но из функции-обработчика не выходить. Т.е. нужно разрешить вложенные прерывания (одни и те же).

В статье в примере для ПК это делается так: используется команда End Of Interrupt (EOI) - outportb(0x20, 0x20). Обычно она выполняется непосредственно перед выходом из функции-обработчика прерывания, но в SST после EOI вызывается диспетчер, прямо в контексте прерывания. Т.е. вызвав EOI, но оставаясь в контексте прерывания, мы разрешаем вложенные прерывания. Как это можно сделать для ARM (Cortex)?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DASM
сообщение Nov 7 2017, 15:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Так может Вы дадите совет, сколько памяти давать каждой задачи, чтобы ей гарантированно хватило, и при этом не было бы потерь памяти из-за этого "на всякий случай"?
Потоки и жрут.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 7 2017, 15:11
Сообщение #3


Гуру
******

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



Цитата(DASM @ Nov 7 2017, 17:08) *
Так может Вы дадите совет, сколько памяти давать каждой задачи, чтобы ей гарантированно хватило, и при этом не было бы потерь памяти из-за этого "на всякий случай"?

А в чём разница между стеком задачи под ОС и стеком той же самой задачи без ОС? У Вас, что ОС сама ваш код компилирует? Или может даже пишет? biggrin.gif

Цитата(DASM @ Nov 7 2017, 17:08) *
Потоки и жрут.

Что за злобные такие "потоки", лазящие по Вашим исходникам и жрущие память??? Жутко даже становится... help.gif
Go to the top of the page
 
+Quote Post
DASM
сообщение Nov 7 2017, 15:29
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(jcxz @ Nov 7 2017, 18:11) *
А в чём разница между стеком задачи под ОС и стеком той же самой задачи без ОС? У Вас, что ОС сама ваш код компилирует? Или может даже пишет? biggrin.gif

Тем, что без ОС такой - стек общий, и памяти не хватит тогда, когда ее не хватит вообще. А с потоками вытесняющими - это как коробка конфет , места много займет, а конфет мало, в отличии от единого стека. Второй пример фрагментации памяти с malloc - памяти до хрена, а получаем NULL - ибо впихнуть нужный кусок некуда. Я надеюсь вы уже решили эту проблему сборщиками мусора на микроконтроллерах? wink.gif Короче не стоит далее спорить, все останутся при своих это очевидно. Меня недетерминированность поведения таких РТОС во многих задачах не устраивает, расход памяти тоже


"другого класса, скорее всего платной RTOS. " - то есть все бесплатное - это дерьмо по умолчанию? Странная мысль.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 7 2017, 15:58
Сообщение #5


Гуру
******

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



Цитата(DASM @ Nov 7 2017, 17:29) *
Тем, что без ОС такой - стек общий, и памяти не хватит тогда, когда ее не хватит вообще. А с потоками вытесняющими - это как коробка конфет ,

"Без ОС" - это значит всё в одной задаче. Если вы, не меняя алгоритма, перенесёте эту задачу в одну из задач (потоков) РТОС, что что изменится с потреблением стека? Ничего!
Так в чём разница???
Далее - конечно под РТОС вы потом можете эту же задачу реализовать в виде многих потоков РТОС. Это разве будет тем же самым алгоритмом? Нет конечно, это новая реализация, совершенно по другому написанная. И да, если писать не включая голову, можно сколько угодно памяти израсходовать.
Так в чём преимущество "без РТОС" по-вашему, в том что в таком случае заведомо меньше возможностей и криворукий программист сделает меньше багов? Не уверен что это преимущество....

Цитата(DASM @ Nov 7 2017, 17:29) *
места много займет, а конфет мало, в отличии от единого стека.

Так если задачу можно реализовать в виде одного потока ОС, то зачем его делить на несколько?
Или всё-таки нельзя (или будет заведомо худшее решение), то очевидно тогда что с РТОС - лучше? Разве не?

Цитата(DASM @ Nov 7 2017, 17:29) *
Второй пример фрагментации памяти с malloc

"Смешались в кучу люди кони"... динамическая память-то тут причём??? Разговор про стеки вроде шёл. Нафига стеки в дин. память пихать??? Да ещё выделять/освобождать периодически.
Какие-то нереальные примеры выдумываете....
PS: За последние ~15 лет в отрасли и десятках реализованных проектов, я ни разу ещё не использовал malloc() в embedded-проектах. Что делаю не так? blink.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- arhiv6   Прерывание в прерывании   Nov 7 2017, 12:00
- - Forger   Цитата(arhiv6 @ Nov 7 2017, 15:00) один и...   Nov 7 2017, 13:02
|- - Студент заборстроительного   Цитата(Forger @ Nov 7 2017, 16:02) Цитата...   Nov 8 2017, 16:41
|- - Forger   Цитата(Студент заборстроительного @ Nov 8 201...   Nov 8 2017, 20:41
|- - ig_z   QUOTE (Forger @ Nov 8 2017, 22:41) С друг...   Nov 9 2017, 20:15
|- - Forger   Цитата(ig_z @ Nov 9 2017, 23:15) в каждой...   Nov 9 2017, 21:41
- - arhiv6   Как минимум, это интересно - попробовать разные по...   Nov 7 2017, 13:17
|- - Forger   Цитата(arhiv6 @ Nov 7 2017, 16:17) А ещё ...   Nov 7 2017, 13:30
||- - DASM   Цитата(Forger @ Nov 7 2017, 16:30) В мелк...   Nov 7 2017, 14:28
||- - Forger   Цитата(DASM @ Nov 7 2017, 17:28) Я отказа...   Nov 7 2017, 14:45
||- - jcxz   Цитата(DASM @ Nov 7 2017, 16:28) Я отказа...   Nov 7 2017, 15:04
|- - jcxz   Цитата(arhiv6 @ Nov 7 2017, 15:17) Как ми...   Nov 7 2017, 15:00
- - Obam   Цитата(arhiv6 @ Nov 7 2017, 16:00) нужно ...   Nov 7 2017, 13:44
- - AHTOXA   Цитата(arhiv6 @ Nov 7 2017, 17:00) Как эт...   Nov 7 2017, 14:17
- - ViKo   Подтверждаю, RTX RTOS от Keil - весьма достойная п...   Nov 7 2017, 14:52
- - DASM   "прихожу лишь к одному выводу " - приход...   Nov 7 2017, 14:53
|- - jcxz   Цитата(DASM @ Nov 7 2017, 16:53) Вы лучше...   Nov 7 2017, 15:08
|- - Forger   Цитата(DASM @ Nov 7 2017, 17:53) "пр...   Nov 7 2017, 15:18
- - scifi   Гугл вводит на гитхаб. Возможно, всё украдено до н...   Nov 7 2017, 15:04
- - DASM   Я немного преувеличил для ясности. Эти РТОС замеча...   Nov 7 2017, 15:11
|- - Forger   Цитата(DASM @ Nov 7 2017, 18:11) Эти РТОС...   Nov 7 2017, 15:38
- - DASM   Да никто не хает, каждый до..ит как хочет. Просто ...   Nov 7 2017, 15:39
|- - Forger   Цитата(DASM @ Nov 7 2017, 18:39) Ваши РТО...   Nov 7 2017, 15:46
|- - jcxz   Цитата(DASM @ Nov 7 2017, 17:39) но навск...   Nov 7 2017, 16:11
|- - Forger   Цитата(jcxz @ Nov 7 2017, 19:11) Чтобы по...   Nov 7 2017, 16:13
- - arhiv6   Цитата(AHTOXA @ Nov 7 2017, 21:17) Здесь ...   Nov 7 2017, 15:59
|- - jcxz   Цитата(arhiv6 @ Nov 7 2017, 17:59) Пожалу...   Nov 7 2017, 16:16
|- - Forger   Цитата(jcxz @ Nov 7 2017, 19:16) Наверное...   Nov 7 2017, 17:56
- - arhiv6   Смотрел я исходники ОС, но они все по похожему при...   Nov 7 2017, 17:28
|- - Forger   Цитата(arhiv6 @ Nov 7 2017, 20:28) Как пр...   Nov 7 2017, 18:27
||- - arhiv6   Цитата(Forger @ Nov 8 2017, 01:27) Как бы...   Nov 7 2017, 19:00
|- - jcxz   Цитата(arhiv6 @ Nov 7 2017, 19:28) Смотре...   Nov 7 2017, 21:33
- - arhiv6   jcxz, Forger, я не знаю, как правильно сделать, по...   Nov 7 2017, 18:14
- - DASM   Меня устраивает карусель кооперативная на таймерах...   Nov 7 2017, 18:50
|- - Forger   Цитата(DASM @ Nov 7 2017, 21:50) void Led...   Nov 7 2017, 19:01
- - DASM   Первое, что приходит в голову так: о как, у меня т...   Nov 7 2017, 19:05
|- - Forger   Цитата(DASM @ Nov 7 2017, 22:02) Просто к...   Nov 7 2017, 19:05
||- - DASM   Цитата(Forger @ Nov 7 2017, 22:05) Ну-ну,...   Nov 7 2017, 19:08
|- - arhiv6   Цитата(DASM @ Nov 8 2017, 02:05) Первое, ...   Nov 7 2017, 19:08
|- - Forger   Цитата(DASM @ Nov 7 2017, 22:05) Первое, ...   Nov 7 2017, 19:21
|- - jcxz   Цитата(DASM @ Nov 7 2017, 21:05) вы шину ...   Nov 7 2017, 21:46
- - DASM   Ну да , тут собственно у меня так и есть   Nov 7 2017, 19:13
- - DASM   @ Читайте матчасть по ARM Cortex.@ Ладно, спорить ...   Nov 7 2017, 19:29
|- - Forger   Цитата(DASM @ Nov 7 2017, 22:29) @ Читайт...   Nov 7 2017, 19:36
|- - AlexandrY   Цитата(Forger @ Nov 7 2017, 21:36) Для те...   Nov 7 2017, 20:41
||- - Forger   Цитата(AlexandrY @ Nov 7 2017, 23:41) Да ...   Nov 7 2017, 21:44
|- - AVR   Цитата(Forger @ Nov 7 2017, 22:36) ОК, сл...   Nov 8 2017, 08:44
||- - Forger   Цитата(AVR @ Nov 8 2017, 11:44) Ради него...   Nov 8 2017, 12:53
|- - jcxz   Цитата(Forger @ Nov 7 2017, 21:36) Для те...   Nov 8 2017, 20:49
|- - Forger   Цитата(jcxz @ Nov 8 2017, 23:49) может ес...   Nov 8 2017, 20:54
- - DASM   А где тут DMA и что и куда оно грузит?   Nov 7 2017, 21:01
|- - AlexandrY   Цитата(DASM @ Nov 7 2017, 23:01) А где ту...   Nov 8 2017, 06:13
- - DASM   Ну не знаю, у меня на Ардуино все проще, а на мали...   Nov 7 2017, 22:35
- - DASM   Да уж.. сколько чудных открытий человек недавно п...   Nov 8 2017, 21:23
|- - Forger   Цитата(DASM @ Nov 9 2017, 00:23) склетон ...   Nov 8 2017, 23:29
- - syoma   Возвращаясь к оригинальной теме по поводу прерыван...   Nov 17 2017, 10:45
|- - Forger   Цитата(syoma @ Nov 17 2017, 13:45) что AR...   Nov 17 2017, 11:07
|- - scifi   Цитата(syoma @ Nov 17 2017, 13:45) Каково...   Nov 17 2017, 11:15
||- - Forger   Цитата(scifi @ Nov 17 2017, 14:15) Всё он...   Nov 17 2017, 11:37
||- - syoma   Цитата(scifi @ Nov 17 2017, 14:15) Всё он...   Nov 17 2017, 12:02
||- - Forger   Цитата(syoma @ Nov 17 2017, 15:02) И мое ...   Nov 17 2017, 12:17
||- - Obam   Цитата(syoma @ Nov 17 2017, 16:02) …Если ...   Nov 17 2017, 13:03
||- - AlexandrY   Цитата(syoma @ Nov 17 2017, 14:02) Ну я н...   Nov 17 2017, 13:42
||- - jcxz   Цитата(syoma @ Nov 17 2017, 14:02) Наскол...   Nov 17 2017, 13:44
|- - Timmy   Цитата(syoma @ Nov 17 2017, 13:45) Каково...   Nov 17 2017, 12:01
- - syoma   Знающие люди подсказали такой вариант. У них работ...   Nov 17 2017, 18:04
- - AlexandrY   Цитата(syoma @ Nov 17 2017, 20:04) Знающи...   Nov 17 2017, 18:56
- - syoma   Цитата(AlexandrY @ Nov 17 2017, 21:56) Кт...   Nov 17 2017, 20:51
- - AlexandrY   Цитата(syoma @ Nov 17 2017, 22:51) Если б...   Nov 17 2017, 21:35


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

 


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


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