Миландр
http://forum.milandr.ru/

Установлен флаг LEN_ERR в поле состояния приема пакета Eth
http://forum.milandr.ru/viewtopic.php?f=34&t=3792
Страница 1 из 1

Автор:  ЧумА [ 2017-ноя-22 17:19 ]
Заголовок сообщения:  Установлен флаг LEN_ERR в поле состояния приема пакета Eth

1986ВЕ1Т маркировка даты 1452. При чтении поля состояния приема пакета при приеме (см. Таблица 461 "спецификации") имеет место быть LEN_ERR = 1, т.е. "Признак несоответствия между реальной длиной и длинной указанной в поле длины – 13,14 октеты".
Код:
#define   ETH1_RAM_BASE   (MDR_ETHERNET1_BASE + 0x08000000)
uint16_t head = MDR_ETHERNET1->ETH_R_Head;
uint32_t *src = (uint32_t*)(ETH1_RAM_BASE + head);
uint16_t pack_err = (uint16_t)( *src >> 16 ); // считывается значение pack_err = 0x10

По факту пакеты приходят и стек uIP работает - есть ping и обмен по UDP.
Вопрос, что с этим фактом делать?

Автор:  Vasiliy [ 2018-янв-11 14:53 ]
Заголовок сообщения:  Re: Установлен флаг LEN_ERR в поле состояния приема пакета E

Поле EtherType (13,14 октет) может содержать либо тип пакета, либо его длину.
У меня на 4-й ревизии кристалла, флаг LEN_ERR выставляется, когда в поле передается тип пакета (0800 — IPv4, 0806 — ARP и т.д.), что наверное допустимо (ожидаемо).
Если обмениваться "сырыми" пакетами, там где в EtherType именно длина пакета, то флаг ошибки не выставлялся.

Полагаю, что флаг не сигнализирует о какой-либо проблеме и с этим фактом делать ничего не нужно.

Автор:  ЧумА [ 2018-янв-11 16:44 ]
Заголовок сообщения:  Re: Установлен флаг LEN_ERR в поле состояния приема пакета E

Спасибо, ещё бы эту информацию в "Спецификацию" ввести.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/