короткие пакеты stm32

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
danone78
Встал на лапы
Сообщения: 82
Зарегистрирован: Вт фев 15, 2022 21:28:35

короткие пакеты stm32

Сообщение danone78 »

Всем привет, опять беда. Принимая по ethernet пакеты длиной менее 60 байт невозможно определить их точную длину. В возвращаемом дескрипторе они все минимум 60. Можно конечно узнать длину в поле длины принимаемого пакета, но это уже костыль. Для keep-alive соединения нужно, отлавливать аки с одним байтом.
Реклама
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

Re: короткие пакеты stm32

Сообщение AlanDrakes »

Код: Выделить всё

ETH->DMAOMR |= ETH_DMAOMR_FUGF;
Bit 6 FUGF: Forward undersized good frames
When this bit is set, the Rx FIFO forwards undersized frames (frames with no error and length less than 64 bytes) including pad-bytes and CRC). When this bit is cleared, the Rx FIFO drops all frames of less than 64 bytes, unless such a frame has already been transferred due to lower value of receive threshold (e.g., RTC = 01).
Нужно установить бит 6 регистра ETH DMA operation mode register, чтобы разрешить складывать в буфер пакеты длиной менее 64 байт.
Как минимум, попробуйте.

Вот тут обсуждался этот же вопорс и ссылку на флаг, который нужно установить.
Реклама
danone78
Встал на лапы
Сообщения: 82
Зарегистрирован: Вт фев 15, 2022 21:28:35

Re: короткие пакеты stm32

Сообщение danone78 »

Пробовал эту опцию, никакого эффекта. Но я тут прикинул, что если длина пакета в IP заголовке ошибочна, то контрольная сумма тоже, так что можно считать ее вполне себе валидной.
Ответить

Вернуться в «ARM»