AlexandrY 3 14 декабря, 2016 Опубликовано 14 декабря, 2016 · Жалоба Хотя в Вашем случае несомненно использовать надо критические секции aka запрет прерываний. Кто-то еще запрещает прерывания в Cortex-M? Там давно уже все уважающие себя RTOS не запрещают прерывания, а просто поднимают приоритет. Кстати в uCOS тоже нет запрета прерываний, а есть подъем приоритета, как и в MQX. Я считаю правильным оценивать возможности операционных систем по их ядру, а не по наличию "штатных" прибуд типа поддержек SPI, прикрученных разных библиотек или возможности запуска Microsoft Word. Хотел бы я посмотреть как линукс будут обсуждать отдельно от файловой абстракции, сетевого стека, управления памятью, загрузки ппроцессов и проч. В MQX межпроцессорное взаимодействие это часть ядра. Там все сервисы (задачи, семафоры, ивенты...) предусматривают расположение на разных ядрах. Так что... :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 14 декабря, 2016 Опубликовано 14 декабря, 2016 · Жалоба Хотел бы я посмотреть как линукс будут обсуждать отдельно.... Естественно, что не обсуждают, по тому, что нынешние виндовсы с массовыми линуксами есть один комок со всеми потрохами включая не только стеки, но уже де-факто и приложения :(. Только это совершенно не отрицает и нормального модульного построения систем. Тем более для кортексов M0/M3 которыми здесь Автор озаботился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 19 декабря, 2016 Опубликовано 19 декабря, 2016 · Жалоба Там давно уже все уважающие себя 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 А уже в самом ядре интенсивно пользуются эти функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sanny444 0 13 июля, 2017 Опубликовано 13 июля, 2017 · Жалоба Все именно так. Состояния всех семафоров мастеру знать не нужно. Требуется знать сотояние ограниченного числа именно флагов, которые для слейва играют роль семафоров, использующихся для взаимодействия между процессами. Спасибо. Чтобы осознать проблему, иногда достаточно кому то рассказать о ней. Согласен, что первая фраза как бы не вполне. Тем не менее несколькими постами выше вы процитировали другую мою фразу, в которой якобы смешано все в кучу, собственно за нее я вступился. Если заходить на форум, имея в качестве цели придраться к неудачной, наскоро составленной формулировке, это почти всегда можно сделать, потешив тем самым свое самолюбие. Ваша компетентность не вызывает сомнений ни у меня(пусть для Вас это совершенно неважно), ни(я так думаю) у большинства других посетителей форума, да и Вы сами знаете себе цену. Тем более непонятно зачем Вам подобные упражнения. На этом дискуссию заканчиваю. С Уважением, Александр. Так всё-таки Вам в конкретно этой задаче над максимально быстро сообщить мастеру об изменени флагов или это периодически опрос? Имхо, идеологически верно будет "вести"(модифицировать) переменную на самом сервере, а со слэйва присылатьсообщения об изменении состояния критических бит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться