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

При запуске из отладчика программа работает, когда отключаешь и снова включаешь STM32 программа перестает работать

Привет.

Контроллер STM32f429zi.

Столкнулся с такой проблемой, запускаешь программу из отладчика все работает (в частности USB), когда передергиваешь питание микроконтроллера программа начинает выполнится некорректно (отваливается USB).

Если запустить контроллер из отладчика IAR и сразу выключить отладчик (шнурок программатора-отладчика выдергиваю) не трогая питание STM32, то все нормально программа выполняется корректно.

Но если передернуть питание то опять все отвалилось.

 

Как можно найти причину этого?

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

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


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

Как можно найти причину этого?

 

Если стартовать при помощи отладчика - происходит задержка, пока отладчик подключается, причина может быть в этом.

 

Или еще может быть у Вас таблица прерываний (0 элемент - начальный адрес стека, 1 - точка входа) не в том месте расположены!

 

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


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

Куда грузится программа: ОЗУ или FLASH?
Не много не понял вопрос.

Но я загружаю программу во FLASH. Если вы говорите про BOOT0, то BOOT0 у меня на земле.

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

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


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

Создайте пустой новый проект в любимой среде, который, например, тупо моргает какой-нить лампочкой на плате.

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

Если удается, то постепенно добавляйте в этот проект исходники и вашего глючного проекта.

Цель - найти то место в ваших кодах, которые приводят к описанной проблеме.

 

зы. Подобный принцип поиска косяков годится для любой отрасли деятельности :)

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


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

Не много не понял вопрос.

Но я загружаю программу во FLASH. Если вы говорите про BOOT0, то BOOT0 у меня на земле.

Симптомы указывают на неправильное положение таблицы векторов. Надо смотреть что там в файле .icf

 

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


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

Есть еще один интересный момент, который меня вгоняет в ступор.

А именно, зашиваю эту же прошивку с помощью STM32 ST-LINK Utility в другой микроконтроллер и там такой проблемы нет. Беру еще один мк. там снова такая проблема беру другой ее нет.

 

В общем из 100 мк. 10 шт. ведут себя вот так не понятно.

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


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

Есть еще один интересный момент, который меня вгоняет в ступор.

Любая прошивка себя так ведет на этих МК, или только ваша?

Схемотехника плат в норме? Среди этих 100 плат эти 10 вообще рабочие (все компоненты правильные)?

 

В такой ситуации может быть масса причин и выяснить это можно лишь локализовав причину, хотя бы грубо: железо или софт.

Выше я описал как это можно сделать, не гадая на "кофейной гуще" и т. п. мифических предположениях.

 

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


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

В общем из 100 мк. 10 шт. ведут себя вот так не понятно.

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

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


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

Еще вариант, который у себя наблюдал - медленно заводится внешний кварц, нужна была задержка.

 

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


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

Еще вариант, который у себя наблюдал - медленно заводится внешний кварц, нужна была задержка.

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

 

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


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

по условию готовности генератора
у меня так и сделано.

Плюс у меня стоит внешней генератор на 16 МГц. На нем генерация в норме.

Заметил вот еще что.

Беру не рабочей мк. ставлю уровень оптимизации в IAR low вижу не работает мк. ставлю для этого же мк. уровень оптимизации high, size работает.

Но думаю надо поставить везде high и будит счастье.

А нет беру второй мк. а для него подходит уже low.

Чета ваще не чего не понятно.

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


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

Но думаю надо поставить везде high и будит счастье.

А нет беру второй мк. а для него подходит уже low. Чета ваще не чего не понятно.

Тут есть два варианта:

1) переписать нормально код, изучая соотв. литературу и мануалы

2) воспользоваться бубном :smile3046:

 

post-2831-1522927038_thumb.jpg

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


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

Если USB из Куба, то мне приходилось размер кучи увеличивать. А еще SysTick таймер программировать. Как оно у них работает, хрен поймешь.

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


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

Есть еще один интересный момент, который меня вгоняет в ступор.

А именно, зашиваю эту же прошивку с помощью STM32 ST-LINK Utility в другой микроконтроллер и там такой проблемы нет. Беру еще один мк. там снова такая проблема беру другой ее нет.

В общем из 100 мк. 10 шт. ведут себя вот так не понятно.

Мне приходят в голову следующие вещи, из моего опыта.

Первая: при работе отладчика им запускается DWT счетчик. Если в коде он используется для отсчета каких-либо задержек (почему и как именно - писано на форуме много), а код забывает его проинициализировать, то под отладчиком (или после вываливания из отладки) будет все работать, т.к. DWT тикает, но при запуске после сброса - нет.

Вторая: отладчик стартует медленно; за это время может успеть пройти инициализация периферии, которая не успевает при холодном старте без отладчика. У меня это было что-то тактируемое медленными генераторами (RTC) и, кажется, I2C, не помню точно.

 

В общем и целом опыт мой подсказывает, что чудес не бывает :( . Если что-то ведет себя непредсказуемо и странно, за этим стоит вполне конкретная причина. Ищите!

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


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

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

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

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

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

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

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

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

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

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