Я разрабатываю встроенную систему, которая может тестировать большое количество проводов (до 360) - по сути, система проверки непрерывности. Система работает путем синхронизации тестового вектора и считывания выходных данных с другого конца. Выходные данные затем сравниваются с сохраненным результатом (который будет на SD-карте), который сообщает, каким должен был быть вывод . Тестовые векторы - просто ходячие, поэтому нет необходимости хранить их где-либо. Процесс будет выглядеть примерно так:
- Контрольный вектор выхода (ходячие)
- Считать в выходной тест-вектор.
- Считать соответствующий выходной тест-вектор с SD-карты, который сообщает, каким должен быть выходной вектор.
- Сравните тестовые векторы из шагов 2 и 3.
- Запишите ошибки / неисправности в отдельный массив.
- Вернитесь к шагу 1, если не проверены все провода.
- Вывод ошибок / неисправностей на ЖК-дисплей.
Мое оборудование состоит из большого сдвигового регистра, который синхронизирован с микроконтроллером AVR. Для каждого тестового вектора (который также будет 360-битным) мне нужно будет прочитать 360-битный. Таким образом, для 360 проводов общий объем данных будет 360 * 360 = 16 КБ или около того. Я уже знаю, что не могу сделать это за один проход (то есть прочитать все данные, а затем сравнить), поэтому это должен быть вектор-тест по вектору-тестом.
Поскольку нет внутренних типов, которые могут содержать такие большие числа, я намерен использовать массив битов длиной 360 бит. Теперь мой вопрос: как мне сохранить этот битовый массив в текстовом файле?
Один из способов - хранить необработанные значения, то есть в каждой строке сохранять необработанные двоичные данные, которые я считывал из регистра сдвига. Итак, для 8 проводов это будет 0b10011010. Но это может быть уродливо для до 360 проводов - каждая строка будет содержать 360 байтов.
Другим способом является сохранение шестнадцатеричных значений - это будет просто два символа для 8 бит (9А для вышеупомянутого) и около 90 символов для 360 бит. Это, однако, потребовало бы от меня чтения текста - строка за строкой - и каким-то образом преобразовать шестнадцатеричное значение для представления в битовом массиве.
Так что же является лучшим решением для такого рода проблем? Мне нужно, чтобы решение было полностью «детерминированным» - у меня не может быть вызовов malloc или чего-то подобного. Они в какой-то степени не встроены в то, что я читал.
РЕЗЮМЕ
Мне нужно хранить большие значения, которые не могут быть представлены никакими традиционными типами переменных. В настоящее время я намерен хранить эти значения в bitarray. Как лучше всего хранить эти значения в текстовом файле на SD-карте?