Я занимаюсь разработкой встроенного оборудования, для которого требуются данные с ПК. Я использую SD-карту в формате FAT32 для предоставления этой информации. Данные - это просто файл Excel, который я экспортирую в CSV. Мой вопрос, должен ли я позволить uC (AT Mega 128L) обрабатывать это, используя char* strtok (char *s, const char *delim)
, или я должен написать небольшую утилиту, которая преобразует этот файл CSV в двоичный формат?
Производительность, если она достаточно высокая, не имеет большого значения и размера файла. Самая большая проблема - использование SRAM.
длина строки макс. Максимум 40 символов с о. Есть около 7 полей, два из которых в основном индексы. Предполагается, что ОК извлекает интересующую его информацию, просматривая эти индексы и проверяя их соответствие. Например, предположим, что для uC нужна информация о чем-то, что хранится в индексе 5. Затем он должен перейти сюда, получить остальные 5 полей и отобразить их на экране. ОК требует «случайного» доступа к файлу - то есть, в один момент ему может понадобиться что-то из индекса 7, а в другой - что-то из индекса 70.
Как я понимаю, было бы лучше, если бы это был двоичный файл со строго определенным форматом (то есть каждое поле было бы фиксированным числом байтов). Преимущество состоит в том, что ОК может непосредственно искать интересующий его байт. Например, предположим, что каждая «запись» занимает 100 байтов (это будет намного меньше, но только в качестве примера). ОК знает, что второй индекс будет начинаться с 100 (0-99 для первой записи), третий - с 200 и т. Д.
Так что, если ему нужен доступ к 7-й записи, он просто ищет 700-й байт и извлекает соответствующую информацию. Будет ли бинарный файловый подход лучше, чем CSV? Моя главная задача - использование SRAM и разумная производительность.