Например TDA7294

Форум РадиоКот • Просмотр темы - STM32L запись в EEPROM при компиляции
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Пн окт 26, 2020 12:28:51

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Ср июл 01, 2020 13:23:05 
Встал на лапы

Зарегистрирован: Сб янв 11, 2014 21:25:55
Сообщений: 113
Рейтинг сообщения: 0
Доброго времени суток! Ранее для записи переменной по конкретному адресу во Flash при компиляции использовал такую конструкцию:
MyVariable[] __attribute__((at(0x08002000)))={0, 4, 3, 55, 32};
Вопрос, можно ли с использованием подобной директивы записать массив данных/переменную в область EEPROM при компиляции?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Ср июл 01, 2020 17:48:41 
Это не хвост, это антенна
Аватар пользователя

Карма: 10
Рейтинг сообщений: 214
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1330
Рейтинг сообщения: 2
При компиляции ничего в микроконтроллер не пишется.


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Ср июл 01, 2020 18:25:54 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 334
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 1690
Рейтинг сообщения: 0
А еще прочитайте http://www.keil.com/support/man/docs/ar ... 981140.htm, а то создается впечатление, что MyVariable[] __attribute__((at(0x08002000)))={0, 4, 3, 55, 32}; - это просто от балды.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Чт июл 02, 2020 14:07:06 
Друг Кота
Аватар пользователя

Карма: 69
Рейтинг сообщений: 1187
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7439
Рейтинг сообщения: 0
В STM32 нет как таковой EEPROM, это просто выделенная область FLASH. Так что может быть и да.

Надо посмотреть, как указаны границы FLASH в файле линкера. Если область EEPROM туда входит, то должно получиться. Можно попробовать завести отдельный сегмент для EEPROM и располагать переменные там. Главное чтобы линкер положил данные куда надо, и софт для программирования это правильно понял.

Но я бы просто из программы записывал при первом старте, тем более, что механизм возврата к настройкам по-умолчанию всегда полезен.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Последний раз редактировалось YS Чт июл 02, 2020 14:12:56, всего редактировалось 1 раз.

Вернуться наверх
 
Вебинар «STM32L5. Секреты оценки энергопотребления» (05.11.2020)

Компания КОМПЭЛ приглашает 5 ноября принять участие в вебинаре, посвященном первому семейству МК STM32L5 на ядре Cortex-M33. На вебинаре будет рассказано об ошибках при расчете энергопотребления МК с помощью отладки STM32L562E-DK. Отладки STM32L562E-DK будут разыгрываться среди участников. Информация об условиях участия будет озвучена на вебинаре.

Подробнее>>
В сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Чт июл 02, 2020 14:09:20 
Сверлит текстолит когтями

Карма: 4
Рейтинг сообщений: 275
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1145
Рейтинг сообщения: 1
В STM32 нет как таковой EEPROM, это просто выделенная область FLASH.

Вообще-то в серии L есть именно EEPROM.


Вернуться наверх
 
Управляй таймером с пикосекундным разрешением!

Для систем с цифровым управлением одним из важнейших параметров является разрешение. Чем точнее выполняется генерация и измерение сигналов, тем выше будет качество управления. Это касается таких приложений как источники питания, мощные инверторы, системы освещения, управление электродвигателями и прочие. Специально для ответственных задач компания STMicroelectronics предлагает использовать микроконтроллеры STM32 со встроенным таймером повышенного разрешения HRTIM.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Чт июл 02, 2020 14:20:03 
Встал на лапы

Зарегистрирован: Сб янв 11, 2014 21:25:55
Сообщений: 113
Рейтинг сообщения: 0
В STM32 нет как таковой EEPROM, это просто выделенная область FLASH. Так что может быть и да.

Надо посмотреть, как указаны границы FLASH в файле линкера. Если область EEPROM туда входит, то должно получиться. Можно попробовать завести отдельный сегмент для EEPROM и располагать переменные там. Главное чтобы линкер положил данные куда надо, и софт для программирования это правильно понял.

Но я бы просто из программы записывал при первом старте, тем более, что механизм возврата к настройкам по-умолчанию всегда полезен.


EEPROM конечно же есть в L-серии. Но я посмотрел на размер секторов FLASH, они довольно мелкие, выделил пару для хранения данных и забил на EEPROM.


BlackKilkennyCat писал(а):
А еще прочитайте http://www.keil.com/support/man/docs/ar ... 981140.htm, а то создается впечатление, что MyVariable[] __attribute__((at(0x08002000)))={0, 4, 3, 55, 32}; - это просто от балды.

То, что вы не пробовали так делать, не значит, что эта конструкция не работает.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Чт июл 02, 2020 14:37:00 
Друг Кота
Аватар пользователя

Карма: 69
Рейтинг сообщений: 1187
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7439
Рейтинг сообщения: 0
Цитата:
Вообще-то в серии L есть именно EEPROM.


Ну, они просто так пишут. :)

Эта так называемая EEPROM расположена непосредственно за FLASH, управляется тем же контроллером и стирать ее можно не менее чем по слову за раз (ну хорошо хоть не по 4 кБ). Один байт стереть и перезаписать нельзя, что явно говорит о том, что это не настоящая EEPROM. :)

Есть у меня подозрения, что из этой так называемой EERPOM и код запустить можно. :)

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Чт июл 02, 2020 15:02:24 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 334
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 1690
Рейтинг сообщения: 0
То, что вы не пробовали так делать, не значит, что эта конструкция не работает.

Вы сделали странный и глупый вывод.


Вернуться наверх
 
Бытовой пирометр АКИП-9312 – просто удобно!

Диапазон 35 °С ...42°С (температура тела) погрешность 0,3 °С
Диапазон 0 °С ...100°С (бытовая сфера) погрешность 1,0 °С
Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Чт июл 02, 2020 15:32:14 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 114
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3007
Рейтинг сообщения: 0
YS писал(а):
стирать ее можно не менее чем по слову за раз
Значит память 32-ух битная (неудивительно учитывая разрядность ядра).

YS писал(а):
Один байт стереть и перезаписать нельзя, что явно говорит о том, что это не настоящая EEPROM.
Это ни о чем не говорит.
Память 32-ух битная, а не 8-ми битная.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Пн июл 20, 2020 20:12:28 
Открыл глаза

Карма: -3
Рейтинг сообщений: -36
Зарегистрирован: Пт июн 26, 2020 16:33:29
Сообщений: 63
Рейтинг сообщения: 0
При компиляции разумеется ничего в МК не пишется. Пишется при загрузке. Но! Есть такая гадость, что EEPROM после сброса залочена и в нее нельзя писать сразу. Да, не эмуляция, а самая настоящая EEPROM есть в некоторых из "элек". Она сделана на той же флеши, но с отдельными адресами и с большим гарантированным числом перезаписей. Ее можно писать без стирания, хоть побайтно, хоть пословно, без разницы. Она работает именно как EEPROM.
Чтобы при прошивке записать в EEPROM, придется в скрипте дебагера предварительно разблокировать запись двумя командами:
set *0x40023c0c = 0x89ABCDEF
set *0x40023c0c = 0x02030405

_________________
Почти все плюсы в свою карму и в рейтинги сообщения поставил себе сам, своими же созданными для этих целей клонами. aen


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Пн июл 20, 2020 22:03:46 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 334
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 1690
Рейтинг сообщения: 0
Если она сделана на той же флеши, то она такая же. У нее не может быть иная физика.
Подобная гадость с блокировкой не является свойством мк, а лишь кривого инструментария.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Вт июл 21, 2020 06:40:38 
Открыл глаза

Карма: -3
Рейтинг сообщений: -36
Зарегистрирован: Пт июн 26, 2020 16:33:29
Сообщений: 63
Рейтинг сообщения: 0
Почему? В референс-мануале четко и однозначно написано:
Unlocking the Data EEPROM block and the FLASH_PECR register
After reset, Data EEPROM block and the Program/erase control register (FLASH_PECR) are not accessible in write mode and the PELOCK bit in FLASH_PECR is set. The same unlocking sequence unprotects them both at the same time.
The following sequence is used to unlock the Data EEPROM block and FLASH_PECR register:
• Write PEKEY1= 0x89ABCDEF to the Program/erase key register (FLASH_PEKEYR)
• Write PEKEY2= 0x02030405 to the Program/erase key register (FLASH_PEKEYR)


И "физика" там немного другая. Можно писать даже побайтно без стирания. Да и гарантированное число перезаписей указано в 300 тыс. против 10 тыс у программного флеша. То есть, в принципе, очень даже годная штука для энергонезависимого хранения настроек и прочего изменяемого контента.

Тут дело немного в другом. Чтобы записать данные в EEPROM вместе с прошивкой программной памяти, нужно писать скрипт для External Loader. Я пока что еще не разбирался с этим, а готовых скриптов вроде как нету. Ограничился пока что тем, что прописал в стартап-скрипте строчки, указанные в предыдущем посте. Писать их нужно до команды load. Работает кривовато, но грузит нормально.

_________________
Почти все плюсы в свою карму и в рейтинги сообщения поставил себе сам, своими же созданными для этих целей клонами. aen


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32L запись в EEPROM при компиляции
СообщениеДобавлено: Ср авг 05, 2020 11:16:05 
Вымогатель припоя

Карма: -17
Рейтинг сообщений: 8
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 541
Рейтинг сообщения: 0
При компиляции ничего в микроконтроллер не пишется.

Не факт. Может компиляция происходит на этом же самом МК? :)))


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y