реклама на сайте
подробности

 
 
> RangeError в RxStatus на LPC1768, Во всех принимаемых пакетах выставлен флаг RangeError
codier
сообщение Jan 25 2011, 12:47
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 21-01-05
Пользователь №: 2 113



Здравствуйте! Разбираюсь с Ethernet-ом на контроллере LPС1768. Опыта работы с EMAC на других контроллерах не имею. Сделал инициализацию EMAC, PHY и т.д., пытаюсь принимать фреймы, вроде всё работает, но во всех фреймах в RxStatus выставлен бит ошибки RangeError. Читаю документацию и не понимаю что это такое sad.gif

Как я понимаю, RangeError должен выставиться если длина пакета не совпадает с максимальной длиной фрейма, который EMAC может принять, но MAXF выставлен в 1536, а ARP пакеты, на которых я проверяю явно меньше.

Может кто сталкивался с подобным?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
andrewlekar
сообщение Jan 26 2011, 05:13
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Вот что сказано в даташите:

The EMAC doesn't distinguish the frame type and frame length, so, e.g. when the IP(0x8000) or
ARP(0x0806) packets are received, it compares the frame type with the max length and gives the "Length
out of range" error. In fact, this bit is not an error indication, but simply a statement by the chip regarding the
status of the received frame.

Я, соответственно, отключил реакцию на Length Range Error.
Go to the top of the page
 
+Quote Post
codier
сообщение Jan 27 2011, 15:12
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 21-01-05
Пользователь №: 2 113



2 andrewlekar:

Уже разобрался, но спасибо! Я даташиту тоже читал, но в упор не видел сути написанного :-)

Вообще, глупость какая-то получается. В Ethernet фрейме поле type/length одно и как его использовать определяет пользователь - допустим. Но если такая свобода заложена в протоколе, то почему нельзя было сделать отключаемой проверку этой ошибки? Это при том, что массовое применение (TCP/IP) использует это поле именно в type режиме. А получается, что все IP пакеты метятся как RangeError и обобщённый флаг Error по сути не работает.

Ладно.. переживём :-)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01341 секунд с 7
ELECTRONIX ©2004-2016