Колориметру добавили RAL прямо в штатную прошивку — через Ghidra, STM32 DFU и WebUSB
Патч объёмом 5.084 КБ добавляет в 3nh CR4501 автономный экран ближайшего оттенка RAL Classic и сохраняет заводскую калибровку прибора. Таблица на 216 цветов получена тройным измерением физического веера RAL K5, а установщик работает через штатный STM32 DFU из браузера. Точность такого сопоставления упирается в старение эталона, блеск образца и разброс калибровок.
Колориметр 3nh CR4501 получил автономный поиск ближайшего RAL Classic в штатной прошивке. Модификация добавляет отдельный экран с кодом и названием оттенка, используя исходную измерительную оптику, дисплей и микроконтроллер прибора. В исходной конфигурации CR4501 рассчитан на связку с мобильным приложением и базами цветовых карт.
Работа началась с чтения firmware через отладочный интерфейс и анализа образа в Ghidra. В коде были найдены обработчики экранов и кнопок, после чего в свободную область Flash встроили собственный модуль. Запись затрагивает семь мест: 4-байтный переход на новый экран, четыре 4-байтных изменения логики кнопок, 1328 байт машинного кода интерфейса и 3732 байта таблицы RAL. Общий объём записываемых данных составляет 5084 байта.
Таблица содержит 216 цветов RAL Classic. Каждый оттенок измерялся трижды оригинальным полуматовым веером RAL K5; автор проекта приводит среднюю повторяемость 0.08 ΔE и худший результат 0.50 ΔE. Запись на один цвет занимает 10 байт: координаты Lab, номер RAL и экранный цвет. Названия оттенков пришлось кодировать через повторяющиеся фрагменты строк: полные текстовые названия не укладывались в доступную область памяти.
Сам CR4501 использует измерительную геометрию 45/0 и апертуру Ø8 мм. Для поиска RAL это существенное ограничение: совпадение координат Lab не гарантирует совпадения визуального впечатления на глянцевых, текстурных, металлизированных или полупрозрачных покрытиях. Цветовой веер также меняется при хранении и освещении, а индивидуальная коррекция разных экземпляров колориметра даёт дополнительный разброс. Поэтому модификация применима для оперативного подбора близкого кода, однако приёмочный контроль покрытия требует сверки с физическим эталоном и регламентированной методики измерения.
Установка сделана через WebUSB в Chrome или Edge и штатный загрузчик STM32 DFU. Перед прошивкой инструмент считывает резервную копию области приложения 0x08004000–0x0802FFFF объёмом 180224 байта, затем сверяет исходные байты во всех точках изменений. При несовпадении ожидаемой версии запись прекращается. Адреса выше 0x08030000 исключены из операции: там хранятся настройки и индивидуальные калибровочные данные прибора.
Такой порядок снижает риск типичной ошибки при работе с чужими дампами. Перенос верхней области Flash с другого CR4501 способен подменить заводскую коррекцию и исказить измерения. Патч ограничен кодом интерфейса и собственной таблицей, поэтому измерительный тракт, данные настройки и калибровка остаются в исходном состоянии. Браузерный установщик заявлен как локальный инструмент; резервная копия сохраняется до модификации, что позволяет вернуть исходный образ.
Проект показывает практическую плотность задачи в приборном reverse engineering: несколько килобайт свободной Flash вместили интерфейс, компактную цветовую базу, контроль версии и сценарий безопасной записи. Основная метрологическая граница лежит вне прошивки: таблица снята одним прибором по одному экземпляру веера и отражает конкретную пару «колориметр — эталон».