BALDA 0 25 февраля Опубликовано 25 февраля · Жалоба Коллеги подскажите.. использую стек LWIP на GD32f107. заметил такую особенность.. выставляю софтварный расчет контрольной суммы принятого ТСП пакета. в результате нет ни пинга не соединения по ТСП.. в чем проблема?? где то читал, что GD чипы глючат при расчете хардварно - контрольную сумму пакета.. так вот если выставить расчет кс хардварно - то из 10000 пакетов 1 таки битый Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Spider 0 26 февраля Опубликовано 26 февраля · Жалоба А в самом стеке то контролька считается? ethernetif_input() вызывается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 27 февраля Опубликовано 27 февраля · Жалоба Найти не могу, где реализовано в стеке софтварный расчет КС. да, вызывается, она стоит в теле: void MX_LWIP_Process(void) { /* USER CODE BEGIN 4_1 */ /* USER CODE END 4_1 */ ethernetif_input(&gnetif); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 27 февраля Опубликовано 27 февраля (изменено) · Жалоба 1 час назад, BALDA сказал: Найти не могу, где реализовано в стеке софтварный расчет КС. у меня в lwipopts.h стоит такое: Спойлер /* -------------------------------------- ---------- Checksum options ---------- -------------------------------------- */ /* The STM32 allows computing and verifying the IP, UDP, TCP and ICMP checksums by hardware: - To use this feature let the following define uncommented. - To disable it and process by CPU comment the the checksum. */ #define CHECKSUM_BY_HARDWARE #ifdef CHECKSUM_BY_HARDWARE /* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/ #define CHECKSUM_GEN_IP 0 /* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/ #define CHECKSUM_GEN_UDP 0 /* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/ #define CHECKSUM_GEN_TCP 0 /* CHECKSUM_GEN_ICMP==0: Generate checksums by hardware for outgoing ICMP packets.*/ #define CHECKSUM_GEN_ICMP 0 /* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/ #define CHECKSUM_CHECK_IP 0 /* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/ #define CHECKSUM_CHECK_UDP 0 /* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/ #define CHECKSUM_CHECK_TCP 0 /* CHECKSUM_CHECK_ICMP==0: Check checksums by hardware for incoming ICMP packets.*/ #define CHECKSUM_CHECK_ICMP 0 /* CHECKSUM_CHECK_ICMP6==1: Check checksums in software for incoming ICMPv6 packets*/ #define CHECKSUM_CHECK_ICMP6 0 #else /* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/ #define CHECKSUM_GEN_IP 1 /* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/ #define CHECKSUM_GEN_UDP 1 /* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/ #define CHECKSUM_GEN_TCP 1 /* CHECKSUM_GEN_ICMP==1: Generate checksums in software for outgoing ICMP packets.*/ #define CHECKSUM_GEN_ICMP 1 /* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/ #define CHECKSUM_CHECK_IP 1 /* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/ #define CHECKSUM_CHECK_UDP 1 /* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/ #define CHECKSUM_CHECK_TCP 1 /* CHECKSUM_CHECK_ICMP==1: Check checksums in software for incoming ICMP packets.*/ #define CHECKSUM_CHECK_ICMP 1 /* CHECKSUM_CHECK_ICMP6==1: Check checksums in software for incoming ICMPv6 packets*/ #define CHECKSUM_CHECK_ICMP6 1 #endif Дальше ищите в исходниках "CHECKSUM_GEN" и "CHECKSUM_CHECK". И не забывайте, что может работать или одно, или другое. То есть если вы включаете программный подсчет, то аппаратный обязаны выключить и наоборот. Изменено 27 февраля пользователем Сергей Борщ пропал исходник Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 27 февраля Опубликовано 27 февраля · Жалоба On 2/27/2024 at 12:17 PM, Сергей Борщ said: у меня в lwipopts.h стоит такое: Вы забыли вставить какое )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 27 февраля Опубликовано 27 февраля · Жалоба 4 минуты назад, dimka76 сказал: Вы забыли вставить какое )) Вставлял. Но когда оборачивал в сворачиваемую форму оно потерялось. Исправил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 27 февраля Опубликовано 27 февраля · Жалоба В 27.02.2024 в 12:17, Сергей Борщ сказал: у меня в lwipopts.h стоит такое: Дальше ищите в исходниках "CHECKSUM_GEN" и "CHECKSUM_CHECK".И не забывайте, что может работать или одно, или другое. То есть если вы включаете программный подсчет, то аппаратный обязаны выключить и наоборот. Спасибо дружище - помогло - пинг пошел. "CHECKSUM_GEN" и "CHECKSUM_CHECK" - это вроде не пригодилось.. TCP, UDP, принимаются- отправляются - понаблюдаю денек разницу с хардварной КС. /*----- Value in opt.h for CHECKSUM_GEN_IP: 1 -----*/ #define CHECKSUM_GEN_IP 1 /*----- Value in opt.h for CHECKSUM_GEN_UDP: 1 -----*/ #define CHECKSUM_GEN_UDP 1 /*----- Value in opt.h for CHECKSUM_GEN_TCP: 1 -----*/ #define CHECKSUM_GEN_TCP 1 /*----- Value in opt.h for CHECKSUM_GEN_ICMP: 1 -----*/ #define CHECKSUM_GEN_ICMP 1 /*----- Value in opt.h for CHECKSUM_GEN_ICMP6: 1 -----*/ #define CHECKSUM_GEN_ICMP6 1 /*----- Value in opt.h for CHECKSUM_CHECK_IP: 1 -----*/ #define CHECKSUM_CHECK_IP 1 /*----- Value in opt.h for CHECKSUM_CHECK_UDP: 1 -----*/ #define CHECKSUM_CHECK_UDP 1 /*----- Value in opt.h for CHECKSUM_CHECK_TCP: 1 -----*/ #define CHECKSUM_CHECK_TCP 1 /*----- Value in opt.h for CHECKSUM_CHECK_ICMP: 1 -----*/ #define CHECKSUM_CHECK_ICMP 1 /*----- Value in opt.h for CHECKSUM_CHECK_ICMP6: 1 -----*/ #define CHECKSUM_CHECK_ICMP6 1 /*-----------------------------------------------------------------------------*/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 1 марта Опубликовано 1 марта · Жалоба Коллеги, правильно ли я понял , при хардварном подсчете контрольной суммы эти настройки не имеют значения? что 0 что 1 при любом раскладе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Spider 0 1 марта Опубликовано 1 марта · Жалоба Да если речь о IP семействе, но! Не понятно как это будет работать в случае CRC Ethernet фрейма. Согласно документации Ethr CRC добавляется к пакету, т.е. если там будет уже CRC он и её посчитает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 1 марта Опубликовано 1 марта · Жалоба не понял, о каком CRC речь, какой то вне заголовков IP, TCPv4? поробую поставить родной STM.. не ужели так все плохо у этих GD... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Spider 0 1 марта Опубликовано 1 марта · Жалоба да точно так же как и у всех. Может стоит подтянуть матчасть, так сказать... Что такое Ethernet фрейм и что такой пакет и какие там CRC, а их там много, даже в одном фрейме Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 1 марта Опубликовано 1 марта · Жалоба а что там подтягивать 16 бит в ип пакете и 16 бит в тсп просвятите если я не прав?? (может реально я за 20 лет чегото забыл?) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Spider 0 3 марта Опубликовано 3 марта · Жалоба Ещё есть CRC у Ethernet фрейма Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 3 марта Опубликовано 3 марта · Жалоба Это который в самом конце?? Lwip обрабатывает его? Имею ввиду опции приведенные выше? Я так понял, что эти опции затрагивает только контр суммы заголовков Ip tcp, udp... В 01.03.2024 в 13:44, BALDA сказал: поробую поставить родной STM.. не ужели так все плохо у этих GD... Поставил вместо GD- STM, все как рукой сняло.. все эти танцы с бубном.. Причем и софтварный и хардварный метод. Что ж за ешкин кот... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Spider 0 4 марта Опубликовано 4 марта · Жалоба 21 hours ago, BALDA said: Lwip обрабатывает его? Имею ввиду опции приведенные выше? Боже ш ты мой.. А в чём проблема взять и посмотреть? Open Source же... В "штатном" понимании считается, что железка сама посчитает CRC эзернет фрейма. Но никто не запрещает этого делать софтово в рамках метода netif->linkoutput() 21 hours ago, BALDA said: Поставил вместо GD- STM, все как рукой сняло.. все эти танцы с бубном.. Я надеюсь не просто заменил проц, но и пересобрал код и перенастроил периферию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться