Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Неожиданная остановка приема по Ethernet
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Yarvi
Столкнулся со следующей проблемой.

Принимаю данные по Ethernet, по приему срабатывает прерывание.
Обрабатываю полученные данные и затем сбрасываю OWNERSHIP_BIT в каждом буфере, где размещался обработанный пакет, и выхожу из прерывания.

Пакеты идут потоком 40 пакетов/сек.
Так вот проблема - если для приема я использую 8 буферов по 128 байт, все работает как надо.
Если же увеличиваю количество буферов - 16, 32, 64, то прием достаточно быстро прекращается (1-3 сек).
Судя по регистру EMAC_RRE, пакеты принимаются, но не копируются в отведенную для них память и соответственно не вызывается прерывание.

Если кто подскажет в чем может быть дело, заранее большое спасибо.
Alexander___
Цитата(Yarvi @ Sep 7 2007, 18:08) *
Столкнулся со следующей проблемой.

Принимаю данные по Ethernet, по приему срабатывает прерывание.
Обрабатываю полученные данные и затем сбрасываю OWNERSHIP_BIT в каждом буфере, где размещался обработанный пакет, и выхожу из прерывания.

Пакеты идут потоком 40 пакетов/сек.
Так вот проблема - если для приема я использую 8 буферов по 128 байт, все работает как надо.
Если же увеличиваю количество буферов - 16, 32, 64, то прием достаточно быстро прекращается (1-3 сек).
Судя по регистру EMAC_RRE, пакеты принимаются, но не копируются в отведенную для них память и соответственно не вызывается прерывание.

Если кто подскажет в чем может быть дело, заранее большое спасибо.


А в EMAC_RSR какие при этом флаги получаются?
Yarvi
Проблема локализовалась в некоторую другую, а именно:

при приеме в случайный момент времени в устройстве происходит сброс, пропадает соединение с компом по сети. Далее программа исполняется с начала, однако почему то не перестают вызываться прерывания и от таймера и прерывания по приему.

то ессть два вопроса:

1. Почему может происходить сброс во время приема?
2. Почему исполняясь заново программа перестает уходить на прерывания?

Буду очень благодарен, если вдруг у кого то есть какие то мысли.
aaarrr
Цитата(Yarvi @ Sep 13 2007, 15:19) *
2. Почему исполняясь заново программа перестает уходить на прерывания?

Такое может наблюдаться, если срабатывает WatchDog и установлен бит WDRPROC в WDT_MR,
или программа просто улетает по нулевому адресу из прерывания - AIC заклинит.
_dem
1. Почему может происходить сброс во время приема?

Кроме того, причин может быть много - очень часто data abort или (если используется OS) - выход за пределы стека задачи
Usama79
ARM9200 help.gif
Проблема с приемом пакетов Ethernet :
Для приема есть 4 буфера. После приема 1-го пакета все нормально - регистр RBQP указывает на адрес второго буфера в списке. После приема 2-го пакета RBQP почему-то не переходит на 3-й буфер а перепрыгивает опять на первый. Биты Wrap в списке указателей сброшены, кроме (понятно) 4-го
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.