Jump to content
    

Keil 5.25. 1986ВЕ1Т. Ethernet - произвольные остановки.

Добрый день, прошу помощи в пояснении проблемы.

Есть код, написанный в Keil 5.25, на микроконтроллер 1986ВЕ1Т.

В нем используются интерфейсы UART и Ethernet.

При работе с функциями относящимися к Ethernet, при Debuge по нажатию Run(F5) случаются остановки в случайных строках в коде(без точек останова),затем, если несколько раз так запускать в конечном итоге окажемся в HartFault_Hendlere.

Но если плату запускать без Debuga, а просто подачей питания, код выполняется корректно. Есть связь с ПК, могу пинговать, подключаться через терминал по Telnet, TCP. Отправлять и принимать данные.

А вот из под Debuga так не получается, выполнение все время останавается, от этого и не устанавливается соединение по Ethernet. Невозможно отлаживаться.

При работе только с UART ( при закоментированных вызовах функций относящихся к Ethernet) программа выполняется без ошибок из под Debuga(CMSIS-DAP Debugger) и без него.(Т.е. при подаче питания и загрузке МК). По F5 переходит к точкам останова, а при их отсутствии "крутится в while".

Прошу помощи разобраться, в чем может быть проблема?

Share this post


Link to post
Share on other sites

23 минуты назад, BadNonse сказал:

Прошу помощи разобраться, в чем может быть проблема?

Поменять эмулятор. Или кабель от платы до него. Или свойства подключения отладчика (частота и пр.). Или разводку дорожек к эмулятору на плате.

Проверить работу проекта на заведомо правильно изготовленной отладочной плате.

Share this post


Link to post
Share on other sites

2 минуты назад, jcxz сказал:

Поменять эмулятор. Или кабель от платы до него. Или свойства подключения отладчика (частота и пр.). Или разводку дорожек к эмулятору на плате.

Кабель меняли, платы менял ( есть своя, а есть борд от LDM_SYSTEMS с таким же МК), эмуляторов тоже 2, но правда одной и той же модели. Сейчас попробую изменить скорость.

Share this post


Link to post
Share on other sites

1 минуту назад, BadNonse сказал:

Сейчас попробую изменить скорость.

Скорость - на минимум. 2МГц или 4. Автоскорость - отключить.

Share this post


Link to post
Share on other sites

9 минут назад, jcxz сказал:

Скорость - на минимум. 2МГц или 4. Автоскорость - отключить.

Пробовал скорость от 500khz до 10mhz, ничего не меняется, все также, остановки с странных местах. Возможно это из-за таймера? И меня ещё смущает, что в обработку HardFault_Hendler нельзя поставить точку останова, исходя из этого , предполагаю, что процесс труда никогда не попадет.

Share this post


Link to post
Share on other sites

2 минуты назад, BadNonse сказал:

в обработку HardFault_Hendler нельзя поставить точку останова

Поставьте оптимизацию на минимум или вообще её отключите.

Share this post


Link to post
Share on other sites

27 минут назад, jcxz сказал:

Поставьте оптимизацию на минимум или вообще её отключитеп

При оптимизации default  или -O0 и скорости 20-50khz, через раз начал пинговаться, но все также хаотично останавливается.

И ещё вопрос, а какие правильные настройки должны быть у программатора? У меня работает только при Erase full chip + Program+Verify+Reset and Run.

Edited by BadNonse

Share this post


Link to post
Share on other sites

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

При работе с функциями относящимися к Ethernet, при Debuge по нажатию Run(F5) случаются остановки в случайных строках в коде(без точек останова),затем, если несколько раз так запускать в конечном итоге окажемся в HartFault_Hendlere.

Я бы грешил на переполнение стека. Запустите проверку заполняемости стека, например изначально заполнить 0xaa.

У меня работал 1986ВЕ1 нормально, одна проблема - памяти очень мало.

Cтек LwIP? Многозадачка или по тикам едет прием-передача?

Share this post


Link to post
Share on other sites

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

При оптимизации default  или -O0 и скорости 20-50khz, через раз начал пинговаться, но все также хаотично останавливается.

Ищите баги в своём коде.

Share this post


Link to post
Share on other sites

26.03.2022 в 14:12, BadNonse сказал:

в чем может быть проблема?

Читайте в errata про ошибку с ID = 0014.

26.03.2022 в 15:23, BadNonse сказал:

У меня работает только при Erase full chip + Program+Verify+Reset and Run.

Это особенность FLM из штатного пака. Есть другие, альтернативные, которые не требуют обязательного стирания всего чипа и умеют стирать внутреннюю флеш-память страницами по 4 кбайта, а не только всю полностью.

Share this post


Link to post
Share on other sites

1 час назад, Darth Vader сказал:

Читайте в errata про ошибку с ID = 0014.

Это особенность FLM из штатного пака. Есть другие, альтернативные, которые не требуют обязательного стирания всего чипа и умеют стирать внутреннюю флеш-память страницами по 4 кбайта, а не только всю полностью.

Спасибо большое, прочту по ошибку.

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.

×
×
  • Create New...