andrewlekar 0 13 сентября, 2010 Опубликовано 13 сентября, 2010 · Жалоба Сделал приём Ethernet фреймов через прерывание и начались проблемы - приложение (на lwip + ucos) работает минут 5, после чего начинает задерживаться при пингах, сбрасывать соединение TCP, возникают сообщения о расходе памяти lwip. Если сделать поллингом и проверкой указателя буфера DMA, то всё работает на ура. В чём может быть причина? Похоже на неправильную обработку прерывания. Однако системный таймер обрабатывается точно так же и не сбоит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YAM 0 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба Сделал приём Ethernet фреймов через прерывание и начались проблемы - приложение (на lwip + ucos) работает минут 5, после чего начинает задерживаться при пингах, сбрасывать соединение TCP, возникают сообщения о расходе памяти lwip. Если сделать поллингом и проверкой указателя буфера DMA, то всё работает на ура. В чём может быть причина? Похоже на неправильную обработку прерывания. Однако системный таймер обрабатывается точно так же и не сбоит. Скачайте FreeRTOS. В папке FreeRTOS\Demo\CORTEX_LPC1768_IAR есть рабочий проект с испоьзованием Ethernet через прерывания. Я начинал с него, там все работает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewlekar 0 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба Поглядел. Там прерывание используется довольно специфическим образом - если нет пакетов в течение определенного времени, то задача уходит в сон с ожиданием прерывания. Таким образом в штатной работе прерывания задействованы практически не будут. Получается, что в FreeRTOS используются оба способа обнаружения пакетов, что само по себе странно. Визуально способ обработки прерывания Ethernet не отличается от моего, кроме того, что у меня ucos-II. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться