Easyelectronics.ru

Электроника для всех
Текущее время: 24 сен 2020, 06:01

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 11 сен 2019, 23:30 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4902
Откуда: Кемеровская область, Киселевск
noob_style писал(а):
Отличная тема. Тоже интересует как сохранить в память камня настройки. Вопрос к экспертам: как узнать свободна ли страница памяти, которую мы планируем стирать для последующей записи данных?


Проверить есть ли записанные данные.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 11 сен 2019, 23:39 
Только пришел

Зарегистрирован: 06 авг 2019, 11:28
Сообщения: 18
открываем к примеру для stm32f051 reference manual. - RM0091. Main Flash
memory имеет 63 страницы - но какая из них занята?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 11 сен 2019, 23:42 
Только пришел

Зарегистрирован: 06 авг 2019, 11:28
Сообщения: 18
К примеру можно прочитать данные.
Создать обращение:
uint32_t Read_Flash(uint32_t Data_adr)
{
return (*(__IO uint32_t*)Data_adr); //для С++
}
указать в хедере #define ADDRESS 0x0800FFFF
а в мейн прописать: Read_Flash(ADDRESS);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 11 сен 2019, 23:44 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
noob_style писал(а):
как узнать свободна ли страница памяти, которую мы планируем стирать для последующей записи данных?

Если все, что там записано, — сплошь 0xFF, то свободна. Но лучше в линкер-скрипте сразу расписать что нужно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 11 сен 2019, 23:45 
Только пришел

Зарегистрирован: 06 авг 2019, 11:28
Сообщения: 18
но, что это даст? мы увидим состояние страницы как я понимаю. Т.е. она должна быть пуста - все 0, так?
Просто есть еще какой-то способ расчета занятой памяти по данным с icf-файла, с ним не знаком. Как работать с линкер-скриптом весьма интересно узнать. Так как пишу в последнюю страницу памяти и она оказывается занятой! Искать нужную страницу весьма муторно, методом подбора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 11 сен 2019, 23:56 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2868
Сделайте себе свой регион нужного размера из оставшегося места свободного в скаттере. Ну точнее сколько страниц надо вам, столько и выделите. Как в IAR это делается хз, но нагуглить думаю элементарно.
Вообще вряд ли последняя страница у вас занята. Вам же написали только что - там FF должны быть, а не нули. Но как компонует линковщик IAR я не знаю, мало ли конечно...

EDIT: Вот всё расписано: https://www.iar.com/support/tech-notes/ ... c-section/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 12 сен 2019, 00:03 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4902
Откуда: Кемеровская область, Киселевск
noob_style писал(а):
открываем к примеру для stm32f051 reference manual. - RM0091. Main Flash
memory имеет 63 страницы - но какая из них занята?

Память заполняется с 0 и по порядку. Заняты все от 0 до размер_прошивки.

В настройках IDE укажите на одну страницу меньше и пишите в последнюю 63. Компилятор ее трогать не будет.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 12 сен 2019, 00:42 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Вот так это делается. Выше - комментарий, что в ld-файле писать. Ну и если выйти выше, в директорию ../inc, можно увидеть, что там в линкер-скрипте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 12 сен 2019, 17:46 
Только пришел

Зарегистрирован: 06 авг 2019, 11:28
Сообщения: 18
Большое спасибо. Будем разбираться.
При #define MY_FLASH_PAGE_ADDR ((uint32_t)0x0800FFFF) - последний адрес последней страницы не проходит. Решить вопрос получилось при адресах 0x0800FF00-0x0800FFF0


Последний раз редактировалось noob_style 12 сен 2019, 21:46, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 12 сен 2019, 18:00 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2868
А из main.cpp делается #include "flash.h"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать энергонезависимую переменную на STM32F103
СообщениеДобавлено: 12 сен 2019, 18:55 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2062
noob_style писал(а):
Большое спасибо. Будем разбираться.
...

Конечно желательно знания по С немного увеличить.
Книга или монитор - неплохие средства для этого.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB