Утилиты для для работы с CRC.

Утилита для конвертирования бинарных фалов в массив на языке С - bin2carray.

    Иногда, при написании программ для микроконтроллеров, требуется вставить в проект заранее созданные ресурсы. в виде массива данных. Это могут файлы изображений, звуков, таблиц, и любые другие бинарные данные, которые могут понадобиться программисту и которые сложно вручную объявить в проекте как массив на языке С. В этом случае как раз пригодится моя утилита bin2carray, которая сможет сконвертировать любой бинарный файл в текстовый с расширением *.c.

    Утилита написана для работы из командной строки и используется мной в среде ОС Windows. Код программы не имеет специфичных для WinAPI функций, по этому легко может быть перенесен на семейство ОС Linux.

    Утилита не претендует на оригинальность - в сети есть множество подобного рода программ. Просто она написана мной.

Возможности
  • Преобразование любого входного файла в текстовый файл языка С с объявленным в файле массивом однобайтных данных типа unsigned char.
  • Задание имени выходного файла.
  • Задание имени массива в выходном файле.
  • Задание количества элементов в одной строке массива.
  • Задание размера массива в выходном файле. Размер не может быть меньше размера выходного файла.
  • Задание однобайтной константы, для заполнения неиспользованного пространства если заданный размер массива больше размера входного файла.
  • Подсчет CRC для выходного массива по заданному алгоритму. Вычисленное значение записывается в конец выходного массива.
  • Задание начального значения для подсчета CRC.
  • Ключи и параметры
    -sn <source_name> Имя входного файла. Этот параметр обязателен.
    -tn [target_name] Имя выходного файла. Если параметр не задан, то создается файл с таким же именем как у входного файла, но к нему добавляется расшинение *.c*.
    -an [array_name] Имя массива. Если параметр не задан, то в выходном файле объявляется массив с именем g_chData.
    -ir [items_row] Количество элементов в одной строке генерируемого массива. По умолчанию - 16.
    -as [array_size] Размер генерируемого массива. Параметр не может быть меньше, чем размер входного файла.
    -fv [fill_value] Констаната, которой заполняется неиспользованное пространство массива, если заданный размер массива больше, чем размер входного файла. По умолчанию - 0.
    -ct [crc_type] Метод подсчета CRC. Варианты поддерживаемых алгоритмов даны ниже.
    Если ключ задан, и параметр ключа верный, то в конце генерируемого массива объявляется подсчитанное значение для установленного типа СRC.
    Если ключ -as не задан, то размер массива увеличится на размер (в байтах) для заданного типа CRC.
    Если ключ -as задан, то, если размер сгенерированного значения CRC не входит в заданный размер массива, программа выдаст ошибку об нехватке места.
    -ci [crc_ini] Начальное значение при подсчете CRC.
    -h [parameter] Вывод справки на английском языке. Если у ключа нет парамера, то выводится этот раздел.Если задан параметр crc то выводится справка по возможным значениям для параметра -ct.
    Утилита для генерации таблицы для быстрого расчета CRC - crc2table

        Утилита создана для быстрого создания модуля на языке С с объявленной таблицей выбранного алгоритма подсчета CRC.

    В силу отсутствия нужного количества свободного времени, на данный момент, работа создаваемой в выходном файле функции не протестирована на всех алгоритмах. Это я осмелюсь поручить тем, кто заинтересовался данным проектом.

    Возможности
  • Генерация таблицы для быстрого метода плдсчета CRC в текстовый файл модуля на языке С.
  • Задание имени выходного файла.
  • Задание количества элементов в одной строке таблицы.
  • Задание генерируемой функции для подсчета CRC.
  • Ключи и параметры
    -ct <crc_type> Тип алгоритма для генерируемой таблицы. Этот параметр обязателен.
    -un [unit_name] Заданием имени файла, в который будет генерироваться таблица и тело функции подсчета CRC.
    -an [array_name] Имя массива. Если параметр не задан, то в выходном файле объявляется массив с именем g_CRC_Table.
    -ir [items_row] Количество элементов в одной строке генерируемой таблицы. По умолчанию - 8.
    -fn [func_name] Имя функции для подсчета CRC. По умолчанию CRC_Make.
    -h [parameter] Вывод справки на английском языке. Если у ключа нет парамера, то выводится этот раздел.Если задан параметр crc то выводится справка по возможным значениям для параметра -ct.
    Подсчет CRC

        При написании кода подсчета CRC для утилит, я основывался на информации,  полученной на ресурсе ru.wikipedia.org/wiki/Циклический_избыточный_код. Смотрите таблицу в разделе Спецификации алгоритмов CRC, таблица Примеры.
        В утилитах, на текущий момент, поддерживается только табличный метод расчета CRC, по этому алгоритмы, не кратные 8-бит, не поддерживаются. Кроме этого, пока, не поддерживаются 64-битные алгоритмы.

        Список поддерживаемых методов подсчета:

  • CRC-8
  • CRC-8/CDMA2000
  • CRC-8/DARC
  • CRC-8/DVB-S2
  • CRC-8/EBU
  • CRC-8/I-CODE
  • CRC-8/ITU
  • CRC-8/MAXIM
  • CRC-8/ROHC
  • CRC-8/WCDMA
  • CRC-16/ARC
  • CRC-16/AUG-CCITT
  • CRC-16/BUYPASS
  • CRC-16/CCITT-FALSE
  • CRC-16/CDMA2000
  • CRC-16/DDS-110
  • CRC-16/DECT-R
  • CRC-16/DECT-X
  • CRC-16/DNP
  • CRC-16/EN-13757
  • CRC-16/GENIBUS
  • CRC-16/MAXIM
  • CRC-16/MCRF4XX
  • CRC-16/RIELLO
  • CRC-16/T10-DIF
  • CRC-16/TELEDISK
  • CRC-16/TMS37157
  • CRC-16/USB
  • CRC-A
  • CRC-16/KERMIT
  • CRC-16/MODBUS
  • CRC-16/X-25
  • CRC-16/XMODEM
  • CRC-24
  • CRC-24/FLEXRAY-A
  • CRC-24/FLEXRAY-B
  • CRC-32
  • CRC-32/BZIP2
  • CRC-32C
  • CRC-32D
  • CRC-32/MPEG-2
  • CRC-32/POSIX
  • CRC-32Q
  • CRC-32/JAMCRC
  • CRC-32/XFER
  • Файлы

        Все выложенные архивы имеют в своем составе скомпилированный exe-файл для Windows а так же исходники.

    bin2carray 160621

    • Первый релиз.

    bin2carray 160629

    • Добавил утилиту crc2table. Работа генерируемой функции не протестирована!
    Поддержка сайта и проекта

        Если Вам понравился этот проект и у Вас есть желание и возможность поддержать мой сайт

    Обсуждение
         

    Материал на страницах этого сайта выложен только для ознакомительных целей.
    Любая перепечатка и распространение, использование в коммерческих целях материалов сайта только с разрешения и по согласованию с автором.
    При использовании материалов сайта прямая ссылка и указание авторства обязательна.