Типы защиты от записи и программирование
Форм-фактор говорит, где лежат поля модуля. Вторая, независимая ось решает, можно ли их изменить: как модуль защищает память от записи. Производители используют пять подходов, и каждому нужен свой способ программирования. Определить тип заранее — значит сэкономить часы на неудачных попытках записи.
Пять типов защиты
| # | Тип | Как распознаётся | Как программируется |
|---|---|---|---|
| 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-модулей. Программирование требует алгоритма производителя, обычно доступного оптовым покупателям.
Как определить тип
- Обычное чтение: A2h читается чисто? (Тип 1 здесь часто сбоит.)
- Запись одного байта в незащищённое поле. Немедленный успех → тип 1.
WRITE FAIL→
тип 3 (или 5). Тихий успех с откатом после перезагрузки → тип 4.
- Известные пароли. Всё ещё только чтение → тип 2 (аппаратный) или тип 5 (комбинированный).
- Форм-фактор и редакция спецификации — CMIS и поздние SFF-8472 обычно тип 5.
В CodingBox
- Настройки пароля — адрес таблицы, адрес пароля (0x7B) и значение задаются в
Защищённой памяти и паролях; известные пароли применяются из базы.
- Сценарии — сценарии программирования CodingBox несут вендорские последовательности
сохранения и алгоритмы разблокировки для типов 4 и 5.
- Побайтовая запись и медленная частота для модулей, сбоящих на стандартной скорости.
- Аппаратный WP обрабатывается платой-программатором, а не софтом.
- Каждое чтение сохраняется в базу кодов до записи,
поэтому неудачная попытка всегда обратима.
Источник
- SFPTotal — Виды трансиверов по типу защиты от записи и способы их программирования