Перейти к содержанию
    

По ощущениям как-то очень недоволен как данная конструкция работает.

Изначально проект ST из куба не запустился на демоплате. Нашли пример работающий... Прикрутили.
В текущий момент ситуация выглядит так...

Компилю проект и запускаю его на целевой плате (IAR/STLink). Всё прекрасно работает. Если отключить отладчик - продолжает прекрасно работать.
Если после этого передёрнуть питание - не работает. Причём отваливается сразу ping. То есть где-то в самом низу...
PHY по виду работает. LINK видит.
Буду конечно ковыряться, но может кто-нибудь с таким сталкивался... Хоть наводку какую даст... Я что-то совсем туплю.
В чём разница?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ничего отсюда не поможет?
How to make Ethernet and lwIP working on STM32 - STMicroelectronics Community

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Они (ST) попытались все эти замечания устранить. Обновления вышли в августе 23. Но что-то пошло не так... ))
Меня больше интересует, какая разница при старте под дебагером и без оного?
Код тот же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

какая разница при старте под дебагером и без оного?

Может отладчик при запуске отладки прописывает какие-то регистры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, SapegoAL сказал:

Они (ST) попытались все эти замечания устранить. Обновления вышли в августе 23. Но что-то пошло не так... ))
Меня больше интересует, какая разница при старте под дебагером и без оного?
Код тот же.

Не запускается именно LwIP или проект вообще?  Если вообще не стартует- может с линкером что-то. А если именно LWiP - то может с инициализацией пинов (которые к PHY идут) хитрость. Ну и до кучи: может, там какой-то пин железячно не подключен как надо, и подключенный программатор помогает (ресет, или даже питание)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу всех прощения. Не чётко описал проблему.
Итак:
Проект значительный. Там куча всего. Включая внешнюю рам, флэш QSPI, 3 COM порта, Ethernet и прочее...
Написан по мотивам другого проекта на основе 32f407. Существенные отличия QSPI + TFT + SD.
Как надо работает SRAM + TFT + COM. Претензий нет.
По QSPI какие-то отличия есть при работе из под отладчика и при автономной работе... Пока не разбирался. Так как при автономной работе всё работает как ожидалось.

По Ethernet Наблюдается такая картина (на текущий момент):
При запуске из-под отладчика работает всё как ожидалось. То есть плата пингуется и работает TCP/MODBUS. Работает DHCP. UDP не проверял - просто руки не дошли, но поскольку это всё перенесено с прошлого проекта, то думаю проблем не будет.
Если я после запуска из-под stlink-а откидываю отладчик, то всё продолжает работать как надо без исключений.

После рестарта процессора (выключаю и включаю питание). Всё работает как работало, за исключением Ethernet. Не проходит ping ну и соответственно не работают остальные протоколы. Хотя физика работает. Вижу светодиод LINK отрабатывает и второй моргает на пакеты... Такое ощущение, что ARP на начальном этапе как-то съедается и всё. Сеть не знает о существовании моего устройства. ))

Буду сейчас возвращаться назад. Смотреть на каком этапе это произошло..

Но просто не могу понять. Один и тот же код... Что такого делает отладчик? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Раз остальное работает, начните с чтения регистров статистики PHY и MAC.

 

1 hour ago, SapegoAL said:

Что такого делает отладчик? 

Например, немного задерживает исполнение старт программы, в результате чего PHY успевает выйти из сброса.

Изменено пользователем aaarrr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, aaarrr said:

Например, немного задерживает исполнение программы, в результате чего PHY успевает выйти из сброса.

Вот, кстати, да. Я, например, помню когда ATXMega отлаживал, у меня наоборот PLL в 32МГц поднимался под отладкой, но отлично работало при штатном запуске.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, SapegoAL сказал:

Хотя физика работает. Вижу светодиод LINK отрабатывает и второй моргает на пакеты...

Буквально сегодня ночью собирал очередную плату F107 + LAN8720, симптомы были те же. Оказалось замыкание под LAN8720 между TXEN и TXD0. Сам LAN8720 при этом светил желтым и мигал зеленым светодиодом при втыкании кабеля. Так что со стороны проца может быть все, что угодно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Но просто не могу понять. Один и тот же код... Что такого делает отладчик? 

Много чего. Например - инитит регистры отладки и включает таймер DWT. Если этот таймер используется в коде, но не проинициализирован, то будут проблемы.

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


После рестарта процессора (выключаю и включаю питание).

Наверное нужно всё-таки проверить просто рестарт, а не вкл. питания? С помощью сигнала RESET и с помощью соответствущего регистра сброса ядра или WDT.

Если у вас инит регистров физики реализован криво, то он может не срабатывать из-за того, что физика ещё не закончила power-on reset. А вы уже пытаетесь в неё что-писать. Без контроля готовности. В этом случае после сброса по WDT или через ядро, старт должен быть нормальным, как из под отладчика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем за ответы. Перепроверю, что смогу... Мысли дельные.
Как минимум 2 комплекта работают. Тоже надо перепроверить. На предмет хитрого аппаратного хомута.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да. Всё правильно. Скорее всего инициализация PHY (DP83848) начиналась слишком быстро, а он ещё не вышел из сброса.
Поставил задержку  в начале задачи eth_init_task, и проблема решилась.
Надо будет вообще всю периферию просмотреть. Даташиты перечитать.

Всем огромное спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, SapegoAL said:

Поставил задержку  в начале задачи eth_init_task, и проблема решилась.
Надо будет вообще всю периферию просмотреть. Даташиты перечитать.

А у него что, нет какого-то флага готовности? Тупая задержка не всегда хорошее решение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, HardWareMan сказал:

А у него что, нет какого-то флага готовности? Тупая задержка не всегда хорошее решение.

Наверняка есть. Но это же документацию читать надо.  :wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...