Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC1768 прерывание Ethernet
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
andrewlekar
Сделал приём Ethernet фреймов через прерывание и начались проблемы - приложение (на lwip + ucos) работает минут 5, после чего начинает задерживаться при пингах, сбрасывать соединение TCP, возникают сообщения о расходе памяти lwip.
Если сделать поллингом и проверкой указателя буфера DMA, то всё работает на ура.

В чём может быть причина? Похоже на неправильную обработку прерывания. Однако системный таймер обрабатывается точно так же и не сбоит.
YAM
Цитата(andrewlekar @ Sep 13 2010, 14:02) *
Сделал приём Ethernet фреймов через прерывание и начались проблемы - приложение (на lwip + ucos) работает минут 5, после чего начинает задерживаться при пингах, сбрасывать соединение TCP, возникают сообщения о расходе памяти lwip.
Если сделать поллингом и проверкой указателя буфера DMA, то всё работает на ура.

В чём может быть причина? Похоже на неправильную обработку прерывания. Однако системный таймер обрабатывается точно так же и не сбоит.

Скачайте FreeRTOS. В папке FreeRTOS\Demo\CORTEX_LPC1768_IAR есть рабочий проект с испоьзованием Ethernet через прерывания. Я начинал с него, там все работает...
andrewlekar
Поглядел. Там прерывание используется довольно специфическим образом - если нет пакетов в течение определенного времени, то задача уходит в сон с ожиданием прерывания. Таким образом в штатной работе прерывания задействованы практически не будут. Получается, что в FreeRTOS используются оба способа обнаружения пакетов, что само по себе странно.
Визуально способ обработки прерывания Ethernet не отличается от моего, кроме того, что у меня ucos-II.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.