Эта проблема встречается довольно часто при отключении питания и сбоях принтера во время перепрошивки. В результате после включения питания принтер высвечивает на экране «Download From PC«, ни на какие кнопки не реагирует. При этом USB порт не работает, с компьютера принтер не виден вообще.
Традиционно есть два варианта «поднятия» принтера из этого состояния: замена платы форматтера (основной управляющей платы) и выпаивание ПЗУ принтера с дальнейшей перепрошивкой на внешнем программаторе. Первый вариант дорогостоящий, а второй требует также наличие дополнительного оборудования и навыков работы с ним.
Предлагаю третий вариант «оживления» принтера без замены форматтера и выпаивания ПЗУ.
Как известно, содержимое ПЗУ принтера состоит их трех частей: основная программа, область данных и программа-загрузчик. Основная программа может обновляться по USB порту, программа-загрузчик не меняется. В загрузчике, кроме собственно процедуры загрузки, есть также программа-монитор. С ее помощью можно, например, просмотреть и изменить содержимое памяти принтера.
Я думаю, что код загрузчика одинаков в 4300-м и 4200-м — на эту мысль меня наводит установленный в моем 4300-м принтере форматтер с маркировкой «SCX4200».
При старте принтера загрузчик сначала предлагает стартовать монитор, выдавая на «DEBUG»-интерфейс (отладочная консоль, подробнее чуть позже):
===================================================================
Press any key to execute Monitor Program within 1 sec.(in Boot)
===================================================================
Далее загрузчик считает контрольную сумму основной прошивки. Если контрольная сумма основной прошивки равна 0, то стартует основная прошивка, в противном случае, что может быть, например, после неудачной перепрошивки, на экран принтер выводит «Download From PC«, а на DEBUG-интерфейс выдает:
<<<DownLoad_FromPC>>>
There is no image in RAM. Download Start!!!
Select port : 'u' [usb] 'p' [parallel]
после чего ждет символ «u» или «p», и только с DEBUG-интерфейса. Вот тут-то все и стопорится. И только получив символ «u» или «U», принтер пишет на экране «via USB» и включает USB порт.
После этого компьютер находит новое USB-устройство «Boot downloader». Теперь можно грузить прошивку, как и при обычной перепрошивке с помощью usbprns2.exe, только надо заливать прошивку с удаленными первыми четырьмя байтами (4300-4200). После заливки прошивки принтер рестартует.
Теперь о DEBUG-интерфейсе.
На плате форматтера рядом с процессором есть разъем с маркировкой «DEBUG». Правда, на моей плате разъема нет, есть только место под него с 4-мя дырками, но, возможно, на некоторых форматтерах он присутствует. Цоколевка разъема приведена на фото 1. Здесь и далее TxD (Tx) — передача, RxD (Rx) — прием. Этот разъем — интерфейс RS232, он же обычный COM-порт компьютера, но только в уровнях TTL 3.3 Вольт. Для подключения принтера к компьютеру необходим преобразователь уровней RS232 (+/-12 вольт) в уровни TTL 3.3В. В интернете полно схем таких преобразователей как на 5В, так и на 3.3В, можно найти на любой вкус и цвет — например,
Нужно обратить внимание, что подключать 5-вольтовый выход TxD к 3.3-вольтовому входу RxD на форматтере принтера нужно через резистор 40…100 Ом.
Но самый простой и оптимальный вариант — купить дата-кабель на мобильник для COM-порта: они обычно 5-вольтовые. Я купил кабель для Самсунга C100 (фото 2). Мне он нравится потому, что имеет разборный разъем.
Как правило, все подобные дата-кабели питаются от ноги DTR COM-порта. Есть одна тонкость: положительное напряжение для питания кабеля на этой ножке появляется только после установления соединения в терминальной программе.
Далее надо найти RxD и TxD. Для этого подключаю дата-кабель к компьютеру, открываю программу HyperTerminal (Пуск — Программы — Стандартные — Связь — HyperTerminal), устанавливаю соединение (Call/Connect) с любыми параметрами и, нажимая любую клавишу на клавиатуре, ищу импульсы осциллографом. Проверяю и амплитуду импульсов — должна быть 5 вольт. Это выход TxD компьютера — он будет соединяться через резистор 40…100 Ом (5В > 3.3В) с RxD на DEBUG-е.
Потом соединяю TxD компьютера поочередно с остальными проводами кабеля до тех пор, пока на экране терминала не пойдет эхо вводимых с клавиатуры символов. Это RxD компьютера — будет соединяться с TxD на DEBUG-е.
Мне пришлось разобрать принтер и снять форматтер — дырки на DEBUG-е были залиты припоем. Я разъем не ставил, просто очистил дырки «отсосом», а потом вставлял в них одножильный провод подходящего диаметра уже при собранном принтере. Предполагаю, что принтер уже подключен к компьютеру по USB. Землю я подсоединяю в первую очередь и к металлическому основанию, на котором закреплены платы — так надежнее, потом подсоединяю RxD и TxD (фото 5).
Подключать компьютер через переходник к принтеру нужно очень аккуратно, все сигналы идут сразу на микросхему процессора. Запускаю HyperTerminal, выставляю параметры 115200 8 N 1 без управления потоком, устанавливаю соединение (Call/Connect), включаю принтер. Если принтер «убит»перепрошивкой, то в терминале должно появиться:
===================================================================
Press any key to execute Monitor Program within 1 sec.(in Boot)
===================================================================
<<<DownLoad_FromPC>>>
There is no image in RAM. Download Start!!!
Select port : 'u' [usb] 'p' [parallel]
Нажимаю на клавиатуре «u» или «U», потом запускаю на компьютере стандартную программу прошивки:
usbprns2.exe <firmware_name>
где <firmware_name> — имя файла стандартной прошивки без первых 4-х байт (4300-4200).
Принтер загружает прошивку как и в обычном режиме, затем рестартует. Если при включении принтера на экран терминала ничего не выводится, советую попробовать перезапустить HyperTerminal, проверить и заново переустановить параметры соединения (конечно, при условии, что переходник проверен и работает).
Несколько слов о встроенном мониторе. Вызвать его можно при старте принтера как с рабочей прошивкой, так и с нерабочей. Для этого при старте принтера нужно ввести любой символ. Причем нажимать клавишу на клавиатуре нужно практически с включением питания, а не ждать, когда он напишет приглашение, иначе он быстро запускает основную прошивку. В результате на экране терминальной программы увидим следующее:
=================================== ================================
Press any key to execute Monitor Program within 1 sec.(in Boot)
=================================== ================================
[тут я нажал Enter]
----------------------------------------------------------------
START-UP MODE : Monitor Program
Boot into pROBE+ like stand-alone mode
[Type 'help' to see command info.]
Version : B0.30 12-01-2003 by Keetaek Kim
----------------------------------------------------------------
Do you want to download via parallel port?[N] : n
[тут я нажал n]
pROBE+>
Вводим «help» и получаем список команд монитора:
pROBE+> help
-----ROM monitor command format-----------
dm start_addr <byte_count>
dm.b start_addr <byte_count>
dm.w start_addr <byte_count>
dm.l start_addr <byte_count>
ESC repeat memory dump
fm start_addr byte_count byte_value
fm.b start_addr byte_count byte_value
fm.w start_addr word_count word_value
fm.l start_addr long_count long_value
pm addr byte_value
pm.b addr byte_value
pm.w addr word_value
pm.l addr long_value
ul byte_count : upload image
flash : upgrade flash image
fl : upgrade flash image
go jmp_addr
dl load_addr
dhry : check dhry speed
pROBE+>
Все адреса и данные шестнадцатеричные. Все команды монитора не пробовал, могу сказать только, что dm (display memory) — просмотр содержимого памяти, go — переход по адресу. Например, запуск основной прошивки:
go 10000 Enter
Остальные команды я не тестировал, но, думаю, что самой интересной и нужной будет команда flash — после ввода «flash» принтер переходит в тот же режим, как и при восстановлении убитой прошивки.
Встроенный монитор может пригодиться для восстановления принтера после заливки некорректной прошивки, когда контрольная сумма совпадает, но прошивка работать не хочет. С помощью монитора возможна также заливка прошивки более младшей версии поверх более старшей, что нельзя сделать в стандартном режиме. Возможна и кросс-прошивка 4300 <-> 4200. Но при этом нужно учесть, что, в отличие от программирования флешки программатором, не меняется область CRUM и внутренних переменных 4000h…0ffffh, так что работоспособность переделки таким образом 4300 <-> 4200 под большим вопросом.
Думаю, что данная методика может быть применена не только для «оживления» SCX-4300, SCX-4200, но и других Самсунгов.
В заключение подчеркну, что этот материал адресован профессионалам. Возможно, в описании есть ошибки или неточности — замечания и пожелания принимаются на e-mail, указанный в подписи.