В моем проекте используется хранение данных в i2c eeprom. Данных довольно много, и все они в разного размера кусочках - от 2 до 32 байт. Пока изучал контроллеры данные размещал тупо в памяти с новой 16 байтной стороки - удобно ориентироватся в бинарном редакторе. На одну цепочку команд выделял 16 байт, если она короче пустоту забивал ff. В цикле считывал байты, начиная с адреса команды, цикл от 1 до 16 или пока принятый байт не равен ff.
В самом контроллере были адреса начала всех команд, для каждой кассы, данные по каждой кассе были блоками по 256 байт на кассу - типа и далее "Папки".
Адрес начала каждой папки определялся смежением, относительно которого вычеслялся адрес каждого набора байтов-комманд - типа и далее "файлов".
Но эта организация пипец мне как не нравится, хотя и работает. Во первых - длина файлов может превышать 16 байт, и команды надо удлиннять, но они могут налазит на другие команды, мучительно перебивать адреса и тд
Во вторых - некрасивые лишние цепочки ff, остающиеся после коротких команд.
Все это привело к мысли хранить данные в памяти последовательно, без зазоров, разлеленные маркерами. И вот главный вопрос - как это лучше организовать?