реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> При запуске из отладчика программа работает, когда отключаешь и снова включаешь STM32 программа перестает работать
Alex_Golubev
сообщение Apr 5 2018, 03:41
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 18-03-17
Пользователь №: 95 877



Привет.
Контроллер STM32f429zi.
Столкнулся с такой проблемой, запускаешь программу из отладчика все работает (в частности USB), когда передергиваешь питание микроконтроллера программа начинает выполнится некорректно (отваливается USB).
Если запустить контроллер из отладчика IAR и сразу выключить отладчик (шнурок программатора-отладчика выдергиваю) не трогая питание STM32, то все нормально программа выполняется корректно.
Но если передернуть питание то опять все отвалилось.

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

Сообщение отредактировал Alex_Golubev - Apr 5 2018, 03:42
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 5 2018, 04:55
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Alex_Golubev @ Apr 5 2018, 06:41) *
Как можно найти причину этого?


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

Или еще может быть у Вас таблица прерываний (0 элемент - начальный адрес стека, 1 - точка входа) не в том месте расположены!
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 5 2018, 06:22
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Alex_Golubev @ Apr 5 2018, 06:41) *
Как можно найти причину этого?

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Alex_Golubev
сообщение Apr 5 2018, 06:48
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 18-03-17
Пользователь №: 95 877



Цитата
Куда грузится программа: ОЗУ или FLASH?
Не много не понял вопрос.
Но я загружаю программу во FLASH. Если вы говорите про BOOT0, то BOOT0 у меня на земле.

Сообщение отредактировал Alex_Golubev - Apr 5 2018, 06:58
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 5 2018, 07:08
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



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

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
SSerge
сообщение Apr 5 2018, 08:20
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(Alex_Golubev @ Apr 5 2018, 13:48) *
Не много не понял вопрос.
Но я загружаю программу во FLASH. Если вы говорите про BOOT0, то BOOT0 у меня на земле.

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


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Alex_Golubev
сообщение Apr 5 2018, 08:40
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 18-03-17
Пользователь №: 95 877



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

В общем из 100 мк. 10 шт. ведут себя вот так не понятно.
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 5 2018, 08:50
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Alex_Golubev @ Apr 5 2018, 11:40) *
Есть еще один интересный момент, который меня вгоняет в ступор.

Любая прошивка себя так ведет на этих МК, или только ваша?
Схемотехника плат в норме? Среди этих 100 плат эти 10 вообще рабочие (все компоненты правильные)?

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Baser
сообщение Apr 5 2018, 09:36
Сообщение #9


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(Alex_Golubev @ Apr 5 2018, 11:40) *
В общем из 100 мк. 10 шт. ведут себя вот так не понятно.

Вариантов много, один из них - забыта инициализация каких-либо переменных или регистров которые после подачи питания имеют случайное состояние.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Apr 5 2018, 10:38
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Еще вариант, который у себя наблюдал - медленно заводится внешний кварц, нужна была задержка.
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 5 2018, 10:46
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Alex11 @ Apr 5 2018, 13:38) *
Еще вариант, который у себя наблюдал - медленно заводится внешний кварц, нужна была задержка.

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Alex_Golubev
сообщение Apr 5 2018, 11:05
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 18-03-17
Пользователь №: 95 877



Цитата
по условию готовности генератора
у меня так и сделано.
Плюс у меня стоит внешней генератор на 16 МГц. На нем генерация в норме.
Заметил вот еще что.
Беру не рабочей мк. ставлю уровень оптимизации в IAR low вижу не работает мк. ставлю для этого же мк. уровень оптимизации high, size работает.
Но думаю надо поставить везде high и будит счастье.
А нет беру второй мк. а для него подходит уже low.
Чета ваще не чего не понятно.
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 5 2018, 11:12
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Alex_Golubev @ Apr 5 2018, 14:05) *
Но думаю надо поставить везде high и будит счастье.
А нет беру второй мк. а для него подходит уже low. Чета ваще не чего не понятно.

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

Прикрепленное изображение


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 5 2018, 11:22
Сообщение #14


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Если USB из Куба, то мне приходилось размер кучи увеличивать. А еще SysTick таймер программировать. Как оно у них работает, хрен поймешь.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Apr 5 2018, 12:36
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Alex_Golubev @ Apr 5 2018, 09:40) *
Есть еще один интересный момент, который меня вгоняет в ступор.
А именно, зашиваю эту же прошивку с помощью STM32 ST-LINK Utility в другой микроконтроллер и там такой проблемы нет. Беру еще один мк. там снова такая проблема беру другой ее нет.
В общем из 100 мк. 10 шт. ведут себя вот так не понятно.

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

В общем и целом опыт мой подсказывает, что чудес не бывает sad.gif . Если что-то ведет себя непредсказуемо и странно, за этим стоит вполне конкретная причина. Ищите!
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 19:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016