Иногда, при написании программ для микроконтроллеров, требуется вставить в проект заранее созданные ресурсы. в виде массива данных. Это могут файлы изображений, звуков, таблиц, и любые другие бинарные данные, которые могут понадобиться программисту и которые сложно вручную объявить в проекте как массив на языке С. В этом случае как раз пригодится моя утилита bin2carray, которая сможет сконвертировать любой бинарный файл в текстовый с расширением *.c.
Утилита написана для работы из командной строки и используется мной в среде ОС Windows. Код программы не имеет специфичных для WinAPI функций, по этому легко может быть перенесен на семейство ОС Linux.
Утилита не претендует на оригинальность - в сети есть множество подобного рода программ. Просто она написана мной.
-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.
В силу отсутствия нужного количества свободного времени, на данный момент, работа создаваемой в выходном файле функции не протестирована на всех алгоритмах. Это я осмелюсь поручить тем, кто заинтересовался данным проектом.
-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 для утилит, я основывался на информации,
полученной на ресурсе
ru.wikipedia.org/wiki/Циклический_избыточный_код. Смотрите таблицу в разделе Спецификации алгоритмов CRC, таблица Примеры.
В утилитах, на текущий момент, поддерживается только табличный метод расчета CRC, по этому алгоритмы,
не кратные 8-бит, не поддерживаются. Кроме этого, пока, не поддерживаются 64-битные алгоритмы.
Список поддерживаемых методов подсчета:
Все выложенные архивы имеют в своем составе скомпилированный exe-файл для Windows а так же исходники.
Если Вам понравился этот проект и у Вас есть желание и возможность поддержать мой сайт
Материал на страницах этого сайта выложен только для ознакомительных целей.
Любая перепечатка и распространение, использование в коммерческих целях материалов сайта только с разрешения и по согласованию с автором.
При использовании материалов сайта прямая ссылка и указание авторства обязательна.