Перейти к содержанию
    

Как сделать идеологически выдержанно, "в стиле РТОС"

Хотя в Вашем случае несомненно использовать надо критические секции aka запрет прерываний.

 

Кто-то еще запрещает прерывания в Cortex-M?

 

Там давно уже все уважающие себя RTOS не запрещают прерывания, а просто поднимают приоритет.

Кстати в uCOS тоже нет запрета прерываний, а есть подъем приоритета, как и в MQX.

 

Я считаю правильным оценивать возможности операционных систем по их ядру, а не по наличию "штатных" прибуд типа поддержек SPI, прикрученных разных библиотек или возможности запуска Microsoft Word.

 

Хотел бы я посмотреть как линукс будут обсуждать отдельно от файловой абстракции, сетевого стека, управления памятью, загрузки ппроцессов и проч.

В MQX межпроцессорное взаимодействие это часть ядра. Там все сервисы (задачи, семафоры, ивенты...) предусматривают расположение на разных ядрах.

Так что... :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотел бы я посмотреть как линукс будут обсуждать отдельно....

Естественно, что не обсуждают, по тому, что нынешние виндовсы с массовыми линуксами есть один комок со всеми потрохами включая не только стеки, но уже де-факто и приложения :(. Только это совершенно не отрицает и нормального модульного построения систем. Тем более для кортексов M0/M3 которыми здесь Автор озаботился.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там давно уже все уважающие себя RTOS не запрещают прерывания, а просто поднимают приоритет.

Приоритет чего?

 

Кстати в uCOS тоже нет запрета прерываний, а есть подъем приоритета, как и в MQX.

Приоритета чего???

Кстати - в uCOS нет, но в её портах - имеется. И в порту для Cortex-M:

#if OS_CRITICAL_METHOD == 3u
#define OS_CPU_SR_ALLOCATE() OS_CPU_SR cpu_sr  //Allocate storage for CPU status register
#define OS_ENTER_CRITICAL() {cpu_sr = __get_PRIMASK(); __disable_interrupt();}
#define OS_EXIT_CRITICAL()  {__set_PRIMASK(cpu_sr);}
#endif

А уже в самом ядре интенсивно пользуются эти функции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все именно так.

Состояния всех семафоров мастеру знать не нужно. Требуется знать сотояние ограниченного числа именно флагов, которые для слейва играют роль семафоров, использующихся для взаимодействия между процессами. Спасибо. Чтобы осознать проблему, иногда достаточно кому то рассказать о ней.

 

 

 

 

Согласен, что первая фраза как бы не вполне. Тем не менее несколькими постами выше вы процитировали другую мою фразу, в которой якобы смешано все в кучу, собственно за нее я вступился.

Если заходить на форум, имея в качестве цели придраться к неудачной, наскоро составленной формулировке, это почти всегда можно сделать, потешив тем самым свое самолюбие.

Ваша компетентность не вызывает сомнений ни у меня(пусть для Вас это совершенно неважно), ни(я так думаю) у большинства других посетителей форума, да и Вы сами знаете себе цену. Тем более непонятно зачем Вам подобные упражнения.

На этом дискуссию заканчиваю.

С Уважением, Александр.

Так всё-таки Вам в конкретно этой задаче над максимально быстро сообщить мастеру об изменени флагов или это периодически опрос?

Имхо, идеологически верно будет "вести"(модифицировать) переменную на самом сервере, а со слэйва присылатьсообщения об изменении состояния критических бит

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...