Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Cетевые протоколы и технологии

Cетевые протоколы и технологии TCP/IP стек

Ответ
 
Опции темы Опции просмотра
Старый 01.06.2012, 08:42   #1
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 54
Сообщений: 979
Вес репутации: 2077/65
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию UDP without trailer , т.е. без добавления пакета до 60байт незначащими нулями

Как сформировать используя Микрочиповский стек на контроллере PIC18F97J60 UDP пакет без trailer, т.е. без лишних нулей которые дополняют пакет до 60 или 64 байт.
Проблема проявляется в том, что не все устройства желают работать, если есть эти самые лишние байты. Хотя в UDP пакете в заголовке указано сколько байт нужно забрать из буфера, не все устройства это понимают, в частности Flatpack.
Устройство адекватно реагирует на пакеты без trailer , а на пакеты от моего устройства на PIC18f97J60 отвечает ошибкой.
Как сформировать пакет UDP without trailer?
smart_pic вне форума   Ответить с цитированием
Старый 03.08.2012, 10:17   #2
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 39
Сообщений: 4,477
Вес репутации: 4370/122
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: UDP without trailer , т.е. без добавления пакета до 60байт незначащими нулями

Тоже ковыряю Ethernet, перевел DataSheet на автономный контроллер ENC28J60, но нигде не встретил слова "trailer". То, о чем вы говорите, называется "padding" и для вашего PIC18F97J60 задается в регистре MACON3: MAC CONTROL REGISTER 3.
bit 7-5 PADCFG2:PADCFG0: Automatic Pad and CRC Configuration bits.
000 = No automatic padding of short frames
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 05.08.2012, 13:49   #3
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 54
Сообщений: 979
Вес репутации: 2077/65
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: UDP without trailer , т.е. без добавления пакета до 60байт незначащими нулями

Да, я это немного различия в терминологии. Если применительно к программе Wireshark , так там этот довесок так и называется trailer.

Применительно к микрочиповскому стеку , мне не удалось слать пакеты короче 60 байт. Стек переставал работать. По разному комбинировал указанные биты
smart_pic вне форума   Ответить с цитированием
Старый 27.10.2014, 09:19   #4
ДимычЪ
Senior Member
 
Аватар для ДимычЪ
 
Регистрация: 08.01.2010
Возраст: 30
Сообщений: 117
Вес репутации: 109/34
ДимычЪ will become famous soon enoughДимычЪ will become famous soon enough
По умолчанию Re: UDP without trailer , т.е. без добавления пакета до 60байт незначащими нулями

День добрый, решил ли кто данную проблему?

я пытаюсь отправить PADI пакет, но сервер на него не реагирует, если смотреть в винде, то там длинна пакета 32 байт (или 36 забыл),
а в моём случае данные точно такие же, но 60 байт, от 32 до 60 забивается нулями.

проц pic32mx675f512h

Пробовал отключать PADENABLE, но тогда пакеты вобще перестают отправлятся...
ДимычЪ вне форума   Ответить с цитированием
Старый 27.10.2014, 09:50   #5
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 54
Сообщений: 979
Вес репутации: 2077/65
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: UDP without trailer , т.е. без добавления пакета до 60байт незначащими нулями

Проблема решилась.
Но проблема была не только в незначащих нулях, которые добавляются в PIC18F97J60, а еще я не точно понимал алгоритм работы железа с которым конектился.
После того как полностью въехал в алгоритм , и с незначащими нулями железка стала работать.
Железо - это контроллеры заряда батарей для сотовой связи.

А загнать ПИК в режим без нулей не удалось.
smart_pic вне форума   Ответить с цитированием
Старый 27.10.2014, 10:26   #6
ДимычЪ
Senior Member
 
Аватар для ДимычЪ
 
Регистрация: 08.01.2010
Возраст: 30
Сообщений: 117
Вес репутации: 109/34
ДимычЪ will become famous soon enoughДимычЪ will become famous soon enough
По умолчанию Re: UDP without trailer , т.е. без добавления пакета до 60байт незначащими нулями

а какая у вас проблема была с алгоритмом? может у меня что-то подобное?

..получается переключать только 60 или 64 байта пакет

хе, заряд я не делал, но контроль напряжения и температуры каждой банки с передачей данных по сети, было как-то :-)

Последний раз редактировалось ДимычЪ; 27.10.2014 в 10:39.
ДимычЪ вне форума   Ответить с цитированием
Старый 27.10.2014, 12:09   #7
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 54
Сообщений: 979
Вес репутации: 2077/65
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: UDP without trailer , т.е. без добавления пакета до 60байт незначащими нулями

Оборудование FLATPACK .
В стеке протоколов доработал
Код:
  ***************************************************************************/
static BOOL ARPPut(ARP_PACKET* packet)
{
    while(!MACIsTxReady());
    MACSetWritePtr(BASE_TX_ADDR);
    

    packet->HardwareType  = HW_ETHERNET;
    packet->Protocol      = ARP_IP;
    packet->MACAddrLen    = sizeof(MAC_ADDR);
    packet->ProtocolLen   = sizeof(IP_ADDR);
    memcpy(&packet->SenderMACAddr, (void*)&AppConfig.MyMACAddr, sizeof(packet->SenderMACAddr)); //sizeof(packet->SenderMACAddr) = 6 байт
    packet->SenderIPAddr  = AppConfig.MyIPAddr;

    SwapARPPacket(packet);

// это формируется правильно
    MACPutHeader(&packet->TargetMACAddr, MAC_ARP, sizeof(*packet));        // sizeof(*packet) =1С  28байт

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// принудительно устанавливаем в 00 TargetMACAddr . В стеке он почемуто заполняется FF
    memset(&packet->TargetMACAddr, 0x00, sizeof(MAC_ADDR));        //
// -----------------------------------------------------------------------------------
И еще у меня неправильно поля запроса для FLATCK заполнял
smart_pic вне форума   Ответить с цитированием
Старый 27.10.2014, 12:56   #8
ДимычЪ
Senior Member
 
Аватар для ДимычЪ
 
Регистрация: 08.01.2010
Возраст: 30
Сообщений: 117
Вес репутации: 109/34
ДимычЪ will become famous soon enoughДимычЪ will become famous soon enough
По умолчанию Re: UDP without trailer , т.е. без добавления пакета до 60байт незначащими нулями

немного не то, вот у меня пакет формируется, по типу как арп
Код:
typedef struct _PPPoE_HEADER
{
    BYTE    VerType;
    BYTE    Code;
    WORD    SessionID;
    WORD    Length;
    WORD    TagType;
    WORD    TagLength;
} PPPoE_HEADER;

// Бродкаст пакет на поиск PPPoE сервера
void PPPoEPutDiscoverer(void)
{
    PPPoE_HEADER header;
    MAC_ADDR broadcast;

    PPPoE_HeaderLen = sizeof(IP_HEADER);

    header.VerType = (PPPoE_TYPE << 4) | PPPoE_VERSION;
    header.Code = PPPoE_CODE_PADI;
    header.SessionID = 0x0000;
    header.Length = 0x0400; // Обратный порядок байт
    header.TagType = 0x0301; // Host-Uniq
    header.TagLength = 0x0000;

    // тут добавлял различные теги, в том числе размеры тега подгонял, чтоб общая длина пакета была равно 60 байт

    memset(broadcast.v, 0xFF, 6);

    while(!IPIsTxReady());
    MACSetWritePtr(BASE_TX_ADDR);

    // Функция переписана под EtherType 2 байта, МAC_PPPoE_DIS=0x6388
    MACPutHeader(&broadcast, MAC_PPPoE_DIS, (sizeof(header))); 

    MACPutArray((BYTE*)&header, sizeof(header));

    MACFlush();
}
но пока сервер не хавает, wireshark определяет в этом PADI верный пакет... а сервер нет
ДимычЪ вне форума   Ответить с цитированием
Старый 27.10.2014, 14:13   #9
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 54
Сообщений: 979
Вес репутации: 2077/65
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: UDP without trailer , т.е. без добавления пакета до 60байт незначащими нулями

Цитата:
Сообщение от ДимычЪ Посмотреть сообщение
немного не то
но пока сервер не хавает, wireshark определяет в этом PADI верный пакет... а сервер нет
Я смотрел обмен между FLATPACK и его стандартной прогой.
А затем подсовывал ему обмен с ПИКом.
В конце концов получилось, а проект закрыли и я не стал копать в эту сторону.
До чего дошел то и выложил.
Еще получалось , что железо работая по UDP , ориентируется на прием пакетов заранее определенной длины.
smart_pic вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 07:05.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot