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

 
 
> Прерывание в прерывании, Для реализации 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, 18:50
Сообщение #2


Гуру
******

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



Меня устраивает карусель кооперативная на таймерах, не столь удобно писать код, но мне его поведение выглядит более понятным. Это скорее "железный" стиль, а не программисткий. Да и задач у меня нет промежуточных почти, либо простые, где достаточно прерываний и таймеров с флагами, либо на Линукс всякие видеокамеры. Мутить что то достаточно сложное на малых ресурсах не доводилось. Круто конечно сервер на коппечном проце замутить, только интерес это академический, никому это не надо. Железо стоит копейки, тот же расперри за 10 баксов имеет полноценный линукс, зачем жать доллар в российской реальности, где тиражи малы, конкурентоспособность определяется родственными связями начальникам и величиной откатов заказчику, в время разработки важнее этого несчастного доллара

Цитата
void LedTaskOn (void *pparam)
{
SetTimer (LedTaskOff, onTime);
led.on();
}
void LedTaskOff (void *pparam)
{
SetTimer (LedTaskOn, offTime);
led.off();
}

Можно и одной функцией
Стек не жрет, дискретность микросекнды, никаких проблем с разделением ресурсов - все работают из прерываний. Недостаток - функция такого потока реализуется как машина состояний, что вобщем то не напрягает
Все эти
Цитата
led.on();
sleep(onTime);
led.off();
sleep(offTime);

хороши как заманилово студентам как все красиво и прекрасно. В реальной задаче все увы не совсем так, обрастает критическими секциями, мьютексам итп. Где-то удобно, а где-то - не нужно. Мне - не нужно пока что точно
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 7 2017, 19:01
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(DASM @ Nov 7 2017, 21:50) *
void LedTaskOn (void *pparam)
{
SetTimer (LedTaskOff, onTime);
led.on();
}
void LedTaskOff (void *pparam)
{
SetTimer (LedTaskOn, offTime);
led.off();
}

Очень печальное зрелище - простейший пример усложнил читаемость и очевидность кода на порядки. Также вырос размер кода во флэш.
Уж боюсь предположить, во что превратить более объемный код после переписывания его под SST.
Короче, прихожу к очевидному выводу: SST - это для потомственных мазахистов.... Я пас cranky.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:08
|- - jcxz   Цитата(DASM @ Nov 7 2017, 17:08) Так може...   Nov 7 2017, 15:11
|- - DASM   Цитата(jcxz @ Nov 7 2017, 18:11) А в чём ...   Nov 7 2017, 15:29
|- - jcxz   Цитата(DASM @ Nov 7 2017, 17:29) Тем, что...   Nov 7 2017, 15:58
- - 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, 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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