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

 
 
> ContextSwitcher_ISR (MegaAVR)
_Артём_
сообщение Jan 25 2012, 00:43
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



ContextSwitcher_ISR выполняется с запретом вложенных прерываний (что логично).
Не понимаю такой момент: может ли нарушить работу системы прерывание не используещие сервисы Оси(если разрешить прерывания в ContextSwitcher_ISR), при том что гарантированно не будет прерываний используюший Ос (например записью 0 в TIMSK, ETIMSK - прерываний немного).
Вопрос возник потому что величина времи с полным запретом прерываний очень велика, теряются данные.
Спасибо.
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 25)
AHTOXA
сообщение Feb 4 2012, 11:52
Сообщение #16


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(_Артём_ @ Feb 4 2012, 02:27) *
Семь. Хм...может программа простая...

Ну хорошо, давайте навскидку придумайте больше семи независимых процессов в микроконтроллерной программеsm.gif
Цитата
У меня как-то наоборот: если сокет какой слушает порт или com-порт (к примеру), то поток, если таких сокетов/портов несколько, то каждый в своём потоке и в итоге потоков с десяток легко набегает. А программы не бог весть какие сложные...

У меня другой подход, я предпочитаю обрабатывать однообразные сокеты/порты в одном потоке (WSACreateEvent/WSAWaitForMultipleEvents для сокетов, WaitCommEvent + OVERLAPPED + оконные сообщения для портов). Просто с давних пор привык считать, что лишние потоки - это весьма накладно. Хотя при нынешних компьютерах это наверное уже не так.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 4 2012, 20:29
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Feb 4 2012, 13:52) *
Ну хорошо, давайте навскидку придумайте больше семи независимых процессов в микроконтроллерной программеsm.gif

На днях попробую придумать программку на десяток потоков, если получится выложу мысли - посмеёмся.
P.S. Независимых == не взаимодействующих между собой?
Или достаточно так?
Код
#define  scmRTOS_PROCESS_COUNT              8


Цитата(AHTOXA @ Feb 4 2012, 13:52) *
Просто с давних пор привык считать, что лишние потоки - это весьма накладно. Хотя при нынешних компьютерах это наверное уже не так.

При нынешних контроллерах скоро не накладно будет (или уже не накладно?).
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 5 2012, 14:04
Сообщение #18


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(_Артём_ @ Feb 5 2012, 02:29) *
P.S. Независимых == не взаимодействующих между собой?

Я имел в виду такие процессы, которые не могут быть обслужены одним потоком выполнения поочерёдно. То есть, например, ждущие различных прерываний.
(Хотя и в этом случае зачастую можно утоптать их в один поток, например, ставя из прерываний некие сообщения в очередь)
Цитата
При нынешних контроллерах скоро не накладно будет (или уже не накладно?).

Да, переключение контекста в scmRTOS на кортексе 100 МГц всяко побыстрее, чем под win95 на 486DX4-100. Но памяти пока всё же поменьшеsm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 6 2012, 01:56
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Feb 5 2012, 16:04) *
Я имел в виду такие процессы, которые не могут быть обслужены одним потоком выполнения поочерёдно. То есть, например, ждущие различных прерываний.
(Хотя и в этом случае зачастую можно утоптать их в один поток, например, ставя из прерываний некие сообщения в очередь)

Понятно.

Цитата
Цитата

Offtop. А для STM32F40x в v4 порта нет?

Нет. Но по идее должен пойти порт от STM32F1xx.


Он же cortex-m3. Или разница между M3 и M4 для scmRtos не существенна?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 6 2012, 03:43
Сообщение #20


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(_Артём_ @ Feb 6 2012, 07:56) *
Он же cortex-m3. Или разница между M3 и M4 для scmRtos не существенна?

Я не занимался ещё ими, но там вроде только плавучка добавляется? Если так, то, имхо, да, пойдёт.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
WHALE
сообщение Feb 9 2013, 06:18
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Цитата(Сергей Борщ @ Feb 2 2012, 00:11) *
Если прерывание не использует сервисов ОС, то обертку OS::TISRW или подобную заводить в нем не нужно и TISR_StackSwitcher как-бы не нужен совсем.

А если прерывание использует сервис ОС-сигналит флаг, но вложенные прерывания запрещены и срочной обработки(немедленного вызова шедулера) не требуется - можно также не использовать в нем обертку OS::TISRW?


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 9 2013, 08:49
Сообщение #22


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Т.е., просто откладываем реакцию на этот флаг до того, как пройдет следующее перепланирование из-за соответствующего вызова из какого-то потока либо из-за другого прерывания, имеющего TISRW ?

Похоже, можно.
Всякие signal_isr() ничего такого по цепочке вызовов не делают, что могло бы в неправильное состояние потроха ОС поставить.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
dxp
сообщение Feb 9 2013, 08:50
Сообщение #23


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (WHALE @ Feb 9 2013, 13:18) *
А если прерывание использует сервис ОС-сигналит флаг, но вложенные прерывания запрещены и срочной обработки(немедленного вызова шедулера) не требуется - можно также не использовать в нем обертку OS::TISRW?

Можно. Передача управления произойдёт при одном из следующих вызовов планировщика (в зависимости от приоритета).


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
WHALE
сообщение Feb 9 2013, 19:30
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Спасибо. У меня и работало в железе в таком варианте, но лучше быть уверенным,что сам себе бомбу не подкладываешь...

З.Ы. И что-бы два раза не вставать - исправьте,пожалуйста, очепятку в руководстве по scmRTOS version 4 в описании доступных операций с семафором OS::TMutex на стр.87 TMutex::unlock_usr() на TMutex::unlock_isr().

С уважением.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Tiro
сообщение Feb 9 2013, 20:17
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(WHALE @ Feb 9 2013, 22:30) *
исправьте,пожалуйста, очепятку в руководстве по scmRTOS version 4 в описании доступных операций с семафором OS::TMutex на стр.87 TMutex::unlock_usr() на TMutex::unlock_isr().

Хоть бы букву выделил, а то я целую минуту искал отличия ))
Go to the top of the page
 
+Quote Post
dxp
сообщение Feb 10 2013, 12:33
Сообщение #26


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (WHALE @ Feb 10 2013, 02:30) *
З.Ы. И что-бы два раза не вставать - исправьте,пожалуйста, очепятку в руководстве по scmRTOS version 4 в описании доступных операций с семафором OS::TMutex на стр.87 TMutex::unlock_usr() на TMutex::unlock_isr().

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:33
Рейтинг@Mail.ru


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