[Решено] нужна помощь с эмуляцией EEPROM

Александрос
Сб 13 января 2018 г. 16:02
Привет, ребята!

Я столкнулся с странным поведением, которое я использую эту библиотеку
https: // github.com/rogerclarkmelbourne/ ... Om_example

#ifndef VECT_TAB_OFFSET #define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. This value must be a multiple of 0x200. */ #endif

Mrburnette
Сб 13 января 2018 г., 17:11
Эмуляция EEPROM была успешно протестирована:
ViewTopic.PHP?T = 1576#P20405

Тем не менее, я лично не проверял.

AN2594 это полномочия документация.

Тем не менее, я никогда не рекомендую использовать эту технику; скорее реализовать внешнее хранилище легко.

http: // stm32duino.com/viewtopic.PHP?f = 13&P = 39136
и
ViewTopic.PHP?T = 586#P6075


Вот соответствующая заметка об эмуляции: 3.4 Возможности езды на велосипеде
Цикл программы/стирания состоит из одного или нескольких доступа к записи и одной страницы стирания
операция.
Когда используется технология eEPROM, каждый байт может быть запрограммирован и стерт конечный
количество раз, обычно в диапазоне от 10 000 до 100 000.
Однако во встроенной флэш -памяти минимальный размер стирания - это страница и число
циклов программы/стирания, применяемых на странице, является количеством возможных циклов стирания. А
STM32F10XXX’S Электрические характеристики Гарантия 10 000 циклов программы/стирания на страницу.
Таким образом, максимальный срок службы эмулированного EEPROM ограничен скоростью обновления
Наиболее часто написанный параметр.
Возможность езды на велосипеде зависит от количества/размера данных, с которыми пользователь хочет обрабатывать.
Луча

Александрос
Сб 13 января 2018 г., 17:17
Спасибо за ответ ;)

Я уверен, что с моим кодом все в порядке, я могу жить с 10.000 Limited Read пишет, вопрос в том, почему, если я перезагрузите доску, EEPROM пуст

Mrburnette
Сб 13 января 2018 г., 17:32
Maple Mini & Клоны представляют собой устройства «средней плотности», как определено ST.

Вот Роджер на синей таблетке:
ViewTopic.PHP?T = 1576#P20754

Поскольку я не играл с эмуляцией, возможно, один из наших членов. Я бы посоветовал вам изменить название на «нужна помощь с эмуляцией EEPROM."

Луча

fpistm
Сб 13 января 2018 г., 17:38
Один, однако, проверьте размер вспышки вашей платы?
Если у вас есть только 64K, это не может поместиться в 0x801F000

Как упоминалось в теме, предоставленной Рэем: Для написания я использую адрес 0x801f000, так что это должно быть «последним» 4 КБ предполагаемой флэш -памяти 128 КБ на BP.

Александрос
Сб 13 января 2018 г. 18:02
128K

victor_pv
Сб 13 января 2018 г., 21:56
Как вы загружаете эскиз?
Возможно ли, что ваш метод загрузки стирает всю память одновременно?
Наш загрузчик не должен этого делать, но при использовании загрузчика ROM, Stlink или любого другого зонда JTAG, возможно, он стирает всю память, а не стирает Indivual Pages.

Александрос
Сб 13 января 2018 г. 22:00
[victor_pv - Сб 13 января 2018 г. 9:56 вечера] - Как вы загружаете эскиз?
Возможно ли, что ваш метод загрузки стирает всю память одновременно?
Наш загрузчик не должен этого делать, но при использовании загрузчика ROM, Stlink или любого другого зонда JTAG, возможно, он стирает всю память, а не стирает Indivual Pages.
Да, я использую ST Link

ZMEMW16
Солнце 14 января 2018 12:52
Извините, люди, если в документации говорится, что размер, который - xxk, то это тот размер, который вам нужно работать.
Если он попадет в продукт, вы бы использовали 64K или 128K ?

это не должно а) делать на первом месте :!: б) пройти первый обзор кода :!:
аполы слишком много самолетов.

Более 64 тыс. Слушается, это может быть 68K, 72K, 76K или 96K или любая граница блока 4K, но не меньше 64K.
На самом деле, поскольку вы за пределами спецификации, это может быть 85356 или любое число более 64 тыс. И менее 128 тыс. Или, может быть, не.

Стивен

Стивестронг
Солнце 14 января 2018 г. 9:19
Может быть?

Пито
Солнце 14 января 2018 г. 11:04
Запустите эскиз с написанием по адресу EEPROM 0, а затем выключите его, а затем прочитайте память с помощью Stlink. Вы должны увидеть там 0, я бы предположил. Затем запрограммируйте эскиз с написанием The EEPROM, прокомментировал, а затем прочитайте его с Stlink. Вы увидите там, скорее всего.

Александрос
Вт 16 января 2018 г. 7:11
[Пито - Солнце 14 января 2018 г. 11:04] - Запустите эскиз с написанием по адресу EEPROM 0, а затем выключите его, а затем прочитайте память с помощью Stlink. Вы должны увидеть там 0, я бы предположил. Затем запрограммируйте эскиз с написанием The EEPROM, прокомментировал, а затем прочитайте его с Stlink. Вы увидите там, скорее всего.
Хорошо, теперь я очень смущен, Пито это возможно? , Так могу ли я использовать его для хранения некоторых данных или нет? :(
Хранит ли ценности, пока программа жива? Я не понимаю, есть ли другой способ, кроме как положить внешний чип EEPROM?

victor_pv
Ср 17 января 2018 г., 19:51
Как указывалось ранее, проблема, скорее всего, вы уничтожаете всю вспышку при загрузке с ST-Link.

Вы должны использовать метод, который не протирает всю вспышку (вы можете сделать это при использовании инструмента GUI ST_LINK, есть возможность выбрать, хотите ли вы полностью стереть MCU или только необходимые страницы). Наш загрузчик также только очищает отдельные страницы.
ROM Serial Bootloader, как ST-Link может сделать это в любом случае, вы должны использовать графический интерфейс, чтобы выбрать то, что вы хотите сделать.

Александрос
Ср 17 января 2018 г. 20:39
Спасибо за ответы, ребята

На самом деле я заставил это работать.

Когда я использовал это
uint32 spi_tx(spi_dev *dev, const void *buf, uint32 len) { uint32 txed = 0; uint8 byte_frame = spi_dff(dev) == SPI_DFF_8_BIT; while (spi_is_tx_empty(dev) && (txed < len)) { if (byte_frame) { dev->regs->DR = ((const uint8*)buf)[txed++]; } else { dev->regs->DR = ((const uint16*)buf)[txed++]; } } return txed; }

STM32WB - DualCore с 2.4 ГГц радио

Baudrate Serial USB