Перейти к содержанию
    

Не работает STM32F103VBI6: не подключается SWD

Для лохопользователей Cube
Я пользую иногда куб. Правда, лишь для распиновки толстых проектов.

 

 

STM studio. Вот он нахаляву рисует графики))
Тогда при чем тут отладчик?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда при чем тут отладчик?

Studio для swd хочет stm-link. А j-link не хочет.

Он получает данные для визуализации из jtag/swd.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Studio для swd хочет stmlink. А jlink не хочет.Он получает данные для визуализации из jtag/swd.

Какая капризная эта "Studio" :D

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

про boot0 можно забыть - он жестко к земле подключен.

Опасно так делать напрямую. Лучше уж через нулевые резисторы. Не помню насчёт STM или не STM, но с какими-то Cortex-ами у нас были ситуации, когда прошивали ПО с багом, которое сразу при старте уходило в сброс и зацикливалось в сбросе. И спасало только переключение boot-пинов на встроенный загрузчик и полное стирание МК, иначе J-Link не подключался. Может конечно подключение эмулятора под сбросом поможет, но не уверен, не помню. А если при этом ещё и установлена защита на флешь, то думаю и подключиться эмулятором под сбросом тоже не получится.

А нулевой резистор проще выпаять, чем проц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Опасно так делать напрямую. Лучше уж через нулевые резисторы. Не помню насчёт STM или не STM, но с какими-то Cortex-ами у нас были ситуации, когда прошивали ПО с багом, которое сразу при старте уходило в сброс и зацикливалось в сбросе.

Ничего тут опасного нет. BOOT0 всегда жестко кидаю на 0V (цифровая земля).

А проблема кривой прошивки решается просто. Я с таким дважды сталкивался.

Лечил пинцетом: коротил NRST на 0V, и выбирал в опция отладчика "under reset" (у меня на всех платах к NRST подключен только один кондер 0.01, поэтому по сути коротил этот кондер).

А если бы от отладчика кроме SWDIO/SWCLK линий была еще подключена линия сброса, то пинцет бы не понадобился ))

Но так как такая ситуация очень редкая, то к SWD все равно никогда более не выводил NRST, т.е. всегда ограничивался 4 пинами к программатору/отладчику (при небольшой жгута к отладчику можно даже ужать до 3х - GND/SWDIO/SWCLK).

 

Может конечно подключение эмулятора под сбросом поможет, но не уверен, не помню. А если при этом ещё и установлена защита на флешь, то думаю и подключиться эмулятором под сбросом тоже не получится.

Все там подключается! SWD доступен под сбросом (STM32), но только, если уровень защиты 0й (без защиты) или 1й, т.е. не самый крайний!

Вот под 2м (крайним) уровнем защиты камень только выкинуть, там уже ничего не поможет, ибо BOOT0 тоже не работает (аппаратно заблокирован штатный загрузчик), отладчик тоже напрочь блокируется. Фактически кристалл превращается в кирпич.

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

Когда писал свой бутлодырь, то предусмотрел возможность восстановить битую прошивку: каждый раз при запуске камня ВСЕГДА запускается бутлодырь, потом оно проверяет контрольную сумму прошивки и уже потом передает управление в прошивку.

Контрольная сумма считается быстро (даже без DMA + модуль CRC32). В этом случае даже, если прошивка cлетела или был прерван процесс заливки прошивки, то ее всегда можно восстановить. Даже если 2й уровень защиты камня!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все там подключается! SWD доступен под сбросом (STM32), если уровень защиты 0й (без защиты) или 1й, т.е. не самый крайний .

Вот под 2м (крайним) уровнем защиты камень только выкинуть, есть нет внутренного самописного бутлодыря.

Не знаю сколько там и какие уровни под STM32, у нас был LPC, там 3 уровня. И только под 3-м МК можно только выкинуть.

Но мы всегда использовали 2-й как самый оптимальный, он не позволяет вообще подключение эмулятора и в то же время позволяет не перепаивать чип если что-то пошло не так - всегда можно чип просто полностью стереть.

Если к МК можно подключиться отладчиком (под сбросом или ещё как-то), то это уже не защита - любой школьник сольёт прошивку. Поэтому, по Вашим словам, в STM32 всего один уровень защиты - 3-й. И тогда да - резистор в этом случае не нужен - один фиг придётся МК выкинуть.

 

запускается бутлодырь, потом оно проверяет контрольную сумму прошивки и уже потом передает управление в прошивку.

А если CRC не совпала что делаете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю сколько там и какие уровни под STM32, у нас был LPC, там 3 уровня. И только под 3-м МК можно только выкинуть.

Но мы всегда использовали 2-й как самый оптимальный, он не позволяет вообще подключение эмулятора и в то же время позволяет не перепаивать чип если что-то пошло не так - всегда можно чип просто полностью стереть.

Если к МК можно подключиться отладчиком (под сбросом или ещё как-то), то это уже не защита - любой школьник сольёт прошивку.

Вы не поняли )) Проясню:

0й- уровень - нету никакой защиты, прошивку может слить "любой школьник".

1й уровень - отладчик доступен, штатный загручик тоже, но прошивку слить уже нельзя. Можно стереть и залить новую, но вычитать - никак. Это режим рассчитан для мелкой серии и "сырых" девайсов.

2й уровень - ничего не доступно. Это режим только для серии, для крупной серии, в которой выгоднее выкинуть всю битую плату, чем перепаивать/перешивать камень.

 

А если CRC не совпала что делаете?
Все просто: остаюсь в загрузчике, моргаю нужными лампочками, жду подключения проги для заливки прошивки.

 

Кстати, прошивка шифрованная, загрузчик на ходу ее расшифровывает и шьет во флэш.

Т.е. конечный юзер без проблем сможет ее заново залить. В т.ч. и обновить.

Разумеется, софт загручика проверяет версию прошивки и не позволит зашить левую прошивку или прошивку для этого изделия, но с более новым железом.

Дополнительно хочу потом добавить контроль версии прошивки самим загрузчиком.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какая капризная эта "Studio" :D

15 лет назад я сам разрабатывал такие платки. Тогда, чтобы получить отладочный канал с визуализацией входов в x86, я потратил месяц. При этом проект был прибит гвоздями к железу и его характеристикам, и требовал дополнительных переходников.

 

Такое как в студии я видел только в отладочных средах под DSP AD и TI. И стоит все это - как самолет.

А тут нахаляву. Считаю, ради этого стоит потратить 200 р на китайский stmlink.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1й уровень - отладчик доступен, штатный загручик тоже, но прошивку слить уже нельзя. Можно стереть и залить новую, но вычитать - никак. Это режим рассчитан для мелкой серии и "сырых" девайсов.

Это Вы не поняли. Если доступен отладчик, то почему нельзя слить прошивку???

Да это делается любым школьником как два пальца.

 

Все просто: остаюсь в загрузчике, моргаю нужными лампочками, жду подключения проги для заливки прошивки.

А прога как подключается для заливки? Через какой-то Ваш штатный интерфейс? Или через SWD?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 лет назад я сам разрабатывал такие платки. Тогда, чтобы получить отладочный канал с визуализацией входов в x86, я потратил месяц. При этом проект был прибит гвоздями к железу и его характеристикам.

 

Такое как в студии я видел только в отладочных средах под DSP AD и TI. И стоит все это - как самолет.

А тут нахаляву. Считаю, ради этого стоит потратить 200 р на китайский stmlink.

Толстый отладочный канал с перегруженной визуализацией чего надо и не надо делается через любой внешний интерфейс, которых в камне и так полно.

Но удобнее использовать штатный канал, который щас есть в любом ARM: RTT, в него (через SWD) можно выводить тонны информации. Софта тоже хватает.

Так что привязываться к среде разработки ради лишь красивых real-time графиков - это пережиток, имхо, прошлого :cranky:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А тут нахаляву. Считаю, ради этого стоит потратить 200 р на китайский stmlink.

У меня коллега пару месяцев назад для пробы визуализировал чем-то внутренние переменные через J-Link. Нашёл какой-то готовый инструмент для этого. Какой именно - не интересовался. У него показывало под виндой красивой крутилкой угловое положение из некой переменной в устройстве.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это Вы не поняли. Если доступен отладчик, то почему нельзя слить прошивку???

Да это делается любым школьником как два пальца.

Вы опять ничего не поняли :)

Через SWD в этом 1м режиме защиты набор "команд" сильно урезан (если можно так выразиться), фактически можно лишь полностью стереть весь чип и заодно сбросить в дефолт биты конфигурации, которые определяют режим защиты (и многое другое).

Отдельно доступ к битам защиты через SWD недоступен.

Это блокируется на аппаратном уровне. У "школьников" тут ничего не получится, поэтому они могут идти обратно в школу доучиваться )))

 

А прога как подключается для заливки? Через какой-то Ваш штатный интерфейс? Или через SWD?

Конечно через свой интерфейс (USB/CAN и т.п.). Ведь SWD при 2м уровне защиты напрочь отключается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня коллега пару месяцев назад для пробы визуализировал чем-то внутренние переменные через J-Link. Нашёл какой-то готовый инструмент для этого. Какой именно - не интересовался. У него показывало под виндой красивой крутилкой угловое положение из некой переменной в устройстве.
Я вот и описываю вам как раз один из таких инструментов, и говорю - красиво и удобно.

 

Если таких инструментов стало много - ну тем более вива STM

 

Но удобнее использовать штатный канал, который щас есть в любом ARM: RTT, в него (через SWD) можно выводить тонны информации.

Действительно, любопытно и удобно https://habrahabr.ru/post/259205/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Действительно, любопытно и удобно https://habrahabr.ru/post/259205/

Посмотрите для примера на эту штуку (если не учитывать стоимость J-Link)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Через SWD в этом 1м режиме защиты набор "команд" сильно урезан (если можно так выразиться), фактически можно лишь полностью стереть весь чип и заодно сбросить в дефолт биты конфигурации, которые определяют режим защиты (и многое другое).

Ну если так - это другое дело. Вы этого не описали, а я писал что не знаю механизма защиты STM32.

 

Отдельно доступ к битам защиты через SWD недоступен.

Отдельный доступ и не нужен. Нужна только возможность загрузить какие-либо ПО в ОЗУ или в любую часть FLASH. Если это тоже отключено, то тогда всё ок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...