BadNonse 0 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба Добрый день, прошу помощи в пояснении проблемы. Есть код, написанный в 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". Прошу помощи разобраться, в чем может быть проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба 23 минуты назад, BadNonse сказал: Прошу помощи разобраться, в чем может быть проблема? Поменять эмулятор. Или кабель от платы до него. Или свойства подключения отладчика (частота и пр.). Или разводку дорожек к эмулятору на плате. Проверить работу проекта на заведомо правильно изготовленной отладочной плате. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BadNonse 0 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба 2 минуты назад, jcxz сказал: Поменять эмулятор. Или кабель от платы до него. Или свойства подключения отладчика (частота и пр.). Или разводку дорожек к эмулятору на плате. Кабель меняли, платы менял ( есть своя, а есть борд от LDM_SYSTEMS с таким же МК), эмуляторов тоже 2, но правда одной и той же модели. Сейчас попробую изменить скорость. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба 1 минуту назад, BadNonse сказал: Сейчас попробую изменить скорость. Скорость - на минимум. 2МГц или 4. Автоскорость - отключить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BadNonse 0 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба 9 минут назад, jcxz сказал: Скорость - на минимум. 2МГц или 4. Автоскорость - отключить. Пробовал скорость от 500khz до 10mhz, ничего не меняется, все также, остановки с странных местах. Возможно это из-за таймера? И меня ещё смущает, что в обработку HardFault_Hendler нельзя поставить точку останова, исходя из этого , предполагаю, что процесс труда никогда не попадет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба 2 минуты назад, BadNonse сказал: в обработку HardFault_Hendler нельзя поставить точку останова Поставьте оптимизацию на минимум или вообще её отключите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BadNonse 0 26 марта, 2022 Опубликовано 26 марта, 2022 (изменено) · Жалоба 27 минут назад, jcxz сказал: Поставьте оптимизацию на минимум или вообще её отключитеп При оптимизации default или -O0 и скорости 20-50khz, через раз начал пинговаться, но все также хаотично останавливается. И ещё вопрос, а какие правильные настройки должны быть у программатора? У меня работает только при Erase full chip + Program+Verify+Reset and Run. Изменено 26 марта, 2022 пользователем BadNonse Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 79 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба 4 часа назад, BadNonse сказал: При работе с функциями относящимися к Ethernet, при Debuge по нажатию Run(F5) случаются остановки в случайных строках в коде(без точек останова),затем, если несколько раз так запускать в конечном итоге окажемся в HartFault_Hendlere. Я бы грешил на переполнение стека. Запустите проверку заполняемости стека, например изначально заполнить 0xaa. У меня работал 1986ВЕ1 нормально, одна проблема - памяти очень мало. Cтек LwIP? Многозадачка или по тикам едет прием-передача? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 26 марта, 2022 Опубликовано 26 марта, 2022 · Жалоба 4 часа назад, BadNonse сказал: При оптимизации default или -O0 и скорости 20-50khz, через раз начал пинговаться, но все также хаотично останавливается. Ищите баги в своём коде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 6 апреля, 2022 Опубликовано 6 апреля, 2022 · Жалоба 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 кбайта, а не только всю полностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BadNonse 0 6 апреля, 2022 Опубликовано 6 апреля, 2022 · Жалоба 1 час назад, Darth Vader сказал: Читайте в errata про ошибку с ID = 0014. Это особенность FLM из штатного пака. Есть другие, альтернативные, которые не требуют обязательного стирания всего чипа и умеют стирать внутреннюю флеш-память страницами по 4 кбайта, а не только всю полностью. Спасибо большое, прочту по ошибку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться