Easyelectronics.ru

Электроника для всех
Текущее время: 23 окт 2019, 23:28

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

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

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


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

_________________
RADIOWOLF.RU


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

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


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

Зарегистрирован: 06 авг 2019, 11:28
Сообщения: 12
К примеру можно прочитать данные.
Создать обращение:
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
Сообщения: 4016
Откуда: КЧР, поселок Нижний Архыз
noob_style писал(а):
как узнать свободна ли страница памяти, которую мы планируем стирать для последующей записи данных?

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


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

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


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

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

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


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

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4344
Откуда: Кемеровская область, Киселевск
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
Сообщения: 4016
Откуда: КЧР, поселок Нижний Архыз
Вот так это делается. Выше - комментарий, что в ld-файле писать. Ну и если выйти выше, в директорию ../inc, можно увидеть, что там в линкер-скрипте.


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

Зарегистрирован: 06 авг 2019, 11:28
Сообщения: 12
Большое спасибо. Будем разбираться.
При #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
Сообщения: 2284
А из main.cpp делается #include "flash.h"?


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

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

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


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

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


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

Сейчас этот форум просматривают: antonluba


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

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

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