|
STM32F4 не стартует вне отладки |
|
|
|
Nov 9 2012, 08:04
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 28-09-06
Из: Минск
Пользователь №: 20 776

|
Цитата(athlon64 @ Nov 8 2012, 14:33)  Куда копать? Такое бывает если смещены векторы прерываний. Например если в файле icf (IAR) смещены ROM_Start и INTVEC_Start адреса .
Сообщение отредактировал AVNN - Nov 9 2012, 08:06
|
|
|
|
|
Nov 12 2012, 05:25
|

Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882

|
С векторами прерываний всё в порядке. В ходе экспериментов удалось выяснить следующее: - В случае когда процессор не стартует, генерация на кварце 25 МГц отсутствует. - При тактировании от HSI глюк повторяется аналогично тактованию от кварца. - Если при включении удерживать сброс при подаче питания и после этого отпустить сброс, то процессор стартует стабильно. Сброс после подачи питания приводит к нормальному старту процессора. - BOR включен, порог выставлен на 2,7В, при выставлении любых порогов или отключении BOR ситуация не меняется. Работу BOR проверили лабораторным БП - BOR срабатывает. Всё это при запитывании процессора от БП на той же плате (5В на LM2679 -> 3.3В на LM1085) - Под рукой есть плата Discovery с процессором STM32F407VG, при запитывании её от того же БП 3.3В (с платы устройства), процессор Discovery стартует стабильно. NRST у дискавери подключен аналогично. - Если запитывать процессор от лабораторного БП в обход БП на плате, то процессор стартует стабильно. Осциллограммы нарастания напряжения питания 3.3В (жёлтый) и уровня на ноге NRST (синий): От лабораторного БП:
От нашего БП:
Какие у кого соображения?
--------------------
Руслан
|
|
|
|
|
Nov 12 2012, 09:37
|

Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882

|
Цитата(Сергей Борщ @ Nov 12 2012, 13:54)  А на BOOT0 случайно никаких резисторов с емкостями нет? Есть возможность после того как не стартанул подключиться отладчиком на всем скаку и посмотреть, куда его занесло - в загрузчик, в исключение или еще куда? Стыдно признавать, но косяк действительно был в ноге BOOT0 Не был запаян резистор, подтягивающий её к земле, нога висела в воздухе. Сейчас всё стабильно стартует всегда
--------------------
Руслан
|
|
|
|
|
Nov 13 2012, 05:03
|

Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882

|
Цитата(Allregia @ Nov 12 2012, 21:36)  А почему оно с отладчиком запускалсь, при плавающем буст0? Дллжно ведь было тоже глючить, или нет? Если дёрнуть резет после установления напряжения питания, то старт был стабильным. Ну а отладчик как раз и дёргал резет.
--------------------
Руслан
|
|
|
|
|
Dec 22 2012, 09:45
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 24-03-07
Пользователь №: 26 471

|
У меня аналогичный глюк.. F4 дискавери, новенькая только из коробки. Родная прошивка (которая идёт с платой) работала, без всяких сбросов и перезапусков. Просто втыкаешь в USB и она работает. Написал свою прошивку (моргание светодиодами). Что бы она стартанула, нужно открыть утилиту ST-LINK и подключиться/отключиться к камню. Или нажать System Reset в окне MCU Core. Обратно возвращаю прошивку от дискавери - работает! А значит никаких перемычек и переделок не нужно. Может дело в самой прошивке? Например, родная начинается с циферки 2 :20000000800C00202D420008353C0008373C0008393C00083B3C00083D3C0008000000004C а моя прошивка начинается с единички, формат intel hex. И стока короче. :10000000800C002088010000F6010000F6010000CD Поразбирался - нет, дело не в формате прошивки, а в чём-то другом.. Залито всё правильно, с адреса 0800. Вектор на start и вершина стека установлены. Прерывания закрыты. Про ресету от ст-линка работает, а сама по себе не хочет
|
|
|
|
|
Dec 22 2012, 11:25
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(LWW @ Dec 22 2012, 11:45)  Может дело в самой прошивке? Например, родная начинается с циферки 2 :20000000800C00202D420008353C0008373C0008393C00083B3C00083D3C0008000000004C
а моя прошивка начинается с единички, формат intel hex. И стока короче. :10000000800C002088010000F6010000F6010000CD 10 и 20 - это количество байт данных в строке. Цитата(LWW @ Dec 22 2012, 11:45)  Залито всё правильно, с адреса 0800. С 800 или с 0x800000? Цитата(LWW @ Dec 22 2012, 11:45)  Вектор на start и вершина стека установлены. Прерывания закрыты. Откуда знаете про стек и старт? Что значит "Прерывания закрыты"?
|
|
|
|
|
Dec 22 2012, 18:38
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 24-03-07
Пользователь №: 26 471

|
Люди! Нет ну это же ну просто свинство!! Взял другую платку. На ней такой же камень и 4 светодиода, только на другом порту. Исправил имена портов. Работает! С первого пинка пошла. Причём как часики. AHTOXAМимо Да и он на ассемблере. Очень простой код! И на другой-то плате работает. С первого раза запустился, только порт другой выставил. Вон лежит моргает... На дискавери какая-то деталюха ступорит камень! Но с другой стороны интересно, если демо-код (с акселерометром и мышкой) работает, значит это можно обойти программно? Может что-то с тактированием? Типа такты приходят от swd, а в камне фьюзами задано внешнее тактирование? Такое вообще бывает? (так помню бывало в тинках))
Сообщение отредактировал LWW - Dec 22 2012, 18:39
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|