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

 
 
> STM32, backup registers, как бы поудобнее реализовать с ними работу
sonycman
сообщение Jun 7 2010, 19:22
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Доброго времени суток!
Вот думаю использовать регистры бэкап домена.
Как бы прозрачнее это сделать, в идеале так, чтобы работа с ними не отличалась от работы с ячейками обычного ОЗУ?
Можно ли это?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Jun 11 2010, 05:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Добился-таки "прозрачности", но на lpc1768.

Проверял так:

BYTE *bat;

bat = (BYTE *)0x30000000; // несуществующая память
bat[0]=0x5A;

С позиций ядра bat[0]=num есть

STR rc, [ro]

rc - хранит число num, ro - хранит адрес назначения bat+0

Запись по несуществующему адресу вызывает исключение. В обработчике исключения подменяю ro на нужную ячейку памяти и выхожу (регистры R0-R3, R12 "проблемного участка" доступны через стек, остальные - напрямую). Команда STR выполняется еще раз, но уже с новым адресом.

У данного подхода есть ряд минусов:
- нужен контроллер с MPU. на STM32 не смог получить исключение в месте, где произвожу запись.
- поскольку rc и ro заранее не известны (впрочем команда тоже может быть не STR), то нужно анализировать инструкцию, которая привела к сбою.
- после выполнения инструкции параметры портятся, поэтому инструкцию лучше эмулировать.
Go to the top of the page
 
+Quote Post
Serj78
сообщение Dec 14 2010, 03:23
Сообщение #3


Знающий
****

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



А у кого- нибудь получилось записать в эти регистры- хоть что- нибудь?
Я попробовал- нифига не выходит.
В лоб, по крайней мере:


BKP->DR2=2222;

a=BKP->DR2;

В отладчике сморю а=0... и BKP_DR2=0.... и переправить его руками из отладчика не получается??

Управляющие регистры BKP_CR и BKP_CSR обнулены..

Нифига не понимаю.. Может, что-то не так делаю?

Компилятор Keil 4.12
Go to the top of the page
 
+Quote Post
zoddy
сообщение Dec 14 2010, 04:21
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 4-12-05
Из: Екатеринбург
Пользователь №: 11 773



Цитата(Serj78 @ Dec 14 2010, 08:23) *
А у кого- нибудь получилось записать в эти регистры- хоть что- нибудь?


Я так и делаю
BKP->DRx = data;
data = BKP->DRx;
Все работает!


Скорее всего вы не разрешили запись в BKP. Что-то типа этого...

CODE

RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR,ENABLE); // вкл тактирование нужной периферии
PWR_BackupAccessCmd(ENABLE);// разрешаем доступ к BKP
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sonycman   STM32, backup registers   Jun 7 2010, 19:22
- - baralgin   Из RM0008: Backup data register x (BKP_DRx) (x = 1...   Jun 7 2010, 20:38
- - rezident   Стесняюсь спросить, а компиляторы про эту фичу не ...   Jun 7 2010, 20:48
- - sonycman   Спасибо за советы. Реализация в виде дефайнов слиш...   Jun 9 2010, 12:34
- - baralgin   Цитата(sonycman @ Jun 9 2010, 15:34) А во...   Jun 9 2010, 18:43
- - adnega   помним, что слова BKP_DRx 16-битные и между ними е...   Jun 9 2010, 19:31
- - baralgin   adnega так именно из-за этого то и весь сыр-бор ра...   Jun 9 2010, 20:11
- - adnega   Мне кажется, что "прозрачность" будет за...   Jun 10 2010, 07:45
- - sonycman   Ну, необходимость вызова функций Load\Save и ...   Jun 10 2010, 09:37
- - adnega   Если под "прозрачностью" понимать непрер...   Jun 10 2010, 09:46
- - sonycman   Нет, в моём понимании "прозрачность" - э...   Jun 10 2010, 10:39
|- - adnega   Цитата(Serj78 @ Dec 14 2010, 06:23) А у к...   Dec 14 2010, 04:17
- - Serj78   А что включают ваши функции? (какие биты в каких ...   Dec 14 2010, 06:55
|- - zoddy   Цитата(Serj78 @ Dec 14 2010, 11:55) А что...   Dec 14 2010, 07:32
|- - zoddy   В общем, проверил на своей железяке вариант RCC...   Dec 14 2010, 07:57
|- - AHTOXA   А если немножко удлиннить программу, написав вмест...   Dec 14 2010, 15:53
|- - zoddy   Цитата(AHTOXA @ Dec 14 2010, 23:53) А есл...   Dec 15 2010, 04:36
- - Serj78   Да, спасибо! узел контроля питания ( 28-й бит...   Dec 14 2010, 07:52


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:38
Рейтинг@Mail.ru


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