Alex_Golubev 0 5 апреля, 2018 Опубликовано 5 апреля, 2018 (изменено) · Жалоба Привет. Контроллер STM32f429zi. Столкнулся с такой проблемой, запускаешь программу из отладчика все работает (в частности USB), когда передергиваешь питание микроконтроллера программа начинает выполнится некорректно (отваливается USB). Если запустить контроллер из отладчика IAR и сразу выключить отладчик (шнурок программатора-отладчика выдергиваю) не трогая питание STM32, то все нормально программа выполняется корректно. Но если передернуть питание то опять все отвалилось. Как можно найти причину этого? Изменено 5 апреля, 2018 пользователем Alex_Golubev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Как можно найти причину этого? Если стартовать при помощи отладчика - происходит задержка, пока отладчик подключается, причина может быть в этом. Или еще может быть у Вас таблица прерываний (0 элемент - начальный адрес стека, 1 - точка входа) не в том месте расположены! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Как можно найти причину этого? Куда грузится программа: ОЗУ или FLASH? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 5 апреля, 2018 Опубликовано 5 апреля, 2018 (изменено) · Жалоба Куда грузится программа: ОЗУ или FLASH? Не много не понял вопрос. Но я загружаю программу во FLASH. Если вы говорите про BOOT0, то BOOT0 у меня на земле. Изменено 5 апреля, 2018 пользователем Alex_Golubev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Создайте пустой новый проект в любимой среде, который, например, тупо моргает какой-нить лампочкой на плате. Этот проект должен запускаться без отладчика. Если не удается этого добиться, то проблема где-то в железе или настройках среды. Если удается, то постепенно добавляйте в этот проект исходники и вашего глючного проекта. Цель - найти то место в ваших кодах, которые приводят к описанной проблеме. зы. Подобный принцип поиска косяков годится для любой отрасли деятельности :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Не много не понял вопрос. Но я загружаю программу во FLASH. Если вы говорите про BOOT0, то BOOT0 у меня на земле. Симптомы указывают на неправильное положение таблицы векторов. Надо смотреть что там в файле .icf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Есть еще один интересный момент, который меня вгоняет в ступор. А именно, зашиваю эту же прошивку с помощью STM32 ST-LINK Utility в другой микроконтроллер и там такой проблемы нет. Беру еще один мк. там снова такая проблема беру другой ее нет. В общем из 100 мк. 10 шт. ведут себя вот так не понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Есть еще один интересный момент, который меня вгоняет в ступор. Любая прошивка себя так ведет на этих МК, или только ваша? Схемотехника плат в норме? Среди этих 100 плат эти 10 вообще рабочие (все компоненты правильные)? В такой ситуации может быть масса причин и выяснить это можно лишь локализовав причину, хотя бы грубо: железо или софт. Выше я описал как это можно сделать, не гадая на "кофейной гуще" и т. п. мифических предположениях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба В общем из 100 мк. 10 шт. ведут себя вот так не понятно. Вариантов много, один из них - забыта инициализация каких-либо переменных или регистров которые после подачи питания имеют случайное состояние. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 3 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Еще вариант, который у себя наблюдал - медленно заводится внешний кварц, нужна была задержка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Еще вариант, который у себя наблюдал - медленно заводится внешний кварц, нужна была задержка. В любой нормальной программе старт приложения следует производить по условию готовности генератора (соотв. биты или даже прерывание) с контролем таймаута, а НЕ после истечения некой фиксированной задержки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба по условию готовности генератора у меня так и сделано. Плюс у меня стоит внешней генератор на 16 МГц. На нем генерация в норме. Заметил вот еще что. Беру не рабочей мк. ставлю уровень оптимизации в IAR low вижу не работает мк. ставлю для этого же мк. уровень оптимизации high, size работает. Но думаю надо поставить везде high и будит счастье. А нет беру второй мк. а для него подходит уже low. Чета ваще не чего не понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Но думаю надо поставить везде high и будит счастье. А нет беру второй мк. а для него подходит уже low. Чета ваще не чего не понятно. Тут есть два варианта: 1) переписать нормально код, изучая соотв. литературу и мануалы 2) воспользоваться бубном :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Если USB из Куба, то мне приходилось размер кучи увеличивать. А еще SysTick таймер программировать. Как оно у них работает, хрен поймешь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 5 апреля, 2018 Опубликовано 5 апреля, 2018 · Жалоба Есть еще один интересный момент, который меня вгоняет в ступор. А именно, зашиваю эту же прошивку с помощью STM32 ST-LINK Utility в другой микроконтроллер и там такой проблемы нет. Беру еще один мк. там снова такая проблема беру другой ее нет. В общем из 100 мк. 10 шт. ведут себя вот так не понятно. Мне приходят в голову следующие вещи, из моего опыта. Первая: при работе отладчика им запускается DWT счетчик. Если в коде он используется для отсчета каких-либо задержек (почему и как именно - писано на форуме много), а код забывает его проинициализировать, то под отладчиком (или после вываливания из отладки) будет все работать, т.к. DWT тикает, но при запуске после сброса - нет. Вторая: отладчик стартует медленно; за это время может успеть пройти инициализация периферии, которая не успевает при холодном старте без отладчика. У меня это было что-то тактируемое медленными генераторами (RTC) и, кажется, I2C, не помню точно. В общем и целом опыт мой подсказывает, что чудес не бывает :( . Если что-то ведет себя непредсказуемо и странно, за этим стоит вполне конкретная причина. Ищите! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться