doom13 0 15 января, 2020 Опубликовано 15 января, 2020 · Жалоба Приветствую. Есть ли какое-то событие/семафор/др. при срабатывании link up/down? Хочу сделать, чтобы задача спала, пока нет линка или засыпала, когда пропал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 15 января, 2020 Опубликовано 15 января, 2020 · Жалоба 1 hour ago, doom13 said: Хочу сделать, чтобы задача спала, пока нет линка или засыпала, когда пропал. Плохо, помню, но в LwIP 1.4.x делал низкоприоритетную задачу с поллингом в 500 мс. Она стучалась к фитеру, и запрашивала статус кабеля. Раз так сделал, то, видимо, не нашёл событя. Хотя, стоп! А стэк, вроде и не должен такое событие давать. Ведь о кабеле только PHY может сказать. А у неё прерываний нет... Или вы не о включенном/отключенном кабеле? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 15 января, 2020 Опубликовано 15 января, 2020 · Жалоба 7 minutes ago, haker_fox said: Плохо, помню, но в LwIP 1.4.x делал низкоприоритетную задачу с поллингом в 500 мс. Она стучалась к фитеру, и запрашивала статус кабеля. Раз так сделал, то, видимо, не нашёл событя. Спасибо, с этим понятно. Думал так делать, но пока пытаюсь понять. есть ли стандартная опция/возможность. 8 minutes ago, haker_fox said: Хотя, стоп! А стэк, вроде и не должен такое событие давать. Ведь о кабеле только PHY может сказать. А у неё прерываний нет... Или вы не о включенном/отключенном кабеле? Если кабель дёргать то сообщения в stdout кидает (если не ошибаюсь), поэтому решил, что оно само мониторит состояние сети и возможно есть какая-то возможность привязаться к данному событию. //netif.h #if LWIP_NETIF_LINK_CALLBACK /** This function is called when the netif link is set to up or down */ netif_status_callback_fn link_callback; #endif /* LWIP_NETIF_LINK_CALLBACK */ #if LWIP_NETIF_LINK_CALLBACK void netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback); #endif /* LWIP_NETIF_LINK_CALLBACK */ Такое вот нахожу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ksv198 0 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба 22 hours ago, haker_fox said: Ведь о кабеле только PHY может сказать. А у неё прерываний нет... Вот как раз у PHY обычно есть прерывания для события изменения состояния линка (например у KSZ8091 это регистр 0x1B). Заводите выход прерывания от PHY на ногу контроллера, ловите прерыание, шлёте семафор и отрабатываете callback функцию LwIP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба 1 hour ago, ksv198 said: Вот как раз у PHY обычно есть прерывания для события изменения состояния линка Возможно. Видимо просмотрел. Хотя мы использовали LAN8720, возможно у неё тоже есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба 7 hours ago, haker_fox said: Возможно. Встречается косяк на платах с сетевыми сэмплами в инете - нет проводка с выхода прерывания физики на мк. посему в примерах крутят поллинг так-же... не у всех хватает терпения перерыть регистры физики в ДШ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 17 января, 2020 Опубликовано 17 января, 2020 · Жалоба 2 hours ago, kolobok0 said: не у всех хватает терпения перерыть регистры физики в ДШ. Точно, хотя в моём случае мне дали готовое железо, и, как всегда, торопили со сроками. Сейчас посмотрел на даташит Lan8720, действительно увидел прерывания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться