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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Реализация программированияя Cortex-M0 по SWD, Кто занимался насколько это реализуем.
Budek
сообщение Aug 23 2013, 18:55
Сообщение #16


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

Группа: Свой
Сообщений: 132
Регистрация: 17-02-08
Из: Уфа
Пользователь №: 35 116



Здравствуйте всем!
Работаю с stm32Lxx. Обращаю на это внимание, т.к., например, в отличие от 100-й линейки в нем нет некоторых "нужных" регистров, например, flash_cr.
Запустил абсолютно все по SWD (правда долблю его имеюшейся железкой на atmege (с которых как раз и спрыгиваю): стираю, шью прошивку, устанавливаю защиту от чтения (Level 1).
Так вот как раз с последним засада... вернее, установить то защиту могу, а вот снять ее не получается. Еще вернее: снять защиту получается, но после установки RDP в 0xAA обязательно приходится пересбрасывать питание на чипе (по ресету во FLASH_OBR так и остается информация о защите... или ресет не производится). По пунктам (вкратце):
Установка защиты от чтения:
1. заливаю прошивку
2. разлочиваю Option Bytes
3. пишу (по адресу 0x1FF80000) 0xffff0000 - установка Level1 В отличие от StdLib пишу 0x00 а не 0xBB.
4. устанавливаю бит OBL_LAUNCH. сразу происходит сброс чипа.
5. для порядку устанавливаю lock на доступ к Option Bytes (хотя чип сбросился до этого).
Все нормально: наблюдаю мигание светодиода в только что залитой прошивке.
Снятие защиты от чтения:
1. устанавливаю связь с чипом по SWD
2. смотрим FLASH_OBR. да, стоит Level1.
1. разлочиваю Option Bytes
2. пишу (по адресу 0x1FF80000) 0xff5500aa - установка Level0
3. устанавливаю бит OBL_LAUNCH. думаю, происходит сброс чипа... светодиод уже не мигает... прошивку то загубили только что
4. для очистки совести устанавливаю lock на доступ к Option Bytes (хотя чип сбросился до этого... надеюсь).
5. делаю паузу... секунд 30. мало ли, что ему надо.
6. вновь устанавливаю связь с чипом по SWD
7. смотрим FLASH_OBR. Опа! До сих пор стоит Level1.
Возникает мысль: а может защита не снялась? Нет, снялась. Стоит передернуть питание, и при чтении FLASH_OBR вижу в его младших разрядах заветные 0xAA.
К слову: ST-LINKу пересброс питания таргета не требуется: после снятия защиты от чтения он продолжает работать с чипом (читает его очищенную память, льет прошивку и т.д.)
Почему я обратил внимание на отличие от 100-х: в них есть понятие "стереть Option Byte". В 32L я этого не нашел (хотя в мануалах именно на 32L такое понятие употребляют). В StdLib на 32L также нет ничего необычного: все уровни от 0 до 2 устанавливаются абсолютно одинаково.
Что же сделать, чтобы не приходилось пересбрасывать питание на таргете?
Заранее всем спасибо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th August 2025 - 11:10
Рейтинг@Mail.ru


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