Skip to content

NetDm/MCU-CLI-w25Q80-emulEEPROM

Repository files navigation

CLIw25Q80

Проект на микроконтроллере со встроеной консолю управления СLI. Управление SPI-FLASH w25Q80 (1 МБ). Эмуляция EEPROM.

Поддерживаются следующие операции: стирание всей микросхемы, стирание и перезапись произвольных байтов из потока консоли

Для управления процессами используется консоль redline CLI для MCU без RTOS, используется неблокирующая таймер-функция вызываемая из суперцикла Реализован автомат процессов внешней флеш памяти, в виде аналога thread - неблокирующей таймер-функции реализующей автомат. CLI содержит редактор и память комманд, мануалы к ним показываются при вызове man, см вывод команды: man man (https://github.com/NetDm/CLIw25Q80/blob/master/UserCodes/CLIcommands.c) - удобный общий файл, содержащий реализации и список комманд Пример перезаписи данных в произвольные адреса. Демострируется копирование, полное истирание и замена данных на границе 0, 1 сектора (адр 4095-4097) и хвостового сектора (адрес: 1Мбайт)

Пример истирания флеш по произвольным адресам с сохранением прочего содержимого секторов:

  • На скриншотах производиться запись в два сектора 1й командой. При этом для целостности прочих данных выполняется следующий алгоритм работы с flash: вычитывается сектор выровненый по мин. затираемой области 4096 байт, новые данные замещаются в нем в нужном месте, потом старые и новые данные записываются обратно на флешь, так-же и следующий сектор, только данные замещаются не в хвосте буфера, а в начале. Алгоритм работы и прочие материалы смотреть в подпапке /remarks/

В проекте содержаться:

Блокирующая низкоуровневая библиотека базовых операций SPI FLASH w25Q80 в папке 'UserCodes/NvmSpi25Qxx/' Cопутствующий файл 'UserCodes/w25q80def.h' содержит настройки SPI flash

Неблокирующий автомат процесса записи потока из UART верхнего уровня UserCodes/ApL/NVM25Q80.c по средствам низкоуровневой библиотеки NvmSpi25Qxx. Для работы автомата процесса с внешней флеш, необходимо периодически вызывать неблокирующую таймер-функцию <bool_t> NVM25Q80.c::threadNVM25Q80() автомата. При этом таймер-функция будет возращать TRUE в случае идущего процесса записи внешнего флеш из потока, истирания внешнего флеш. Запуск процесса записи из потока и истирания осуществляется предварительным вызовом NVM25Q80.c::startNvm(nvm_t)*, в (nvm_t*) - передается указатель на структуру вводных данных; в случае подмены потока данных, функцией NVM25Q80.c::pfStreamForErase(..) производиться истирание произвольных ячеек

изображение

Скриншот настроек тактовых частот, так-же содержиться в подкаталоге '/CLI25Q80/remarks/'

Для внутренней отладки printf методом используется дополнительный UART1, скорость обмена 1М (1 152 000) Для терминала используется UART2, скорость обмена 9600, DMA-Rx на прием Для подключения w25Q80 SPI Flash используется SPI1 и PA4 <-> CS Для общей индикации работы - светодиод на GPIO BLINK

About

Embedded in MCU! RedLine CLI management console, EEPROM emulation on SPI-FLASH w25Q80 (1 MB)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages