Jump to content

    
Sign in to follow this  
jeka

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

Recommended Posts

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
8 часов назад, jeka сказал:

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

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

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

Share this post


Link to post
Share on other sites
9 hours ago, jeka said:

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

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

Share this post


Link to post
Share on other sites

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

2 hours ago, AlexandrY said:

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

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

Share this post


Link to post
Share on other sites
2 hours ago, jeka said:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this