Kot_Schrodingera 0 30 марта, 2018 Опубликовано 30 марта, 2018 · Жалоба Всем привет обывателям форума Имеется stm32f7, прикручен lwip Идет постоянный обмен с железкой(на железке поднят linux) При подключении через хаб, всё работает более или менее, но когда подключено "точка-точка" начинают сыпаться сообщения об retransmission.(Если кому понадобиться могу скинуть dump) Из dump видно, что теряется пакет, отсюда вопрос, как его можно отследить на stm32? При включении debug сыпется много сообщений, так как на сообщения тратиться время, retransmission пропадает, то есть по моим выводам lwip или драйвер eth не успевает что-либо делать И ещё один вопрос, для получения оптимальной скорости был впилен костыль в виде уменьшения времени вызова timer tmr до 1 ms(TCP_TMR_INTERVAL 1) - как это может повлиять на систему и LWIP, кроме как загрузки цп? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 30 марта, 2018 Опубликовано 30 марта, 2018 · Жалоба Кажется, здесь где-то сообщали, что драйвер Ethernet от STM кривой - не учитывает кеши у Cortex-M7. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kot_Schrodingera 0 30 марта, 2018 Опубликовано 30 марта, 2018 · Жалоба это конечно "приятная новость" а есть где-нибудь информация, как добавить учитывание кеша? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 30 марта, 2018 Опубликовано 30 марта, 2018 · Жалоба тык Забавно что в моем гугле это не искалось. Но на будущее поисковики великая сила. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 30 марта, 2018 Опубликовано 30 марта, 2018 · Жалоба Кто-то по недоразумению закинул топик в раздел Linux. Модераторы, не тормозите Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kot_Schrodingera 0 30 марта, 2018 Опубликовано 30 марта, 2018 · Жалоба Вообще, видимо увидели слово Linux Scifi, Вы были правы, убрал cache заработало, но то что скинул Kabdim, я использовал в ethernet драйвере, единственное я использовал функцию SCB_CleanInvalidateDCache() Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kot_Schrodingera 0 4 апреля, 2018 Опубликовано 4 апреля, 2018 (изменено) · Жалоба Но retransmission всё равно возникает И почему SCB_CleanInvalidateDCache() не помог? Перенес буферы приёма и передачи, дескрипторы в область DTCM, значительного улучшения не увидел Изменено 4 апреля, 2018 пользователем Kot_Schrodingera Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BioWolf2000 2 6 апреля, 2018 Опубликовано 6 апреля, 2018 · Жалоба Я правил файл stm32f7xx_hal_eth.c добавляя инструкцию __DSB(); heth->TxDesc = (ETH_DMADescTypeDef *)(heth->TxDesc->Buffer2NextDescAddr); } } ////////////////////// __DSB(); ///////////////////// /* When Tx Buffer unavailable flag is set: clear it and resume transmission */ if (((heth->Instance)->DMASR & ETH_DMASR_TBUS) != (uint32_t)RESET) { /* Clear TBUS ETHERNET DMA flag */ (heth->Instance)->DMASR = ETH_DMASR_TBUS; /* Resume DMA transmission*/ (heth->Instance)->DMATPDR = 0; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kot_Schrodingera 0 9 апреля, 2018 Опубликовано 9 апреля, 2018 · Жалоба Я правил файл stm32f7xx_hal_eth.c добавляя инструкцию __DSB(); Не помогает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться