CodingBox Документация

Типы защиты от записи и программирование

Форм-фактор говорит, где лежат поля модуля. Вторая, независимая ось решает, можно ли их изменить: как модуль защищает память от записи. Производители используют пять подходов, и каждому нужен свой способ программирования. Определить тип заранее — значит сэкономить часы на неудачных попытках записи.

Пять типов защиты

#ТипКак распознаётсяКак программируется
1Без защитыПринимает запись сразуПрямая запись — но на медленной частоте
2Аппаратный пин защитыТолько чтение, как ни пробуй; пароль не помогаетУправление линией WP во время записи
3Пароль (контроллер прошивки)WRITE FAIL, пока не введён парольСначала пароль по 0x7B
4Временное хранение + команда сохраненияЗапись «проходит», но откатывается после перезагрузкиОтправить последовательность сохранения вендора
5КомбинированнаяНужна вендорская последовательность I/O для разблокировкиАлгоритм программирования вендора (сценарии)

1. Без защиты

У EEPROM нет ограничений на запись. Практическая ловушка — тайминги: надёжное программирование обычно требует частоты двухпроводной шины около 1 кГц — примерно в десять раз медленнее обычной скорости чтения. На стандартной скорости запись периодически срывается и оставляет частично записанные страницы. Сопутствующий признак: у некоторых простых модулей чисто читается только A0h, а A2h возвращает ошибки.

2. Аппаратный пин защиты записи

Пин WP микросхемы EEPROM подтянут к питанию через резистор, поэтому чип включается заблокированным. Разблокировка — притянуть линию WP к земле через путь с меньшим сопротивлением на время записи, что умеет только плата-программатор с управлением этой линией. Одним софтом этот тип не обойти: модуль остаётся только для чтения при любых перезагрузках и попытках пароля.

3. Защита паролем (контроллер прошивки)

По SFF-8472 блок A2h резервирует 7-байтовую область пароля начиная со смещения 0x7B; большинство модулей используют 4-байтовый пароль. Контроллер модуля сравнивает записанное туда со своим значением и только затем открывает запись в EEPROM. Без пароля каждая запись возвращает WRITE FAIL.

  • Введите правильный пароль, затем пишите.
  • Если он неизвестен — словарный перебор известных паролей вендоров (частые значения

— в Перекодировке EEPROM) или производитель.

  • Такие контроллеры чувствительны к частоте и к паузам между блоками — ещё одна

причина программировать медленно.

4. Временное хранение с командой сохранения

Запись попадает в энергозависимую память. Всё выглядит хорошо — пока модуль не перезагрузят и не вернётся старый код. Прошивке вендора нужна явная команда сохранения (проприетарная последовательность байтов), чтобы перенести временный образ в постоянную память. Стандарта нет; последовательность у каждого вендора своя и фиксируется в виде сценария.

5. Комбинированная защита

Новейшие модули складывают несколько механизмов: аппаратный WP и пароль и команда сохранения и рабочие предусловия — например, модуль должен быть переведён в режим низкого энергопотребления, прежде чем примет запись. Это типично для модулей на свежих редакциях SFF-8472, отдающих 256+ страниц выше смещения 0x80 в A2h, и для CMIS-модулей. Программирование требует алгоритма производителя, обычно доступного оптовым покупателям.

Как определить тип

  1. Обычное чтение: A2h читается чисто? (Тип 1 здесь часто сбоит.)
  2. Запись одного байта в незащищённое поле. Немедленный успех → тип 1. WRITE FAIL

тип 3 (или 5). Тихий успех с откатом после перезагрузки → тип 4.

  1. Известные пароли. Всё ещё только чтение → тип 2 (аппаратный) или тип 5 (комбинированный).
  2. Форм-фактор и редакция спецификации — CMIS и поздние SFF-8472 обычно тип 5.

В CodingBox

  • Настройки пароля — адрес таблицы, адрес пароля (0x7B) и значение задаются в

Защищённой памяти и паролях; известные пароли применяются из базы.

  • Сценарии — сценарии программирования CodingBox несут вендорские последовательности

сохранения и алгоритмы разблокировки для типов 4 и 5.

  • Побайтовая запись и медленная частота для модулей, сбоящих на стандартной скорости.
  • Аппаратный WP обрабатывается платой-программатором, а не софтом.
  • Каждое чтение сохраняется в базу кодов до записи,

поэтому неудачная попытка всегда обратима.

Источник

  • SFPTotal — Виды трансиверов по типу защиты от записи и способы их программирования