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

 
 
> STM32F407: Ethernet + CHECKSUM_BY_SOFTWARE
k000858
сообщение Apr 28 2017, 08:13
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



В проект включены LwIP (1.4.0) и FreeRTOS. Ethernet интерфейс работает на прерывании, которое освобождает семафору. Задача по освобождению семафоры забирается пакеты.

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

Кто нибудь сталкивался с таким эффектом? есть идеи как можно подебажить проблему?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Axel
сообщение Apr 28 2017, 11:09
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Фраза:
Цитата(k000858 @ Apr 28 2017, 11:13) *
Версия проекта со включенной ETH_CHECKSUM_BY_HARDWARE (в драйвере Ethernet и LwIP стеке)...

наталкивает на мысль, что доступ к софтовой считалке происxодит из разных потоков. Я бы начал поиск граблей с этого места.
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 28 2017, 11:39
Сообщение #3


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

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



Цитата(Axel @ Apr 28 2017, 14:09) *
наталкивает на мысль, что доступ к софтовой считалке происxодит из разных потоков. Я бы начал поиск граблей с этого места.

Уже было озвучено sm.gif


Цитата(jcxz @ Apr 28 2017, 13:46) *
Не понял - и для чего это? Что за deadlines и какой от них прок?

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

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

Кстати, во FreeRTOS для этого есть более быстрый метод - уведомление (notify), он жрет заметно меньше ресурсов.

Другими словами: использовать семафор как средство разделения общего ресурса - это неправильно в разных смыслах.
Цитирую: "Мьютекс отличается от семафора тем, что только владеющий им поток может его освободить, т.е. перевести в отмеченное состояние." (из википедии)


Ну, теперь понятно? sm.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 28 2017, 12:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Apr 28 2017, 13:39) *
Если важна предсказуемость времени доступности ресурса (deadline), то вместо семафора нужно пользовать мьютекс, он как минимум будет бороться с инверсией приоритетов,
когда занятый ресурс ожидают несколько задач с разными приоритетами и может возникнуть взаимоблокировка (deadlock).

Вообще-то - взаимоблокировка - это нечто другое. Взаимоблокировка - это баг в ПО.
Это когда например задача1 владеет неким ресурсом1 и в это время пытается занять ресурс2, занятый задачей2. Она соответственно уходит в ожидание. И в этот время задача2 если попытается занять ресурс1, то вот тут как раз и возникнет deadlock - взаимоблокировка.
Сомневаюсь, что мьютекс спасёт от такого.

А вот уже инверсия приоритетов задач - это уже третье. laughing.gif
И не уверен что мьютекс спасёт от неё.

Цитата(Forger @ Apr 28 2017, 13:39) *
В простейших случаях, когда лишь одна задача ожидает объект (сигнал семафора или освобождение мьютекса), как раз лучше использовать семафор, бинарный (двоичный) семафор.
Другими словами: использовать семафор как средство разделения общего ресурса - это неправильно в разных смыслах.

Уже лет 10 пишу под uCOS-II. Куча разного ПО. И не только я (в группе разработчиков). Почти везде для разделения ресурсов используем семафоры (в некоторых ПО - по несколько десятков семафоров и почти десяток задач), устройств десятки тысяч уже у заказчиков работают - и всё ок. Странно, да? rolleyes.gif

Цитата(Forger @ Apr 28 2017, 13:39) *
Кстати, во FreeRTOS для этого есть более быстрый метод - уведомление (notify), он жрет заметно меньше ресурсов.

В uCOS для этого есть mailbox wink.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- k000858   STM32F407: Ethernet + CHECKSUM_BY_SOFTWARE   Apr 28 2017, 08:13
- - Forger   Цитата(k000858 @ Apr 28 2017, 11:13) осво...   Apr 28 2017, 09:24
|- - jcxz   Цитата(Forger @ Apr 28 2017, 11:24) ...   Apr 28 2017, 09:33
|- - k000858   Цитата(Forger @ Apr 28 2017, 12:24) Очень...   Apr 28 2017, 09:44
|- - Forger   Цитата(k000858 @ Apr 28 2017, 12:44) к со...   Apr 28 2017, 09:58
|- - jcxz   Цитата(Forger @ Apr 28 2017, 11:58) В при...   Apr 28 2017, 10:46
||- - Forger   Цитата(jcxz @ Apr 28 2017, 15:02) Вообще-...   Apr 28 2017, 13:00
||- - jcxz   Цитата(Forger @ Apr 28 2017, 15:00) Если ...   Apr 28 2017, 13:59
||- - Forger   Цитата(jcxz @ Apr 28 2017, 16:59) Каким о...   Apr 28 2017, 14:19
||- - jcxz   Цитата(Forger @ Apr 28 2017, 16:19) мьюте...   Apr 28 2017, 15:43
||- - Forger   Цитата(jcxz @ Apr 28 2017, 18:43) Ещё раз...   Apr 28 2017, 16:18
||- - jcxz   Цитата(Forger @ Apr 28 2017, 18:18) Очень...   Apr 28 2017, 19:58
||- - Forger   Цитата(jcxz @ Apr 28 2017, 22:58) Вы утве...   Apr 28 2017, 20:41
||- - jcxz   Цитата(Forger @ Apr 28 2017, 22:41) Переч...   Apr 28 2017, 21:10
||- - Forger   Цитата(jcxz @ Apr 29 2017, 00:10) ....неб...   Apr 28 2017, 22:40
||- - jcxz   Цитата(Forger @ Apr 29 2017, 00:40) Когда...   Apr 29 2017, 08:07
||- - Forger   Цитата(jcxz @ Apr 29 2017, 11:00) Если до...   Apr 29 2017, 08:09
||- - jcxz   Цитата(Forger @ Apr 29 2017, 10:09) Если ...   Apr 29 2017, 08:15
||- - Forger   Цитата(jcxz @ Apr 29 2017, 11:15) Так как...   Apr 29 2017, 08:21
||- - jcxz   Цитата(Forger @ Apr 29 2017, 10:21) Справ...   Apr 29 2017, 08:26
||- - Forger   Цитата(jcxz @ Apr 29 2017, 11:23) Разжуйт...   Apr 29 2017, 08:27
||- - jcxz   Цитата(Forger @ Apr 29 2017, 10:27) У мен...   Apr 29 2017, 09:00
||- - Forger   Цитата(jcxz @ Apr 29 2017, 12:00) Последн...   Apr 29 2017, 09:05
||- - jcxz   Цитата(Forger @ Apr 29 2017, 11:05) Но су...   Apr 29 2017, 09:36
||- - Forger   Цитата(jcxz @ Apr 29 2017, 12:36) Почитал...   Apr 29 2017, 13:20
||- - jcxz   Цитата(Forger @ Apr 29 2017, 15:20) Я рад...   Apr 29 2017, 20:26
||- - Forger   Цитата(jcxz @ Apr 29 2017, 23:26) И утвер...   Apr 29 2017, 21:44
||- - jcxz   Цитата(Forger @ Apr 29 2017, 23:44) Вообщ...   May 3 2017, 09:01
||- - Forger   Цитата(jcxz @ May 3 2017, 12:01) У меня т...   May 3 2017, 09:26
||- - jcxz   Цитата(Forger @ May 3 2017, 11:26) Вот, п...   May 3 2017, 09:46
||- - Forger   Цитата(jcxz @ May 3 2017, 12:46) У меня э...   May 3 2017, 09:56
||- - jcxz   Цитата(Forger @ May 3 2017, 11:56) И как ...   May 3 2017, 10:05
||- - Forger   Цитата(jcxz @ May 3 2017, 13:05) У меня ж...   May 3 2017, 11:07
|- - scifi   Цитата(Axel @ Apr 28 2017, 14:09) наталки...   Apr 28 2017, 13:10
|- - Forger   Цитата(scifi @ Apr 28 2017, 16:10) Знаете...   Apr 28 2017, 13:16
||- - scifi   Цитата(Forger @ Apr 28 2017, 16:16) Дабы ...   Apr 28 2017, 18:40
||- - Forger   Цитата(scifi @ Apr 28 2017, 21:40) Может ...   Apr 28 2017, 19:28
||- - scifi   Цитата(Forger @ Apr 28 2017, 22:28) Кстат...   Apr 29 2017, 04:29
|- - Axel   Цитата(scifi @ Apr 28 2017, 16:10) Знаете...   Apr 28 2017, 14:16
- - k000858   пока удалось выяснить вот что: 1) при шторме UDP т...   May 3 2017, 11:13
|- - Forger   Цитата(k000858 @ May 3 2017, 14:13) пока ...   May 3 2017, 11:22
|- - k000858   Цитата(Forger @ May 3 2017, 14:22) Я бы э...   May 3 2017, 11:29
|- - Forger   Цитата(k000858 @ May 3 2017, 14:29) Ниже ...   May 3 2017, 11:36
|- - jcxz   Цитата(Forger @ May 3 2017, 13:36) Вероят...   May 3 2017, 11:56
- - k000858   Может быть кому то поможет. Нашлось решение пробле...   May 23 2017, 10:15


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

 


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


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