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

STM32F407: Ethernet + CHECKSUM_BY_SOFTWARE

мьютекс поможет в устранении этого "бага", а вот семафор уже не поможет.

Ещё раз: Каким образом???

Я знаю как это делается например в Win. Но там это свойство - всей системы объектов синхронизации. Вне зависимости от того, что это - мьютекс или event. Т.е. - не зависит от типа объекта.

 

Нужно объявлять объект "ящика" через OSMboxCreate, заранее создав его экземпляр. Т.е. тратим ОЗУ.

Это, к сожалению, так.

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


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

Ещё раз: Каким образом???

Очень просто - средствами самой os, а точнее, встроенными механизмами борьбы с инверсией приоритетов: протокол наследования приоритета (Priority inheritance protocol), протокол увеличения приоритета (Priority ceiling protocol).

Например, вот как это сделано на примере tnkernel.:

 

Возвращаясь к началу разговора:

Мютекс - это объект RTOS, предназначенный для обеспечения конкурентного доступа к общим ресурсам.

Мютекс представляет собой двоичный семафор с дополнительными свойствами (например, протоколы обхода неограниченной инверсии приоритетов).

 

Это, к сожалению, так.

А чего тогда было спорить? ;)

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


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

Дабы не спорить, ждем код считалки в студию!

Всё есть здесь.

За исключением драйвера Ethernet, который сделал неизвестно кто. Вот там бы я и искал проблему. Может быть, просто переписал бы его, потому что всё время так и делаю. Там нужно около 300 строк всего.

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


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

Может быть, просто переписал бы его, потому что всё время так и делаю. Там нужно около 300 строк всего.

Кстати, просветите меня - неуча: почему так настойчиво юзают lwip версию 1.4 даже в новых проектах, коли уже давно существует 2.хх?

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


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

Очень просто - средствами самой os, а точнее, встроенными механизмами борьбы с инверсией приоритетов:

Передёргиваете.

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

Я Вам написал, что это не так, что мьютекс и инверсия приоритетов - это как горячее и зелёное - никакого отношения одно к другому не имеет.

Средства для борьбы с инверсией приоритетов, если таковые есть, они сами по себе, и они не являются свойством мьютекса, а если они есть, то имеются в разных средствах синхронизации (мьютексы, семафоры, критические секции и т.п.).

Т.е. - в каких-то ОС они есть, в каких-то - нет. Я знаю, что такие средства есть в Win, но их нет в uCOS. Но мьютексы есть и там и там.

 

А чего тогда было спорить? ;)

Спорить о чём? Где я утверждал, что для объектов синхронизации uCOS не нужна ОЗУ??? :wacko:

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


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

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

Перечитайте мои посты еще раз отсюда, пожалуйста.

На всякий случай еще раз продублирую мануал uCos: "Semaphores are subject to unbounded priority inversions, while mutex are not."

и википедию: "Мютекс представляет собой двоичный семафор с дополнительными свойствами (например, протоколы обхода неограниченной инверсии приоритетов)."

"...Почти везде для разделения ресурсов используем семафоры.."
:smile3046:

 

Спорить о чём?
.

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


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

Перечитайте мои посты еще раз

Зачем? Вы в сообщении 8 уже небылицы рассказываете.

 

и википедию: "Мютекс представляет собой двоичный семафор с дополнительными свойствами (например, протоколы обхода неограниченной инверсии приоритетов)."

Очевидно, что такого бреда не может быть в википедии. Хотя бы потому, что "мютексов" никаких не существует в природе, а есть "мьютексы". А отсюда следует, что эту фразу Вы ниоткуда не скопировали, а высосали из пальца.

Вы сами то почитайте хотя-бы википедию, https://ru.wikipedia.org/wiki/Мьютекс

и узнаете что такое мьютекс и deadlock и многое другое.

 

PS: И про отличие семафора от мьютекса там тоже сказано. Совсем не то что Вы думаете.

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


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

....небылицы рассказываете. ....такого бреда не может быть в википедии. ...

..."мютексов" никаких не существует в природе, а есть "мьютексы".

Когда все объективные аргументы исчерпаны, в ход идет "тяжелая артиллерия": придирка к грамматическим ошибкам, обвинения в "бреде", "небылицах", "высосано из пальца" т.п. ...

 

А отсюда следует, что эту фразу Вы ниоткуда не скопировали, а высосали из пальца.

"Высосано" отсюда.

 

И про отличие семафора от мьютекса там тоже сказано. Совсем не то что Вы думаете.
Значит врут книги или я просто не умею читать.

А мануалы к uCos, freeRTOS, tnkernel и другим осям вообще рассказывают целые "небылицы".... Нда, как все печально-то :crying:

Уж сделайте милость, просветите неучей - в чем же состоит Истинное Отличие семафора от мьютекса!

 

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


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

Кстати, просветите меня - неуча: почему так настойчиво юзают lwip версию 1.4 даже в новых проектах, коли уже давно существует 2.хх?

Полгода всего. Это недавно, почти вчера.

Скажем, если сравнивать с C99, понадобилось лет 10, чтобы начало внедряться.

Кстати, насчёт "новых проектов" я бы уточнил. Скажем, порт lwip для FreeRTOS - это старый проект. Кубический куб - тоже. А вот чтобы кто-то самостоятельно взял исходники lwip с официального сайта и прикрутил к своему проекту - это редкость. Обычно возникают вопросы типа "ой, у меня не работает, где там галочку поставить в кубическом кубе?"

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


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

Когда все объективные аргументы исчерпаны, в ход идет "тяжелая артиллерия": придирка к грамматическим ошибкам, обвинения в "бреде", "небылицах", "высосано из пальца" т.п. ...

Может Вы не поняли, но это не придирка к грамматике. Вы написали про википедию и типа привели выдержку из неё. Я указал, что это не может быть ссылкой оттуда, так как в википедии даже слово "мютекс" не находится. Значит Ваш аргумент выдуман. И в википедии кстати в описании мьютекса ничего не говорится о его возможностях по инверсии приоритета. Как и следовало ожидать. И статья там безотносительно ОС - для всех ОС.

 

"Высосано" отсюда.

Значит врут книги или я просто не умею читать.

Вот это похоже на правду - что не умеете читать.

Отсюда Вы и дёрнули эту цитату. И совсем не поняли, что она относится к конкретной ОС - tnkernel. Т.е. - как я и писал ранее - средства борьбы с инверсией приоритетов - это свойство данной ОС, а не в целом всех мьютексов как класса объектов синхронизации. Мьютексы в других ОС могут не иметь таких средств или иметь другие и от этого они не перестают быть мьютексами.

 

А мануалы к uCos

Уж сделайте милость, просветите неучей - в чем же состоит Истинное Отличие семафора от мьютекса!

Отличия описаны в той же википедии.

Лучше Вы - сделайте милость - укажите каким образом мьютекс в uCOS-II борется с инверсией приоритетов. Мне очень интересно. А то пользуюсь uCOS-II уже лет 10 и не знал о такой её замечательной особенности!

Если докажете что мьютексы умеют это делать, вот ей богу - перейду исключительно на них :biggrin:

 

А вот чтобы кто-то самостоятельно взял исходники lwip с официального сайта и прикрутил к своему проекту - это редкость.

А чтобы кто-то самостоятельно взял и написал TCP-стек самостоятельно, не беря lwIP? :rolleyes:

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


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

Если докажете что мьютексы умеют это делать, вот ей богу - перейду исключительно на них :biggrin:

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

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


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

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

Слились значит. Что и следовало ожидать.

Так как никаких средств борьбы с инверсией приоритетов мьютекс (сам по себе, как класс объектов синхронизации в разных ОС) не имеет.

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


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

Так как никаких средств борьбы с инверсией приоритетов мьютекс (сам по себе, как класс объектов синхронизации в разных ОС) не имеет.

Нда, случай тяжелый ... поэтому последняя попытка: открывайте исходники вашей (оси os_sem.c и os_mutex.c) и изучайте разницу между аналогичными функциями.

На всякий случай подскажу - ищите фразу "OS_ERR_PIP_LOWER" в файле os_mutex.c.

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


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

Справитесь самостоятельно или нужно разжевать и тут?

Разжуйте. Какую именно строку надо изучать? :laughing:

 

На всякий случай подскажу - ищите фразу "OS_ERR_PIP_LOWER" в файле os_mutex.c.

Нет такой фразы! Т.е. - вообще нет ни в одном файле.

Опять из пальца высасываете.

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


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

Разжуйте. Какую именно строку надо изучать? :laughing:

Все ясно: привычка "забивать гвозди лопатой" за 10 лет практики уже превратилась в религию

А менять чужую религию - самое последнее, что стоит делать. :smile3046:

 

 

Нет такой фразы! Т.е. - вообще нет ни в одном файле.Опять из пальца высасываете.

У меня есть последняя версия uCos-II v2.90, но это появилось уже в версии 2.80, а в 2.76 нет.

Обновите ось.

 

А в uCos-III (у меня под боком V3.03.00) мьютекс стал еще более умным - появилось еще больше возможных ошибок применения.

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


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

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

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

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

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

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

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

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

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

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