jeka 0 16 февраля, 2021 Опубликовано 16 февраля, 2021 · Жалоба Заметил странный спецэффект c LWIP. При интенсивном обмене по езернету (~30Мбит/с), IRQ с приоритетом ниже чем MAX_SYSCALL_INTERRUPT_PRIORITY стали очень сильно задеживаться (пордок - десятки тысяч CPU cycles). Т.е. где-то в стеке происходит длительная блокировка прерываний. Кто-нибудь сталкивался, разбирался где? такое положение вещей никуда не годится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба Три года назад работал с версией LwIP 2.x.н (точно не помню, кода нет под рукой) на LPC4337. С таким не встречался. ОСРВ FreeRTOS v. 9.z (тоже точно не помню). Понимаю, что я вам не помог, но для справки и такая информацих хороша пока будет))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба 8 часов назад, jeka сказал: Т.е. где-то в стеке происходит длительная блокировка прерываний. Не факт. Возможно - прерывания от Ethernet у вас выставлены с бОльшим приоритетом, чем задерживаемые, длительность выполнения каждого слишком большая и идут часто. В результате всё время уходит на обработку только их и на менее приоритетные его просто не остаётся. Решение - понизить их приоритет. Либо уменьшить длительность выполнения ISR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба 9 hours ago, jeka said: Кто-нибудь сталкивался, разбирался где? такое положение вещей никуда не годится. Берете J-Link и IAR c Timeline. Применяете ITM ивенты и смотрите кто вытесняет прерывания или кто занимает все время. Делов на час. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба JLink + SystemView Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jeka 0 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба В итоге, сделал программный профайлер, который замеряет время блокировки прерываний у freertos. И сразу все стало ясно - мой косяк оказался. Со стеком всё нормально. 2 hours ago, AlexandrY said: Берете J-Link и IAR c Timeline. Применяете ITM ивенты и смотрите кто вытесняет прерывания или кто занимает все время. Делов на час как я понял, этой штукой точно замерить время не получится. Как-то пробовал запустить таймлайн через SWO, но всё наглухо подвисало, ощущение что клоки swo неверные были. Надеюсь, скоро будет j-trace pro, с ним должно быть повеселее такие штуки искать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба 2 hours ago, jeka said: как я понял, этой штукой точно замерить время не получится. Измеряет до долей микросекунды. J-Link Ultra+ Но это конечно от методики зависит. Время чего собственно измеряется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться