Описание протокола обмена адаптера с компьютером через COM-порт
Параметры порта
Параметры COM-порта компьютера по умолчанию для обмена данными с адаптером: 38400, 8N1 (скорость 38400 бит/с, 8 бит, без контроля чётности, 1 стоповый бит). Задаются в настройках программы диагностики. Для "турборежима" понадобится скорость 57600, но пока это не реализовано.
Основы обмена данными
Протокол обмена асинхронный, текстовый (почти). Запрос к адаптеру представляет собой несколько символов (букв и цифр), завершаемых переводом строки (ENTER, он же CR, он же #13, он же 0×0D).
Команда адаптеру начинается маленькой латинской буквой, после которой следуют параметры команды (описание ниже):
- c — поставить в очередь DCL-запрос
- b — получить содержимое буфера в виде матрицы (оно же Frame Map)
- g — принудительно перейти в режим CART, очистив очередь команд DCL
- r — сброс и перезагрузка адаптера
- m — узнать текущий режим (c — режим CART, остальные буквы — попытки перейти в режим CART)
- z — очистить буфер (матрицу) и очередь команд DCL
- v — получить версию прошивки адаптера в виде, к примеру «0123», что означает версию 1.23
- l — загрузить в текущий буфер команд заданные команды
- q — установить значение DIAGMDODE (используется при чтении памяти)
- d — получить содержимое буфера команд
- a — прочитать память по заданным адресам
- s — установить скорость обмена по DCL (пока не работает!)
- o — прочитать или записать настройки адаптера
Команда 'c'
Вторым байтом после 'c' передаётся команда DCL, которая ставится в очередь команд:
A — получить статус DCL
B — прочитать сохранённые коды ошибок
C — очистить сохранённые коды ошибок
D — инициировать запуск теста KOEO/KOER
E — передать в EEC-IV карту PID
F — прочитать карту PID из EEC-IV
G — начать чтение PID значений
H — очистить регистр ошибок/флагов DCL протокола
I — передать в EEC-IV карту смещений DMR для чтения памяти
J — прочитать карту смещений DMR из EEC-IV
K — прочитать значения по указанным смещениям DMR с учётом DIAGMODE
L — прочитать комбинированную матрицу PID/DMR значений
M — переключиться на другую скорость обмена (пока не реализовано!)
Когда DCL находится в режиме CART (проверяется командой m), то возможна передача команд DCL. Результат обработки команды передаётся в виде последовательности 4-байтных посылок:
- $FF — первый байт всегда содержит это значение
- $YX — вторым байтом передаётся координата в буфере данных (старший полубайт — строка, младший — столбец). Размер буфера данных — 16 строк на 13 столбцов
- NNNN — далее слово, содержащее переданное значение (его смысл зависит от координаты)
Команда 'l'
Команда предназначена для инициализации карты PID/DMR перед передачей её в EEC-IV. Вторым байтом передаётся выбираемая таблица:
P — стандартная карта PID
T — тестовая карта PID, содержит недокументированные значения PID
D — карта DMR для чтения заданных областей памяти EEC-IV
ANNxx — загрузка произвольного значения xx по адресу NN в карте PID/DMR
продолжение следует…