remixx 0 5 июля, 2019 Опубликовано 5 июля, 2019 (изменено) · Жалоба Пытаюсь запустить эзернет на 407, используя готовый модуль от waveshare. В кубе добавляю ETH по RMII, в настройках ввожу МАК и выставляю PHY Address в 1 (нашел в даташите для этого модуля) и больше ничего не трогаю. Подключаю к этому LWIP, в нем отключаю DHCP и руками задаю маску и шлюз роутера + вписываю свободный ip. Включаю UDP и больше ничего не трогаю. Собираю проект, в переменные добавляю структуру gnetif, а в бесконечном цикле функции для постоянной работы стека (ethernetif_input и sys_check_timeouts). После прошивки в контроллер плата по указанному ip не пингуется, а роутер не находит новое устройство с указанным маком. Перепроверил все подключения на правильность, прослушал контакты - все в порядке. Уже отчаялся, так и не могу понять в чем заключается проблема... Изменено 5 июля, 2019 пользователем remixx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба У вас где-то должна быть функция /** * LwIP initialization function */ void MX_LWIP_Init(void) { /* IP addresses initialization */ IP_ADDRESS[0] = IP_ADDRESS_0; IP_ADDRESS[1] = IP_ADDRESS_1; IP_ADDRESS[2] = IP_ADDRESS_2; IP_ADDRESS[3] = IP_ADDRESS_3; NETMASK_ADDRESS[0] = NETMASK_ADDRESS_0; NETMASK_ADDRESS[1] = NETMASK_ADDRESS_1; NETMASK_ADDRESS[2] = NETMASK_ADDRESS_2; NETMASK_ADDRESS[3] = NETMASK_ADDRESS_3; GATEWAY_ADDRESS[0] = GATEWAY_ADDRESS_0; GATEWAY_ADDRESS[1] = GATEWAY_ADDRESS_1; GATEWAY_ADDRESS[2] = GATEWAY_ADDRESS_2; GATEWAY_ADDRESS[3] = GATEWAY_ADDRESS_3; /* Initilialize the LwIP stack without RTOS */ lwip_init(); /* IP addresses initialization without DHCP (IPv4) */ IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]); IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1] , NETMASK_ADDRESS[2], NETMASK_ADDRESS[3]); IP4_ADDR(&gw, GATEWAY_ADDRESS[0], GATEWAY_ADDRESS[1], GATEWAY_ADDRESS[2], GATEWAY_ADDRESS[3]); /* add the network interface (IPv4/IPv6) without RTOS */ netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, ðernet_input); /* Registers the default network interface */ netif_set_default(&gnetif); if (netif_is_link_up(&gnetif)) { /* When the netif is fully configured this function must be called */ netif_set_up(&gnetif); } else { /* When the netif link is down this function must be called */ netif_set_down(&gnetif); } Которую вы должны вызвать в main() до wile(1) А так же должна быть функция настройки тактовой частоты /* Configure the system clock */ SysClock_Init(); SystemCoreClockUpdate(); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
remixx 0 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба 1 minute ago, dimka76 said: У вас где-то должна быть функция /** * LwIP initialization function */ void MX_LWIP_Init(void) { /* IP addresses initialization */ IP_ADDRESS[0] = IP_ADDRESS_0; IP_ADDRESS[1] = IP_ADDRESS_1; IP_ADDRESS[2] = IP_ADDRESS_2; IP_ADDRESS[3] = IP_ADDRESS_3; NETMASK_ADDRESS[0] = NETMASK_ADDRESS_0; NETMASK_ADDRESS[1] = NETMASK_ADDRESS_1; NETMASK_ADDRESS[2] = NETMASK_ADDRESS_2; NETMASK_ADDRESS[3] = NETMASK_ADDRESS_3; GATEWAY_ADDRESS[0] = GATEWAY_ADDRESS_0; GATEWAY_ADDRESS[1] = GATEWAY_ADDRESS_1; GATEWAY_ADDRESS[2] = GATEWAY_ADDRESS_2; GATEWAY_ADDRESS[3] = GATEWAY_ADDRESS_3; /* Initilialize the LwIP stack without RTOS */ lwip_init(); /* IP addresses initialization without DHCP (IPv4) */ IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]); IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1] , NETMASK_ADDRESS[2], NETMASK_ADDRESS[3]); IP4_ADDR(&gw, GATEWAY_ADDRESS[0], GATEWAY_ADDRESS[1], GATEWAY_ADDRESS[2], GATEWAY_ADDRESS[3]); /* add the network interface (IPv4/IPv6) without RTOS */ netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, ðernet_input); /* Registers the default network interface */ netif_set_default(&gnetif); if (netif_is_link_up(&gnetif)) { /* When the netif is fully configured this function must be called */ netif_set_up(&gnetif); } else { /* When the netif link is down this function must be called */ netif_set_down(&gnetif); } Которую вы должны вызвать в main() до wile(1) А так же должна быть функция настройки тактовой частоты /* Configure the system clock */ SysClock_Init(); SystemCoreClockUpdate(); Я так понимаю настройку тактовой частоты выполняет функция SystemClock_Config, после неё вызывается MX_LWIP_Init вместе с функциями инициализации портов и таймера, а уже после идет цикл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба 5 minutes ago, remixx said: Я так понимаю настройку тактовой частоты выполняет функция SystemClock_Config, после неё вызывается MX_LWIP_Init вместе с функциями инициализации портов и таймера, а уже после идет цикл. Да Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
remixx 0 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба 2 minutes ago, dimka76 said: Да Тогда все функции есть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба Посмотрите файл opt.h. Может там что-то подстроить надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
remixx 0 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба 5 minutes ago, dimka76 said: Посмотрите файл opt.h. Может там что-то подстроить надо. по конкретней бы( похоже что это файл настроек, которые в кубе находятся в LWIP->Key options, там не менял ничего в соответствии с теми уроками по которым собственно и делал этот проект Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Byte1024 0 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба 4 часа назад, remixx сказал: Пытаюсь запустить эзернет на 407, используя готовый модуль от waveshare Зачем изобретать велосипед, если если есть уже готовый проект, связывающий 407 контроллер с LAN8720. По-моему я его скачивал с сайта STM. Там заточено как под Standalone, так и под FreeRTOS. Проект рабочий - лично проверял (тоже после покупки демо-платок с 407VET6 и LAN8720 проверял работу связки и вникал в принцип Ethernet). Так что скачай готовый и залей в МК. Будет тебе счастье Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
remixx 0 5 июля, 2019 Опубликовано 5 июля, 2019 (изменено) · Жалоба 15 minutes ago, Byte1024 said: Зачем изобретать велосипед, если если есть уже готовый проект, связывающий 407 контроллер с LAN8720. По-моему я его скачивал с сайта STM. Там заточено как под Standalone, так и под FreeRTOS. Проект рабочий - лично проверял (тоже после покупки демо-платок с 407VET6 и LAN8720 проверял работу связки и вникал в принцип Ethernet). Так что скачай готовый и залей в МК. Будет тебе счастье сейчас буду разбираться может быть проблема даже не в самом коде, потому что после прошивки и подключения интернет кабеля на разъеме rj45 начинает гореть зеленый светодиод, это по идеи означает что соединение по локальной сети установлено. Может что-то мешает конкретно добавить новое устройство в сеть? Изменено 5 июля, 2019 пользователем remixx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Byte1024 0 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба Должен один светодиод светиться постоянно, а второй мигать хаотично. Но это не является гарантированой работой библиотеки LwIP. Платка должна по крайней мере пинговаться с ПК. https://www.element14.com/community/docs/DOC-51670/l/stm32f4dis-bb-discover-more-software-examples Вот ссылка на готовые 100% рабочие проекты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
remixx 0 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба 9 minutes ago, Byte1024 said: Должен один светодиод светиться постоянно, а второй мигать хаотично. Но это не является гарантированой работой библиотеки LwIP. Платка должна по крайней мере пинговаться с ПК. https://www.element14.com/community/docs/DOC-51670/l/stm32f4dis-bb-discover-more-software-examples Вот ссылка на готовые 100% рабочие проекты. скачал, но на работе нельзя ставить кейл (использую систем воркбенч), дома попробую запуститься) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Byte1024 0 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба Так в архиве под IAR есть проект (EWARM). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
remixx 0 5 июля, 2019 Опубликовано 5 июля, 2019 (изменено) · Жалоба 22 minutes ago, Byte1024 said: Так в архиве под IAR есть проект (EWARM). воркбенч тоже не видит их upd: тут недопонимание - я использую stm32systemworkbench) Изменено 5 июля, 2019 пользователем remixx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 5 июля, 2019 Опубликовано 5 июля, 2019 · Жалоба 8 hours ago, remixx said: Уже отчаялся, так и не могу понять в чем заключается проблема... Ваша основная проблема заключается в том, что вы свою работу свалили на плечи других. Вместо того, чтобы разобраться с lan8720, модулем MAC у STM'ки, вы используете куб, не понимая сути работы. В прошлом году запускал lan8720 + LPC4337. Прежде, чем всё заработало около недели шерстил даташит на phy'тер, документацию на стэк и модуль MAC. Большую помощь оказала программа wireshark. Конечно, разномастные примеры разной степени качества тоже оказали услугу. Но основную часть работы я делал сам. 7 hours ago, remixx said: по конкретней бы( Документацию на стек почитайте. Она в свободном доступе. Есть нюанс, если стэк одной из крайних версий, то документация может оказаться только для предыдущей версии. Запустите wireshark, оно позволит увидеть, ходят ли хоть какие-то пакеты, пусть битые, с кривой контрльной суммой. Но всё-таки это лучше, чем гадать на кофейной гуще. Кстати, эта прога помогла мне настроить стэк: в нём стояла опция аппаратного расчёта контрольных сумм, а LPC4337 это не поддерживал. Поменял опцию, и всё заработало))) Но до этого, как я написал. потратил около недели. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 6 июля, 2019 Опубликовано 6 июля, 2019 · Жалоба В 05.07.2019 в 09:30, remixx сказал: Пытаюсь запустить эзернет на 407, используя готовый модуль от waveshare. курите область Advanced parameters (ETH) в кубе сравнивайте эти данные с ДШ на 7820. По своим наблюдениям: там переменные, который куб подставляет по умолчанию, разнятся с ДШ. Сам помню часа 2 пыхтел - на отладочной плате заводилось на своей фиг. (могу ошибаться: где то маска не соответствовала) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться