Чтение "Байты параметров хранения пользовательских данных"?

Рамимо
Чт 27 июля 2017 12:15
Привет,

STMF1 имеет два специальных байта, называемые «байты для хранения пользовательских данных». Вы можете написать их с демонстратором Flash Loader. Это было бы очень полезно для специальных версий, по крайней мере для меня :) К сожалению, я не нашел намека на то, как прочитать эти два байта во время выполнения. Любые идеи?

Martinayotte
Чт 27 июля 2017 г. 13:20
[Рамимо - Чт 27 июля 2017 12:15] - STMF1 имеет два специальных байта, называемые «байты для хранения пользовательских данных».
Я не вижу таких ссылок в таблицах данных, где вы видели это, кроме Demongator Flash Loader ?
Возможно, это простые байты, написанные где -то в конце загруженной прошивки ...

ZMEMW16
Чт 27 июля 2017 г. 14:01
@ramimo
Googled "Flash Loader Demorgement Option опция хранения данных пользователя байтов"
первый ответ http: // www.ул.com/resource/en/user_manu ... 171488.PDF
Основной поиск, так что не слишком сложно
Стивен

Martinayotte
Чт 27 июля 2017 г. 14:30
[ZMEMW16 - Чт 27 июля 2017 г. 14:01] - Основной поиск, так что не слишком сложно
Но это не предоставляет никаких Infos, где эти байты расположены в чипе, например, в STM32F103C8.

Рамимо
Чт 27 июля 2017 г. 14:31
@martinayotte Я нашел только какой -нибудь документ о демонстранте. Нет подсказка, где он хранится или есть специальный метод доступа или адрес, где найти эти байты.

@zmemw16: Забавно, когда некоторые люди думают, что они единственные, кто знает о Google. Да, я гуглил около 30 минут. Да, я нашел документы о демонстранте (примерно через 10 секунд). Да, демонстратор может читать и написать эти два байта. И нет, нет никакой информации о том, как вы можете это сделать во время выполнения. Итак, я разместил здесь свой вопрос.

Martinayotte
Чт 27 июля 2017 г. 14:36
Хорошо ! Я думаю, что нашел это здесь, на странице 20:

http: // www.ул.com/content/ccc/resource/ ... 283419.PDF

0x1ffff804

Редактировать: Кстати, 0x1ffff804 для STM32F1XX, для F4XX это, кажется, 0x1fffc004

Рик Кимбалл
Чт 27 июля 2017 г. 14:55
Если вы не хотите писать какой -либо код, вы могли бы использовать устройство Stlink с OpenOCD или BMP.
$ openocd -f ebay_f103c8_micro.cfg -c 'init' -c 'stm32f1x options_read 0' -c 'exit'
Открыть отладчик на чип 0.10.0+dev-00096-gf605a23 (2017-04-22-13: 47)
Лицензирован в рамках GNU GPL V2
Для отчетов об ошибках читай
http: // openocd.org/doc/doxygen/ошибки.HTML
Информация: выбранная транспорта заняла целевую контроль низкого уровня. Результаты могут отличаться по сравнению с простым JTAG/SWD
Скорость адаптера: 1000 кГц
adapter_nsrst_delay: 100
Нет отдельно
Нет отдельно
Информация: невозможно соответствовать запрошенной скорости 1000 кГц, используя 950 кГц
Информация: невозможно соответствовать запрошенной скорости 1000 кГц, используя 950 кГц
Информация: Clock Speed ​​950 кГц
Информация: Stlink V2 JTAG V28 API V2 Swim V18 VID 0x0483 PID 0x374B
Информация: Использование STLINK API V2
Информация: Целевое напряжение: 0.007864
Ошибка: целевое напряжение может быть слишком низким для надежной отладки
Информация: STM32F1X.ЦП: Аппаратное обеспечение имеет 6 точек останова, 4 точки наблюдения
Информация: идентификатор устройства = 0x20036410
Информация: размер вспышки = 64kbytes
Опция байт: 0x3fffffc
Защита считывания
Программный сторож
Остановка: сбросить сброс
В режиме ожидания: сброс не сгенерирован
Пользовательский опция0: 0xff
Пользовательский опция1: 0xff
$

Рамимо
Чт 27 июля 2017 г., 19:12
@martinayotte, понятия не имею, как вы можете знать, где это задокументировано, но спасибо!

Martinayotte
Чт 27 июля 2017 г., 19:36
Я понял, что через несколько минут Googling, а затем обнаружил, что адрес регистров в STM PDF предоставлен выше.

ZMEMW16
Чт 27 июля 2017 г., 19:50
Я оба ссылка & Руководства по программированию, никогда не думали смотреть на них - странно : идея:
SRP

Рамимо
Чт 27 июля 2017 г., 21:43
Просто чтобы быть небольшой помощью:

#define userdatastorageoptionsbyte1 *((byte *) 0x1ffff804)
#define userdatastorageoptionsbyte2 *((byte *) 0x1ffff806)

Это может быть полезно для Libs STM32 Arduino. С лучшим именом, конечно.

Спасибо :)

Rogerclark
Чт 27 июля 2017 г. 22:03
Можете ли вы просто прочитать и написать в эти локации, или сначала должна быть разблокирована страница вспышки (или аналогичной)

Есть ли предел, сколько раз, на которое они могут быть записаны, e.глин. Как количество стираний для страниц Flash

Рамимо
Пт 28 июля 2017 г. 8:45 утра
Я не эксперт по вспышке, но я на 100% уверен, что вы можете написать эти байты, не написав всю страницу. Вполне возможно, что эта конкретная флэш -страница со всеми важными флагами - это защищенный nomatterwhat, пока вы соответственно установите прыжки для ботинок.

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

Rogerclark
Пт 28 июля 2017 г. 10:37
Вы также можете использовать библиотеку EEPROM, которая использует Flash для эмуляции EEPROM на AVR и обычно не перезаписывается, так как вы можете выбрать флэш -страницу в верхней части доступной вспышки, которая не будет тронут, если ваша программа не займет все Страницы во вспышке.

Есть также несколько байтов специальной оперативной памяти (я забыл их имя), которые переживают мягкую перезагрузку, но не сохраняются, если вы питаете цикл доски

Рамимо
Пт 28 июля 2017 г., 19:09
Я хотел написать, что я на 100% уверен, что ты не мочь Напишите эти байты, не записывая всю страницу. О EEPROM: это определенно стоит попробовать, особенно потому, что почти все STM32F103 имеют 128 КБ. Ничего для обновлений периода, но хорошо для EG. Сохранение конфигураций.

Рик Кимбалл
Пт 28 июля 2017 г., 19:28
PM0075 перечисляет необходимые шаги, чтобы изменить байты опциона пользователя

"2.3.5 вариант программирования байта
Опции байтов запрограммированы иначе, чем обычные адреса пользователя. Количество
Опции байтов ограничены 8 (4 для защиты от записи, 1 для защиты чтения, 1 для конфигурации
и 2 для хранения пользовательских данных). После разблокировки FPEC пользователь должен разрешить
программирование байтов опции путем написания того же набора клавиш (Key1 и Key2) в
Зарегистрируется регистр flash_optkeyr для установки бита Optwre в регистре flash_cr (см
Раздел 2.3.1 для ключевых значений). Затем пользователь должен установить бит OPTPG в flash_cr
Зарегистрируйте и выполните операцию на полусвете по желаемому адресу Flash.

... это и многое другое, чтобы читать
"
Libopencm3, похоже, имеет какой -то код для борьбы с байтами вариантов

https: // github.com/libopencm3/libopencm ... F01.C#L178

Управляемый Таймер ЦАП