Стоит задача. Обработка блоков данных, при этом блоки могут быть разных размеров, у каждого блока 1й байт определяет его тип, по которому мы знаем его размер. Любой блок может быть стёрт или изменён на другой тип.
Проблема и решения. Перемещение на N блок для его обработки: номер блока собираюсь расчитывать от 1го, т.е. узнаем размер 1го, перешли ко 2му, узнали его размер и так далее. Стирание блока: выясняем размер по типу следующего за ним блока, сдвигаем на пустое место которое очистил блок, потом следущий за ним и так до последнего блока. Изменения типа: перед изменением программа оценивает сколько памяти осталось, и в зависимости от выбранного нового типа блока все блоки после изменнённого либо отодвигаются от него либо пододвгаются к нему.
Кто решал подобные задачи, в каком направлении думать ещё? Как ещё можно это всё реализовать попроще? Всё это тянет к файловой системе (чего никода не делал), но думаю это будет сложновато для такой задачи.
Данные будут размещаться в РАМ ATmega2560 и там же обрабатываться, и все сохраняться/считываться из его eeprom при запуске и сохраняться после настройки в РАМ.
|