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

 
 
> Реальный пример установки защиты, STM32, Lock_Bits
RomanRom
сообщение May 14 2012, 06:31
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



Что означает распространенная в Интернете фраза о том, что после установки бита защиты LCKR снять защиту можно только после сброса. Сброса какого? Аппаратного кнопкой RESET или программного? Кто-нибудь может привести короткую программу, на которой четко было бы видно - вот есть защита (светодиод светится), вот что-тосбрасываем, а вот защита снимается (светодиод не светится)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение May 18 2012, 11:16
Сообщение #2


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

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



Цитата(RomanRom @ May 18 2012, 14:58) *
Проверяю на STM32VLDISCOVERY. Может быть на другом камне по-другому?

Проверил, работает. Именно на STM32VLDISCOVERY. Вот такой код:
Код
    uint32_t tmp = GPIO_LCKR_LCK8 | GPIO_LCKR_LCKK;
    GPIOC->LCKR = tmp;
    GPIOC->LCKR = GPIO_LCKR_LCK8;
    GPIOC->LCKR = tmp;
    tmp = GPIOC->LCKR;
    tmp = GPIOC->LCKR;

После выполнения этого кода настройки ножки уже не меняются.

Цитата(Corvus @ May 18 2012, 16:22) *
А для чего может потребоваться такая защита на практике?

Ну, например, операционка, настраивает свою периферию, и запускает пользовательский код. Блокировка не даст пользовательскому коду изменить критичные настройки.
Или - управление мотором в условиях сильных помех. Чтобы никакой сбой в программе не смог сбить настроек ШИМ-а (а то всё сразу сгорит).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
RomanRom
сообщение May 18 2012, 11:37
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



AНTOXA
А на каком компиляторе и с какой оптимизацией проверялся код? У меня на кокосе все равно не работает.
Еще раз уточню листинг - синий светодиод горит или нет?

int main(void)
{ RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Разрешить тактирование GPIOC
GPIOC->CRH &= ~GPIO_CRH_MODE8; //очистить разряды MODE
GPIOC->CRH &= ~GPIO_CRH_CNF8; //очистить разряды CNF
GPIOC->CRH |= GPIO_CRH_MODE8_0; //выход, 10MHz
GPIOC->CRH &= ~GPIO_CRH_CNF8; //общего назначения, симетричный
GPIOC->BSRR = GPIO_BSRR_BS8; //GPIOC.8=1

uint32_t tmp = GPIO_LCKR_LCK8 | GPIO_LCKR_LCKK;
GPIOC->LCKR = tmp;
GPIOC->LCKR = GPIO_LCKR_LCK8;
GPIOC->LCKR = tmp;
tmp = GPIOC->LCKR;
tmp = GPIOC->LCKR;

GPIOC->CRH &= ~GPIO_CRH_MODE8; //очистить разряды MODE
GPIOC->CRH &= ~GPIO_CRH_CNF8; //очистить разряды CNF
GPIOC->CRH |= GPIO_CRH_CNF8_1; //дискретный вход, подтяжка к "земле"
GPIOC->BSRR = GPIO_BSRR_BR8; //включить подтягивающий резистор

while(1)
{
}
}
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 18 2012, 16:24
Сообщение #4


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

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



Всё нормально у вас. Вы залочили конфигурацию ножки на выход, а состояние-то по-прежнему можно менять, GPIOC->BSRR = GPIO_BSRR_BR8 - гасит светодиод.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
RomanRom
сообщение May 19 2012, 10:38
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



AHTOXA, спасибо. Осталось еще чуть-чуть.

Защита установлена, но нажатие кнопки сброса (одиночное или многократное) защиту не снимает (перепроверьте у себя на STM32VLDiscovery по-возможности).

Если смотреть документы, то существует три типа сброса: систеный сброс, сброс по питанию и сброс резервного домена. Поскольку сброс от кнопки RESET защиту не снимает, то все остальные способы системного сброса (типа программный через static __INLINE void NVIC_SystemReset(void) и т.д.), наверное, не помогут.

Остается сброс по питанию (выход из спящего режима) от и сброс резервного домена.

Еще есть зацепка в сообщении VslavX про ...Code Read Protection - вот он только по Power Cycling снимается...

Как же все-таки сымитировать удаление защиты и увидеть, что она действительно снимается?

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- RomanRom   Реальный пример установки защиты   May 14 2012, 06:31
- - RomanRom   Ладно, упростим вопрос. Из перевода референс манул...   May 15 2012, 10:39
- - Aner   Его сброса, этого бита LCKR. При его сбросе память...   May 15 2012, 11:58
- - cioma   Для исключения трудностей перевода, приведите цита...   May 15 2012, 12:03
- - Aner   Да и так понятно, зачем еще цитату. Еще попросите ...   May 15 2012, 12:18
|- - RomanRom   Вот цитата и перевод из интернетовского документа ...   May 15 2012, 12:39
|- - _Артём_   Цитата(RomanRom @ May 15 2012, 15:39) То ...   May 15 2012, 13:30
|- - VslavX   Цитата(_Артём_ @ May 15 2012, 16:30) По с...   May 16 2012, 05:08
|- - RomanRom   Цитата(VslavX @ May 16 2012, 08:08) Именн...   May 17 2012, 04:54
||- - RomanRom   Может ли кто-то проверить по указанному выше листи...   May 18 2012, 08:37
||- - AHTOXA   Попробуйте вот так: Код GPIOC->LCKR = GPIO_LCK...   May 18 2012, 08:41
||- - RomanRom   Цитата(AHTOXA @ May 18 2012, 11:41) Попро...   May 18 2012, 08:58
|- - VslavX   Цитата(VslavX @ May 16 2012, 08:08) Именн...   May 18 2012, 08:49
- - Corvus   А для чего может потребоваться такая защита на пра...   May 18 2012, 10:22
|- - RomanRom   Цитата(Corvus @ May 18 2012, 13:22) А д...   May 18 2012, 11:11
- - AHTOXA   По кнопке сброса снова запускается ваша программа,...   May 19 2012, 11:22


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

 


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


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