|
|
  |
STM32: Не верифицируется флешь из SWD (mt-линк) при включении PLL, Странные глюки SWD на STM32 |
|
|
|
Dec 13 2011, 18:59
|

Знающий
   
Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499

|
В общем, ситуация такова: сделали редизайн небольшой серийной платки, на которой STM32F103 100- ногий, несколько транзисторов, внешняя SPI память, SPI АЦП.
Поменяли только корпуса транзисторов (были SO-8, поставили поменьше) и форм- фактор резонатора 16Мгц (также поменьше)
Плату протестили- работает, я взял себе одну как макет.
Среда- кейл 4.12.
И начались непонятные глюки. Дело в том, что на производстве прошивают через бутлоадер, а я для быстроты пользуюсь SWD (МТ-линк 5-й, переделаный в 6-й. )
При прошивке проца через SWD при верификации флеша байты страницы читаются как FF, кейл выкидывает ошибку верификации. При том, что все прошивается нормально. (по факту программа работает и из бутлоадера содержимое флешь видится нормально)
Отладчик при этом работает корректно, все видит, переменные можно менять, они показываются адекватно.
Понижение частоты SWD вплоть до 100 Кгц не помогает (сначала грешил на 30 см кабель) Зачем-то поменял проц. Конечно, не в нем дело.
Начал я копать, копал почти целый день.
Что накопал: тип резонатора- не влияет (пробовал разные). При запайке проца на "голую" новую плату (только проц и линейный стабилизатор питания)- верификация есть. То есть дело (формально) или в плате или в обвязке.
На "заполненной" рабочей плате стал модифицировать софт оставил одну инициализацию- нет верификации. отключил все кроме RCC и ядра - нет верификации. отключил внешний тактовый генератор- верификация ЕСТЬ. (также она есть если отключить или коротнуть резонатор, ну это и понятно)
А вот теперь самое непонятное- переключил биты SW в регистре конфигурации RCC на работу от внешнего генератора, минуя PLL и верификация появилась!
(правда программа в 5 раз медленнее работает)
Понятно, что дело в самой плате (методом замены ясно), но почему такой странный глюк? Плата 4-х слойка, все питание отфильтровано, емкостей вокруг проца штук 6, и главное, все порты отключены, оно жрет всего 40ма.., никаких сигналов никуда не подается, все SPI микросхемы спят, порты проца выключены...
Может, кто- нибудь сталкивался?
|
|
|
|
|
Dec 14 2011, 04:09
|

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

|
Цитата(Serj78 @ Dec 14 2011, 00:59)  отключил все кроме RCC и ядра - нет верификации. отключил внешний тактовый генератор- верификация ЕСТЬ. (также она есть если отключить или коротнуть резонатор, ну это и понятно) Та же история, только F107, через JTAG и openocd. Заметил также, что поведение при прошивке варьируется в зависимости от включенной набортной периферии (например, с включенным UART4 не шилось, а с выключенным - шилось). Но закорачивание резонатора (и, как следствие, программирование на внутреннем генераторе) помогает всегда. Честно говоря, я особо не парился, считал это кривизной JTAG/openocd. На штатную работу устройства это вроде бы не влияет.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Dec 14 2011, 05:41
|

Знающий
   
Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499

|
Цитата(AHTOXA @ Dec 14 2011, 08:09)  Та же история, только F107, через JTAG и openocd. Заметил также, что поведение при прошивке варьируется в зависимости от включенной набортной периферии (например, с включенным UART4 не шилось, а с выключенным - шилось). Но закорачивание резонатора (и, как следствие, программирование на внутреннем генераторе) помогает всегда. Честно говоря, я особо не парился, считал это кривизной JTAG/openocd. На штатную работу устройства это вроде бы не влияет. Антоха, читайте дальше! там еще чудесатее  Во первых этот же проц на этой же плате без обвязки- верифицируется. Во вторых не обязательно выключать внешний генератор- достаточно переключить источник тактирования SW с PLL на внешний генератор! Возможно, дело в большой тактовой частоте..
|
|
|
|
|
Dec 14 2011, 06:07
|

Знающий
   
Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499

|
Цитата(AHTOXA @ Dec 14 2011, 09:56)  С той же самой программой внутри? Да, и с той же самой и с другой тоже - от программы практически не зависит. На плате с запаяной обвязкой- поотключал в программе все, кроме настройки RCC и конфигурации флеша. программа 209 байт Верификация зависит от источника тактирования. Сегодня еще покопаю.
|
|
|
|
|
Dec 14 2011, 16:12
|

Знающий
   
Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499

|
НАШЕЛ! Достаточно долго копал- впаивал в "голую" плату по одному или нескольким элементам, нашел место когда перестало верифицироваться. Оказалось- резистор на подтяжку Nrst - поставили 100ом ом вместо 1к Порту очевидно, не хватало мощи его "продавить" за необходимое время на высокой частоте, на пониженной тактовой все работало. Вот такие пироги..
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|