Цель данной статьи рассказать простыми словами о том, какие бывают реализации трансиверов по типу защиты от записи и какие меры предпринимать, чтобы быстро определить тип защиты для модуля и успешно его перепрограммировать с использованием программаторов SFPTotal Mini или SFPTotal Plus.
На печатной плате SFP трансиверов без защиты от записи обычно установлена микросхема памяти EEPROM, которая содержит "паспортную информацию" о типе модуля и может быть перезаписана без каких-либо ограничений и блокировок со стороны модуля. В таких трансиверах, как правило, доступна для чтения только страница A0h, а чтение страницы A2h возвращает ошибку. Для записи в такие модули достаточно загрузить необходимую прошивку в окно программы и нажать <Запись>. После выполнения операции записи интерфейс программы должен вернуть ответ WRITE OK в случае, если запись прошла успешно.
Самая большая проблема с прошивкой таких модулей - выбор правильной скорости записи. EEPROM сама по себе довольно медленная память, поэтому лучше всего её программировать при частоте тактирования шины данных 1 кГц. Это в 10 раз медленнее, чем стандартная скорость, с которой работают программаторы SFPTotal. Вы можете с легкостью изменить скорость работы через настройки программы. Остальное не доставит хлопот.
Медные трансиверы SFP RJ45 и DAC кабели не имеют оптики, а следовательно, не содержат лазер-драйвера и не нуждаются в функции DDM для контроля характеристик мощности сигнала на приемнике и передатчике. И часто такие модули также невозможно прошить. Как и в случае с незащищенными трансиверами, устройство таких модулей довольно примитивное, а роль памяти, хранящей характеристики модуля, выполняет простая микросхема EEPROM.
Чтобы исключить несанкционированную или случайную перезапись кода в память модуля, производители используют различные трюки, которые позволяют заблокировать EEPROM от нежелательных изменений. Нужно заметить, что подобные меры защиты со стороны производителей не лишены смысла. В практике наших клиентов происходили случайные стирания памяти модуля или изменение рабочего кода в результате сбоев оборудования.
В схеме трансиверов c аппаратной блокировкой EEPROM реализована защита с использованием специального контакта WP (Write protect) микросхемы памяти.
При наличии на контакте WP логического уровня равного напряжению питания, запись в модуль невозможна - память заблокирована. Чтобы модуль в обычном состоянии был заблокирован от записи, данную линию соединяют через резистор с контактом SFP порта, на котором предусмотрено напряжение питания, или выходом, на котором предусмотрен высокий логический уровень по-умолчанию. В результате, при включении в порт коммутатора память такого модуля доступна только для чтения.
Чтобы сделать модуль перепрограммируемым, в цепь контакта WP включают резистор с большим номиналом (большим, чем к питанию), подтягивающий линию к земле. Таким образом, если разорвать план питания или принудительно соединить соответствующую линию SFP с землей (никогда так не делайте!), на контакте WP микросхемы памяти появится низкий логический уровень - модуль станет доступен для записи.
В условиях завода используются специальные программаторы, которые подают необходимый уровень на контакт, отвечающий за разблокировку EEPROM.
На программаторах SFPTotal имеются предусмотренные управляющие элементы, которые позволяют создать условия для перепрограммирования модулей с аппаратной защитой.
В соответствии со спецификацией MSA SFF-8472 трансиверы с поддержкой функции DDM могут содержать защиту от записи с использованием пароля. Для этих задач стандартом зарезервировано целых 7 байт страницы A2h. Однако, обычно длина пароля составляет всего 4 байта.
Для успешного программирования большинства 1G и 10G трансиверов с защитой от записи необходимо произвести предварительный ввод пароля перед записью изменений в память модуля.
Существуют различные аппаратные реализации модулей, которые работают под управлением специальной микросхемы, контролирующей возможность записи в отдельную микросхему EEPROM или содержащей встроенную память. Попытка записи в такой модуль без пароля или с неверным паролем будет возвращать ошибку - WRITE FAIL.
В трансиверах, где установлена отдельная микросхема EEPROM, схема защиты похожа на описанную в разделе про аппаратную блокировку. Отличие состоит в том, что контактом WP микросхемы памяти управляет контроллер, изменяя состояние управляющего вывода после записи правильного значения пароля в область страницы A2h по смещению 7Bh.
В других аппаратных реализациях трансиверов используются контроллеры, содержащие встроенный блок памяти. Такие модули могут быть довольно капризны к скорости записи и интервалам между блоками данных, поскольку программно обрабатывают сигналы на шине данных.
Для успешного программирования таких модулей достаточно знать правильный пароль. При невозможности узнать пароль, он может быть найден путем перебора всех возможных или наиболее вероятных значений. Например, перебором по словарю.
Нередко приходится работать с трансиверами, которые характерны тем, что успешно программируются после ввода пароля, но не сохраняют новые изменения в памяти после сброса питания. После сброса питания в памяти остается старый код.
Подобные модули при программировании хранят изменения во временной памяти и требуют ввода специальных инструкций – «сейв-команды» – для переноса прошивки из временной памяти в постоянную.
Программирование таких модулей не описано никаким стандартом и предусматривает выполнение последовательных инструкций, придуманных каждым отдельным производителем. В лучшем случае – производитель может предоставить инструкцию с алгоритмом программирования модуля, в худшем – придется искать подходящий алгоритм на основе уже известных решений.
Для записи в такие модули предусмотрена возможность использования гибких скриптов на основе протокола команд SFPTotal.
Также встречаются трансиверы, защита в которых является комбинированным вариантом аппаратной блокировки, ввода пароля и «сейв-команды».
Одним из примеров такой защиты является невозможность произвести запись в модуль, если он не находится в режиме пониженного энергопотребления, даже в том случае, если используется верный пароль.
Этот подход не лишен логики. Зачем перепрошивать модуль, когда он светит на полную мощность?
Комбинированная защита чаще всего встречается на модулях соответствующих последним ревизиям SFF-8472 и поддерживающих до 256 страниц в верхней области памяти страницы A2h (со смещения 80h).
Для прошивки таких трансиверов вы должны заранее знать характер и порядок манипуляций с доступными портами ввода-вывода, а также алгоритм программирования завода производителя.
Для успешного программирования незащищенных трансиверов достаточно произвести запись на оптимальной частоте тактирования шины данных.
Для программирования трансиверов с аппаратной защитой нужно найти линию, которая отвечает за блокировку микросхемы памяти, и привести ее в соответствующее состояние перед записью изменений.
Чтобы прошить модуль с защитой по паролю – нужно знать пароль. Вы можете запросить пароль у своего поставщика (производителя) или найти его в официальных даташитах, в противном случае - можно воспользоваться функцией поиска паролей, встроенной в программное обеспечение для программаторов SFPTotal.
Для прошивки модулей, которые не сохраняют изменения после сброса питания, необходимо использовать запись с паролем и «сейв-командой», которая зафиксирует изменения в памяти трансивера. Данный механизм программирования легко реализуется с помощью скриптов.
Для модулей с комбинированной защитой, необходимо заранее знать механизм программирования. Компании, покупающие большие партии модулей, могут без проблем получить необходимые инструкции у производителя.
Помощь по вопросам программирования защищенных трансиверов вы можете всегда получить у нашей службы поддержки.