Jump to content

    
sonycman

STM32MP151

Recommended Posts

Эта плата (MYD-YA15XC-T) с завода была прошита старой прошивкой (апрельской вроде), которая в стэндбай вообще не могла войти, зависала после команды echo mem > /sys/power/state (или systemctl standby), после чего ресетилась ватчдогом через 30 секунд.

Прошил на их последний образ - заработало, значит, исправили какие-то косяки. Но, видимо, не до конца. 

Хотя уже собрал и прошил последнюю версию загрузчиков и ядра с гитхаба...

Share this post


Link to post
Share on other sites

Разобрался вроде с тормозами при пробуждении ото сна и заодно решилась проблема отвала сети.

Виноват был "прикрученный" через заднее место ethernet phy AR8035.

 

Китайцы почему то вместо допиливания существующего драйвера phy для него, который сразу не заводится, его совсем выкинули, и прикрутили свой патч-код через вызов phy_register_fixup() (аж два микро модуля ядра регистрируют абсолютно одинаковый код!).

Но этот фиксап не вызывается после пробуждения ото сна, что приводит к неработоспособности phy и отвалу сети.

 

Выкинул этот китайский код нафиг, подправил драйвер phy и DT (дерево устройств), изменив опцию rgmii на rgmii-id, чтобы активировались задержки клоков, и всё заработало как положено.

 

А ещё китайцы не смогли (или не захотели разобраться, как правильно) добавить пин сброса для этого-же многострадального ethernet phy, из-за чего сброс тоже не работал после пробуждения.

Блин - там же в драйвере stmmac есть опция в DT специально для этого! Правда, немного кривая - работала тоже только один раз, но это быстро исправляется.

 

Share this post


Link to post
Share on other sites

Был ещё нюанс с этой весёлой связкой - стшный GMAC и атеросовское PHY.

Для сброса при инициализации DMA, gmac требует наличия всех клоков, в том числе клока RX от phy. Которого нет, если не вставлен кабель или просто прошло какое-то время. Экономия энергии, мать её за ногу.

Тут то ли не подумали ST, то ли Atheros, но фишка не отключаемая с обеих сторон, похоже.

Сетевой драйвер устанавливает бит сброса и ждёт, пока он сбросится - а клока RX нет, и через секунду срабатывает таймаут и привет отвал ethernet.

 

Китайцы просто выкинули проверку на таймаут из драйвера - он, как ни странно, работает дальше и так, но иногда плохо и автоматически ресетится через несколько секунд.

После того, как я "починил" сброс phy, эта проблема вроде ушла. После сброса он, видимо, подаёт какое-то время клок и мак успевает прогнать инициализацию.

 

Теперь после сна плата просыпается за 150мс, а после глубокого сна (с отключением питания) - за 500 с копейками (долго поднимается USB, возможно, опять китайцы виноваты).

Но в USB пока не полезу, ну его нафиг :)

Share this post


Link to post
Share on other sites
10 часов назад, sonycman сказал:

с отключением питания) - за 500 с

В смысле 8 минут???  Я правильно понимаю?

10 часов назад, sonycman сказал:

или не захотели разобраться, как правильно

А зачем им это, наде железку продавать, желательно сотнями тысяч штук, а с этим и вы разберетесь)))

Share this post


Link to post
Share on other sites
28 minutes ago, mantech said:

В смысле 8 минут???  Я правильно понимаю?

Думаете, слишком много? :crazy: Миллисекунд, конечно.

Кстати, функция msleep (и ей подобные) работают очень весело в линуксе.

В драйвере мак таймаут сброса работает как периодический опрос регистра dma с паузой 10мс (msleep(10)) в цикле 100 раз.

При пробуждении ото сна этот таймаут срабатывает идеально за 1 секунду.

 

А вот при загрузке системы, когда много параллельных задач, этот же таймаут растягивается почти на 3 (!) секунды!

Заменил msleep на readl_poll_timeout, которая обеспечивает точное время не зависимо от загрузки.

37 minutes ago, mantech said:

А зачем им это, наде железку продавать, желательно сотнями тысяч штук, а с этим и вы разберетесь)))

Да, не говорите, у них куча различных плат на сайте, по несколько версий уже, а софт сбит из костылей.

Железячники, видимо, хорошие, а программисты студенты одни...

Share this post


Link to post
Share on other sites
2 часа назад, sonycman сказал:

Думаете, слишком много?

Да кто его знает))))))  Тут принесли безналичный терминал, так он около 150 сек загружается, уже устаю ждать...

2 часа назад, sonycman сказал:

Железячники, видимо, хорошие, а программисты студенты одни...

Просто стиль бизнеса такой, нужны хорошие спецы по железу и какие-то программисты, чтоб просто проверить работоспособность плат, ничего сверхестественного от них и не нужно.

Edited by mantech

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.