Команды протокола управления устройством SFPTotal


Wiki


Команды протокола управления устройством SFPTotal поддерживаются программаторами серий Mini, Plus, Plus New, Plus X.

Список команд актуален для устройств с версией встроенной прошивки SW 1.3.5 или новее.

Чтение памяти трансивера

Команда чтения позволяет обращаться по шине данных к устройствам с использованием 8-битных параметров адреса и смещения, и считывать данные из страниц размером до 256 байт.

R1A000807F

Команда чтения состоит из следующих параметров:

R + 1 + A0 + 00 + 80 + 7F

Код команды

Команда чтения начинается с кода команды — символа R (сокращение от Read).

Регистр кода команды влияет на формат вывода результата чтения.

  • R - верхний регистр - возвращает данные как HEX строку;
  • r - нижний регистр - возвращает данные как HEX таблицу.

Номер порта

Числовой идентификатор порта на плате программатора.

  1. GBIC
  2. SFP
  3. SFP+
  4. XFP
  5. QSFP

Если установлен параметр CMODPRST=01, программатор будет проверять подключение трансивера в указанный порт перед выполнением операции чтения. Отключите данный параметр, чтобы игнорировать номера порта.

Адрес страницы

Адрес страницы ведомого устройства на шине данных. Записывается в формате HEX в верхнем регистре. Например: A0 или A2.

Ознакомьтесь с материалом Структура памяти трансивера, чтобы узнать больше о поддерживаемых адресах страниц в памяти трансивера.

Номер дополнительной страницы

Номер дополнительной страницы в HEX формате для трансиверов с поддержкой динамического адресного пространства.

Пример значений: 00, 01, 02, 03.

Если установлен параметр AWRADTBL=01, программатор будет выполнять запись номера дополнительной страницы в область Page Select byte при обращении к верхней памяти модулей XFP и QSFP, тем самым выбирая какая именно доп. таблица будет представлена трансивером в области A0h по смещению 80h:

T00 или T01 или T02 или T03.

Чтобы игнорировать параметр номера дополнительной страницы, установите AWRADTBL=00.

Смещение

Параметр задает смещение, по которому производится чтение или запись.

Например:

  • 00 - нижняя область памяти, с 0 байта
  • 80 - верхняя область памяти, со 128 байта
  • 5F - читать с 95 байта

Количество байт чтения/записи

Параметр задает количество байт, которые необходимо прочитать или записать в память трансивера. Параметр записывается в HEX формате в верхнем регистре символов. С учетом разрядности регистра количество байт чтения в параметре должно быть уменьшено на единицу.

  • 00 - прочитать/записать 1 байт
  • 7F - прочитать/записать 128 байт
  • 03 - прочитать/записать 4 байта

Ввод и исполнение команды

Для исполнения команды в конце необходимо передать символ переноса строки \x0D.

Форматированный вывод области чтения:

r1A000007F

##    00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F

00 :  03  04  07  00  00  00  01  20  40  0C  15  01  2A  00  00  00
01 :  0F  07  00  00  46  49  4E  49  53  41  52  20  43  4F  52  50
02 :  32  33  34  20  00  00  90  65  46  54  4C  46  38  35  32  34
03 :  50  32  42  4E  56  20  20  20  41  20  20  20  03  52  00  9C
04 :  00  32  00  00  50  42  39  31  59  5A  57  20  20  20  20  20
05 :  20  20  20  20  30  37  30  32  32  37  20  20  68  D8  01  0B
06 :  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
07 :  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00

Стандартное выполнение команды чтения.

R1A000007F
0304070000000120400C15012A0000000F07000046494E4953415220434F5250323334200000906546544C46383532345032424E56202020412020200352009C0032000050423931595A57202020202020202020303730323237202068D8010B0000000000000000000000000000000000000000000000000000000000000000

Чтение 128 байт страницы T03h трансивера QSFP28 из адресного пространства A0h по смещению 80h.

R4A003807F
11CC07800000000000000003FF00020000000040484953494C49434F4E20202020202020000000004F4D333535394358313030202020202030316658051446E60607FFDE30333448545831304D3930303333383832313039333032300C1067A60000000000000000000000000000000000000000000000000000000000000000

Результат выполнения команды завершается символами переноса строки и возврата каретки.


Запись в память трансивера

Команда записи позволяет обращаться по шине данных к устройствам с использованием 8-битных параметров адреса и смещения, и записывать данные в страницу размером до 256 байт.

W4A002800F11223344556677889900AABBCCDDEEFF

Команда чтения состоит из следующих параметров:

W + 4 + A0 + 02 + 80 + 0F + 11223344556677889900AABBCCDDEEFF

Код команды

Команда записи начинается с кода команды — символа W (сокращение от Write).

Регистр кода команды влияет на возврат результата после выполнения записи.

  • W - верхний регистр - после записи выполняется контрольное чтение и возврат результата;
  • w - нижний регистр - выполняется только запись, контрольное чтение не выполняется.

Для подтверждения записи необходимо сравнить данные, переданные в команде записи, с данными, которые были возвращены программатором после выполнения команды.

Номер порта

Числовой идентификатор порта на плате программатора.

  1. GBIC
  2. SFP
  3. SFP+
  4. XFP
  5. QSFP

Если установлен параметр CMODPRST=01, программатор будет проверять подключение трансивера в указанный порт перед выполнением операции записи. Отключите данный параметр, чтобы игнорировать номера порта.

Адрес страницы

Адрес страницы ведомого устройства на шине данных. Записывается в формате HEX в верхнем регистре. Например: A0 или A2.

Ознакомьтесь с материалом Структура памяти трансивера, чтобы узнать больше о поддерживаемых адресах страниц в памяти трансивера.

Номер дополнительной страницы

Номер дополнительной страницы в HEX формате для трансиверов с поддержкой динамического адресного пространства.

Пример значений: 00, 01, 02, 03.

Если установлен параметр AWRADTBL=01, программатор будет выполнять запись номера дополнительной страницы в область Page Select byte при обращении к верхней памяти модулей XFP и QSFP, тем самым выбирая какая именно доп. таблица будет представлена трансивером в области A0h по смещению 80h:

T00 или T01 или T02 или T03.

Чтобы игнорировать параметр номера дополнительной страницы, установите AWRADTBL=00.

Смещение

Параметр задает смещение, по которому производится чтение или запись.

Например:

  • 00 - нижняя область памяти, с 0 байта
  • 80 - верхняя область памяти, со 128 байта
  • 5F - читать с 95 байта

Количество байт записи/чтения

Параметр задает количество байт, которые необходимо записать в память трансивера. Параметр записывается в HEX формате в верхнем регистре символов. С учетом разрядности регистра количество байт записи в параметре должно быть уменьшено на единицу.

  • 00 - прочитать/записать 1 байт
  • 7F - прочитать/записать 128 байт
  • 03 - прочитать/записать 4 байта

Данные

Данные для команды записи указываются вводятся в конце команды в формате HEX строки в верхнем регистре символов без пробельных символов и символов переноса строки.

11223344556677889900AABBCCDDEEFF

Длина набора данных для записи должна соответствовать параметру Количество байт записи, указанному в параметрах команды.

Ввод и исполнение команды

Для исполнения команды в конце необходимо передать символ переноса строки \x0D.


Команды настройки

CLI

Переключает возможность отображения символов в окне терминала при вводе. Выключено по-умолчанию. Состояние возвращается в дефолтное после сброса питания.

Запрос текущего состояния

? CLI
CLI=0

Включение

CLI=1

Выключение

CLI=0


VERSION

Запрос информации о версии устройства.

SFPTotal Plus New (c) 2023
HW: 1.3
SW: 1.3.7
SN: SFPT-P1323122800
ACTIVE

CMODPRST

Проверка подключения трансивера в порт перед выполнением операций чтения и записи.

Запрос текущего состояния опции:

? CMODPRST
CMODPRST=01

Включить отслеживание подключения трансивера в порт:

CMODPRST=01

Выключить отслеживание подключения трансивера в порт:

CMODPRST=00

После включения опции программатор при подключении более одного трансивера в порты возвращает ошибку:

QERR: MTDOC

При выполнении операций чтения и записи и при отсутствующем трансивере в порту программатор возвращает соответствующий код ошибки:

QERR: SFP_EMPTY

AWRADTBL

Команда включает автоматическую запись номера дополнительной страницы в регистр Page Select byte при обращении к адресным пространствам страниц T00h, T01h, T02h, T03h.

Запрос текущего состояния опции:

? AWRADTBL
AWRADTBL=01

Включение функции записи номера дополнительной страницы:

AWRADTBL=01

Отключение функции записи номера дополнительной страницы:

AWRADTBL=00


STATUS

Состояние вводов и выводов портов программатора.

STATUS
GBIC : 1; 0; 0; 1;
SFP  : 1; 1; 1; 1;
XFP  : 1; 1; 1; 1; 1;
QSFP : 1; 1; 1; 1;

Позиции значений параметров соответствует следующей карте:

GBIC  : MOD_ABS; TX_FAULT; RX_LOS; TX_DIS;
SFP   : MOD_ABS; TX_FAULT; RX_LOS; TX_DIS;
XFP   : MOD_ABS; RX_LOS; INTERRUPT; MOD_SEL; P_DOWN/RESET;
QSFP  : MOD_ABS; INTL; MOD_SEL; RESETL;


TX_DIS

Команда управляет состоянием линии TX_DIS, отвечающей за включение режима пониженного энергопотребления. По-умолчанию, активно.

Включение лазера, отключение режима Low power mode

TX_DIS=0

Выключение лазера, включение режима Low power mode

TX_DIS=1

На плате программатора может присутствовать перемычка для аппаратного управления режимом Low power mode. Замкнутая перемычка имеет приоритет.


I2CRATE

Устанавливает скорость тактирования программатора на шине данных в режиме master.

Параметр представлен шестнадцатеричным регистром.

I2CRATE=12 # Частота тактирования 100 kHz
I2CRATE=40 # Частота тактирования 30 kHz
I2CRATE=C6 # Частота тактирования 10 kHz

Для запроса текущего значения скорости используйте команду ? I2CRATE

? I2CRATE
I2CRATE=C6

Может принимать значения от 01h до FFh.

Скорость тактирования рассчитывается по формуле:

16 000 000 / (2 * I2CRATE * I2CPRESC + 16) = Speed Rate Hz


I2CPRESC

Предделитель значения частоты тактирования программатора на шине данных в режиме master.

Параметр представлен шестнадцатеричным регистром. Значение по-умолчанию: 04h

I2CPRESC=04

Для запроса текущего значения скорости используйте команду ? I2CPRESC

? I2CPRESC
I2CPRESC=04

Может принимать значения 00h, 04h, 10h, 40h.

I2CPAUSE

Задержка перед выводом результатов чтения на шине. Значение в миллисекундах. Значение по-умолчанию: 64h или 100ms

? I2CPAUSE
I2CPAUSE=64

I2CPAUSE=32
I2CPAUSE=32

I2CDELAY

Устанавливает задержку перед выполнением условия ReSTART c шагом 0.1 ms.

Значение по-умолчанию: 0Ah

? I2CPAUSE
I2CPAUSE=0A

I2CPAUSE=64
I2CPAUSE=64

I2CRESET

Программный сброс шины данных. Перезапускает интерфейс и генерирует 9 тактов на линии SCL шины данных, чтобы убрать возможное зависание ведомых устройств.

Сброс шины данных:

I2CRESET

Включаем триггер. При подключения трансивера в порт сброс шины данных будет выполнен автоматически.

I2CRESET=01

Отключить триггер.

I2CRESET=00

I2CSTATE

Возвращает состояние линий шины данных.

I2CSTATE
SCL=01  SDA=02

USBDELAY

Задержка перед отправкой байта данных от устройства компьютеру через виртуальный серийный порт.

? USBDELAY
USBDELAY=0A

USBDELAY=10
USBDELAY=10


Управление питанием

Поддерживается только на программаторах с доступной функцией программного управления питанием.

PWRRST

Сброс питания портов для подключения трансиверов.

PWRRST

Значение I2CPAUSE влияет на длину интервала сброса шины данных с шагом 10 мс.

PWRCTRL

Команда управления питанием портов.

Выключить питание.

PWRCTRL=0

Включить питание.

PWRCTRL=1

Изменение состояния питания должно сопровождаться соответствующей светодиодной индикацией.


Аппаратный поиск паролей

Программатор поддерживает функцию аппаратного поиска паролей в диапазоне от 00000000 до FFFFFFFF

Поиск работает в цикле с инкрементом значения пароля на единицу. На каждой итерации программатор выполняет ввод пароля и осуществляет запись контрольного слова SFPTOTAL длиной 8 байт. После чего производит чтение контрольного слова. Поиск считается успешным, когда программатор смог прочитать контрольное слово из памяти трансивера.

BFCWADR

Адрес страницы, в которую будет записываться контрольное слово.

BFCWOFT

Смещение при записи контрольного слова.

BFSET

Команда запуска аппаратного поиска паролей. Имеет следующие параметры:

  • Страница ввода пароля
  • Смещение ввода пароля
  • Начало диапазона значений
  • Конец диапазона
  • Стартовая позиция

Команда запускает поиск с вводом паролей в область страницы A2h по смещению 7Bh в диапазоне от 41414141h до 5A5A5A5Ah, начиная с позиции 45454545h.

BFSET A2 7B 41414141 5A5A5A5A 45454545

Device=A2
Offset=7B
From    41 41 41 41
To      5A 5A 5A 5A
Start   45 45 45 45

45 45 45 46

BFSTOP

Команда останавливает поиск паролей.

BFSTOP

STOP
Device=A2
Offset=7B
From    41 41 41 41
To      5A 5A 5A 5A
Current 45 45 47 5A

BFSTART

Запускает поиск паролей с места, на котором процесс был остановлен.

BFPASS

Команда ? BFPASS возвращает текущее значение.

? BFPASS
45 45 47 5A