Сниппеты для STM32
Dec. 6th, 2017 08:19 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Второй вечер вожусь с эмуляцией EEPROM во флеш-памяти STM32F0. Раньше как-то не парился, и стирал страницу каждый раз, как менял настройки. Теперь решил поаккуратней сделать. Завел новую директорию Snippets в репозитории на гитхабе.
Работает очень просто: начиная с заданного адреса (я выделяю последнюю, с номером 15) выделяется одна килобайтная страница. По команде сохранения ищется первая пустая ячейка и в нее записываются данные; если все пустые ячейки кончились, страница стирается и процесс начинается с нулевого индекса. Для чтения настроек процесс проходит аналогично: ищем первую пустую запись, возвращаем индекс предыдущей; если индекс неотрицательный (-1 означает девственно чистую флеш, -2 — повреждение данных), memcpy записывает в текущий конфиг данные из флеша, если же индекс отрицательный, оставляется дефолтное значение конфига.
Потихоньку клепаю прошивку ММФП. Пока что отлаживаю на девборде китайской, как будет более-менее похоже на рабочий код, прошью чипы в платах системы управления.
Работает очень просто: начиная с заданного адреса (я выделяю последнюю, с номером 15) выделяется одна килобайтная страница. По команде сохранения ищется первая пустая ячейка и в нее записываются данные; если все пустые ячейки кончились, страница стирается и процесс начинается с нулевого индекса. Для чтения настроек процесс проходит аналогично: ищем первую пустую запись, возвращаем индекс предыдущей; если индекс неотрицательный (-1 означает девственно чистую флеш, -2 — повреждение данных), memcpy записывает в текущий конфиг данные из флеша, если же индекс отрицательный, оставляется дефолтное значение конфига.
Потихоньку клепаю прошивку ММФП. Пока что отлаживаю на девборде китайской, как будет более-менее похоже на рабочий код, прошью чипы в платах системы управления.