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

FreeRTOS+LWIP (stm32h7), длительная блокировка IRQ

Заметил странный спецэффект c LWIP.

При интенсивном обмене по езернету (~30Мбит/с), IRQ с приоритетом ниже чем MAX_SYSCALL_INTERRUPT_PRIORITY стали очень сильно задеживаться (пордок - десятки тысяч CPU cycles). Т.е. где-то в стеке происходит длительная блокировка прерываний.

Кто-нибудь сталкивался, разбирался где? такое положение вещей никуда не годится.

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


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

Три года назад работал с версией LwIP 2.x.н (точно не помню, кода нет под рукой) на LPC4337. С таким не встречался. ОСРВ FreeRTOS v. 9.z (тоже точно не помню). Понимаю, что я вам не помог, но для справки и такая информацих хороша пока будет)))

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


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

8 часов назад, jeka сказал:

Т.е. где-то в стеке происходит длительная блокировка прерываний.

Не факт. Возможно - прерывания от Ethernet у вас выставлены с бОльшим приоритетом, чем задерживаемые, длительность выполнения каждого слишком большая и идут часто. В результате всё время уходит на обработку только их и на менее приоритетные его просто не остаётся.

Решение - понизить их приоритет. Либо уменьшить длительность выполнения ISR.

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


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

9 hours ago, jeka said:

Кто-нибудь сталкивался, разбирался где? такое положение вещей никуда не годится.

Берете J-Link и IAR c Timeline. Применяете ITM ивенты и  смотрите кто вытесняет прерывания или кто занимает все время. Делов на час. 

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


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

В итоге, сделал программный профайлер, который замеряет время блокировки прерываний у freertos. И сразу все стало ясно - мой косяк оказался. Со стеком всё нормально.

2 hours ago, AlexandrY said:

Берете J-Link и IAR c Timeline. Применяете ITM ивенты и  смотрите кто вытесняет прерывания или кто занимает все время. Делов на час

как я понял, этой штукой точно замерить время не получится. Как-то пробовал запустить таймлайн через SWO, но всё наглухо подвисало, ощущение что клоки swo неверные были. Надеюсь, скоро будет j-trace pro, с ним должно быть повеселее такие штуки искать.

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


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

2 hours ago, jeka said:

как я понял, этой штукой точно замерить время не получится. 

Измеряет до долей микросекунды. J-Link Ultra+
Но это конечно от методики зависит. Время чего собственно измеряется. 

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


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

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

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

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

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

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

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

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

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

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