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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM32F4 не стартует вне отладки
athlon64
сообщение Nov 8 2012, 11:33
Сообщение #1


Частый гость
**

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



Процессор STM32F407IGT6, ревизия Z.
Проект STM32F4x7_ETH_LwIP_V1.0.0 с сайта stm, из которого выкинута работа с сетью, оставлена только задача мигания светодиодами.
Коэффициенты PLL: M = 25, N = 336, P = 2, Q = 7. Кварц 25 МГц.

При запуске под отладкой (jlink) процессор успешно стартует и начинает мигать светодиодами.
При запуске не в отладке (при подаче питания) - процессор не стартует.
Ножка PDR_ON подключена к Vdd.

Куда копать?


--------------------
Руслан
Go to the top of the page
 
+Quote Post
AVNN
сообщение Nov 9 2012, 08:04
Сообщение #2


Участник
*

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



Цитата(athlon64 @ Nov 8 2012, 14:33) *
Куда копать?


Такое бывает если смещены векторы прерываний. Например если в файле icf (IAR) смещены ROM_Start и INTVEC_Start адреса
.

Сообщение отредактировал AVNN - Nov 9 2012, 08:06
Go to the top of the page
 
+Quote Post
athlon64
сообщение Nov 12 2012, 05:25
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 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 (синий):
От лабораторного БП:
Прикрепленное изображение

От нашего БП:
Прикрепленное изображение


Какие у кого соображения?


--------------------
Руслан
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 12 2012, 07:54
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



А на BOOT0 случайно никаких резисторов с емкостями нет? Есть возможность после того как не стартанул подключиться отладчиком на всем скаку и посмотреть, куда его занесло - в загрузчик, в исключение или еще куда?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
athlon64
сообщение Nov 12 2012, 09:37
Сообщение #5


Частый гость
**

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



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

Стыдно признавать, но косяк действительно был в ноге BOOT0 biggrin.gif
Не был запаян резистор, подтягивающий её к земле, нога висела в воздухе.
Сейчас всё стабильно стартует всегда rolleyes.gif


--------------------
Руслан
Go to the top of the page
 
+Quote Post
Allregia
сообщение Nov 12 2012, 15:36
Сообщение #6


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(athlon64 @ Nov 12 2012, 11:37) *
Стыдно признавать, но косяк действительно был в ноге BOOT0 biggrin.gif
Не был запаян резистор, подтягивающий её к земле, нога висела в воздухе.
Сейчас всё стабильно стартует всегда rolleyes.gif


А почему оно с отладчиком запускалсь, при плавающем буст0? Должно ведь было тоже глючить, или нет?
Go to the top of the page
 
+Quote Post
athlon64
сообщение Nov 13 2012, 05:03
Сообщение #7


Частый гость
**

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



Цитата(Allregia @ Nov 12 2012, 21:36) *
А почему оно с отладчиком запускалсь, при плавающем буст0? Дллжно ведь было тоже глючить, или нет?

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


--------------------
Руслан
Go to the top of the page
 
+Quote Post
LWW
сообщение Dec 22 2012, 09:45
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 24-03-07
Пользователь №: 26 471



У меня аналогичный глюк.. F4 дискавери, новенькая только из коробки. Родная прошивка (которая идёт с платой) работала, без всяких сбросов и перезапусков. Просто втыкаешь в USB и она работает.

Написал свою прошивку (моргание светодиодами). Что бы она стартанула, нужно открыть утилиту ST-LINK и подключиться/отключиться к камню. Или нажать System Reset в окне MCU Core.

Обратно возвращаю прошивку от дискавери - работает! А значит никаких перемычек и переделок не нужно.

Может дело в самой прошивке? Например, родная начинается с циферки 2
:20000000800C00202D420008353C0008373C0008393C00083B3C00083D3C0008000000004C

а моя прошивка начинается с единички, формат intel hex. И стока короче.
:10000000800C002088010000F6010000F6010000CD

Поразбирался - нет, дело не в формате прошивки, а в чём-то другом..

Залито всё правильно, с адреса 0800. Вектор на start и вершина стека установлены. Прерывания закрыты. Про ресету от ст-линка работает, а сама по себе не хочет sad.gif
Go to the top of the page
 
+Quote Post
LWW
сообщение Dec 22 2012, 11:05
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 24-03-07
Пользователь №: 26 471



И ещё, перемычки BOOT0/BOOT1 запапяны на землю. Так что и этот вариант отпадает..
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 22 2012, 11:25
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 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 и вершина стека установлены. Прерывания закрыты.

Откуда знаете про стек и старт? Что значит "Прерывания закрыты"?
Go to the top of the page
 
+Quote Post
LWW
сообщение Dec 22 2012, 12:56
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 24-03-07
Пользователь №: 26 471



Скорей всего тактирование периферии не включено. GPIODEN стоит но этого мало. SWD видимо что-то дополнительно от себя включает..

Одним словом, нужно до конца инициализировать камень. Сегодня поковыряюсь ещё.
Go to the top of the page
 
+Quote Post
LWW
сообщение Dec 22 2012, 15:44
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 24-03-07
Пользователь №: 26 471



Ну всё уже перепробовал. Все флажки попереключал, какие только есть.. Если сбрасывать через st-link SWD, работает. А просто кнопочкой сбросить - нет. В рот.. ну что за чудеса? wacko.gif
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 22 2012, 17:23
Сообщение #13


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(LWW @ Dec 22 2012, 21:44) *
ну что за чудеса? wacko.gif

Показывайте программу, чего уж.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
LWW
сообщение Dec 22 2012, 18:38
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 24-03-07
Пользователь №: 26 471



Люди! Нет ну это же ну просто свинство!! Взял другую платку. На ней такой же камень и 4 светодиода, только на другом порту. Исправил имена портов. Работает! С первого пинка пошла. Причём как часики.


AHTOXA
Мимо sad.gif

Да и он на ассемблере. Очень простой код! И на другой-то плате работает. С первого раза запустился, только порт другой выставил. Вон лежит моргает...


На дискавери какая-то деталюха ступорит камень! Но с другой стороны интересно, если демо-код (с акселерометром и мышкой) работает, значит это можно обойти программно?

Может что-то с тактированием? Типа такты приходят от swd, а в камне фьюзами задано внешнее тактирование? Такое вообще бывает? (так помню бывало в тинках))

Сообщение отредактировал LWW - Dec 22 2012, 18:39
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 22 2012, 18:41
Сообщение #15


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(LWW @ Dec 23 2012, 00:38) *
AHTOXA
Мимо sad.gif

Эх, сорвался мой хитрый план выманить у вас код! sm.gif
Цитата(LWW @ Dec 23 2012, 00:38) *
Может что-то с тактированием? Типа такты приходят от swd, а в камне фьюзами задано внешнее тактирование? Такое вообще бывает? (так помню бывало в тинках))

Ждите прибытия телепатов.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

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

 


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


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