Видеопроцессоры фирмы Realtek широко используются в недорогих ЖК мониторах разных производителей. Основную проблему при ремонте вызывал факт невозможности чтения внутренней Flash-памяти RTD2120 для клонирования прошивки с исправных мониторов в неисправные. Однако в 2010 году (20.08.2010) автор проекта Postal перевернул ситуацию, получив эту возможность. Алгоритм чтения был скопирован даже инженерами Realtek, правда, они почему-то постеснялись указать источник. Факт легко проверить, сравнив даты публикации программ (программатор Postal имеет открытый исходный код). Процессоры RTD2660 используют внешнюю SPI-flash (на 8 выводов), которую можно записывать также и обычным программатором, но программно-аппаратный комплекс Postal предоставляет возможность работать с процессорами Realtek внутрисхемно через доступные внешние разъемы (VGA или HDMI), не вскрывая аппарат.
Общие сведения
Процессоры RTD2120 были разработаны фирмой Realtek [1] в 2005 году. Данный чип содержит все необходимое для построения бюджетного ЖК монитора, кроме скалера, и к 2009 году рынок был заполнен ЖК мониторами на этом процессоре. Однако образовалась проблема при их ремонте - внутреннюю Flash-память программ было невозможно прочитать. С учетом частого спонтанного повреждения содержимого этой памяти задача чтения неповрежденной прошивки с исправного монитора стояла очень остро. В рамках проекта Postal была проведена большая исследовательская работа, и одноименный программатор стал читать встроенную память, именно за это и получив широкую известность. Все сторонние устройства и программы, читающие внутреннюю память Flash RTD2120, используют оригинальный алгоритм программатора Postal. Тот факт, что при этом никто не упоминает первоисточник алгоритма, остается на совести скопировавших этот алгоритм.
Рис. 1. Плата монитора на процессоре RTD2120L (корпус 48-PIN LQFP)
Рис. 2. Плата монитора на процессоре RTD2120S (корпус 44-PIN PLCC)
Производители устройств на RTD2120 также успешно использовали программатор Postal для подключения к процессорам, которые были недоступны для оригинальных утилит от Realtek и казались полностью неисправными.
Чип RTD2120 имеет 96 кбайт встроенной Flash-памяти, которая поделена на две секции - 64 и 32 кбайт. Первая секция (64) доступна для исполнения встроенным 8051-совместимым контроллером (MCU), а вторая (32) содержит только данные, в том числе для эмуляции DDC-EEPROM и знакогенератора экранных меню. Заводская прошивка состоит из двух файлов, для использования с программатором Postal файлы необходимо совместить в один (описание процедуры приведено ниже).
Чип RTD2122 является развитием RTD2120 и содержит дополнительную секцию Flash объемом 64 кбайт (всего 3 секции - 64+64+32). Заводская прошивка этого чипа состоит из трех файлов.
Рис. 3. Вид процессора RTD2660 на плате монитора
Рис.4. Плата монитора на процессоре RTD2662
Чип RTD2660 содержит внутри себя еще и графический контроллер - скалер, то есть, схема ЖК монитора строится на единственном чипе (плюс внешняя Flash-память). Чип RTD2662 отличается от RTD2660 наличием цифрового входа DVI/HDMI (у RTD2660 только вход VGA). Поскольку для этих чипов используется внешняя 8-выводная память SPI-Flash (к ней легко подключиться напрямую), то режим ISP, поддерживаемый программатором Postal, наиболее применим для чтения оригинальных дампов с исправных аппаратов без их вскрытия.
Основной интерес представляет работа программатора Postal с внутренней Flash-памятью чипов RTD2120/2122. Поскольку длительный период времени чтение памяти этих чипов было невозможно, появилось множество приспособлений для записи памяти RTD2120 в комплекте с дисками, на которых иногда из гигабайтов прошивок можно было выбрать нужную. Но и тут не обошлось без подвоха! Основная масса прошивок хранилась в специальном зашифрованном формате - в файлах с расширением GFF. Программатор Postal автоматически декодирует файлы формата GFF в бинарный вид.
Работа с программатором Postal в режиме RTD2120 и RTD2122
Программатор Postal использует для чтения и записи бинарный файл размером в полную емкость Flash-памяти чипа. Все секции памяти располагаются в файле последовательно, друг за другом. В случае чтения бинарный файл дублируется в hex-формате, для записи используется одиночный файл любого поддерживаемого формата - BIN, HEX, GFF, в котором все секции объединены. Если используются отдельные файлы для разных секций (так генерирует среда разработки от Realtek), то для записи программатором Postal все файлы необходимо объединить в один. Для RTD2120 это два файла, а для RTD2122 - три (по числу секций). Поскольку файлы имеют формат HEX, их можно объединить текстовым редактором "Блокнот". Для объединения отдельных файлов прошивки сначала открывают файлы блокнотом каждый в своем окне, а затем добавляют к файлу, который идет первым. Далее у всех файлов, кроме последнего, удаляют завершающую строку, отмечающую конец данных - ":00000001FF". В конце первого файла после данных добавляют строку, указывающую начало второй секции данных 64 кбайт - ":020000040001F9". Если файлов всего три, то в конец второго файла добавляют строку, указывающую начало третьей секции данных - ":020000040002F8".
Затем в конец первого файла добавляют целиком второй, а если файлов три, то следом добавляют третий и сохраняют получившийся файл. Последний файл добавляется в неизменном виде. Для полной совместимости со стандартом можно в самое начало получившегося файла добавить строку, показывающую начало первой секции - ":020000040000FA", для программатора Postal эта начальная строка необязательна. При чтении дампа внутренней Flash-памяти программатор Postal создает временный бинарный файл и сразу конвертирует его в формат HEX. Сохранить для дальнейшего применения можно любой из них.
Физическое подключение для чтения и записи, как обычно, происходит через разъем VGA (линии SDA, SCL), но в случае с чипом RTD2120 имеет дополнительную особенность. Дело в том, что при неправиль ной прошивке (неверном дампе) процессор начинает стартовать нештатно и становится недоступен для внутрисхемного программирования (ISP). Чтобы обойти ситуацию, запрос необходимо подавать с первыми рабочими тактами процессора при подаче питания. Программатор Postal отслеживает изменение линий SDA и SCL, выполняя попытку доступа к ISP почти мгновенно после этого, однако сами по себе линии состояние не изменяют, дополнительно подключают любой маломощный кремниевый диод анодом к линии SDA или SCL, а катодом - к линии питания (например, 3,3 В процессора). Пока питание на схему не подано, диод будет подтягивать соответствующую линию данных к "земле". В этот момент в программе нажимают кнопку "Set ISP", стартует цикл слежения за линиями. При подаче питания диод "отпускает" линию, потенциал на ней поднимается, и программа немедленно пытается инициировать цикл обмена с процессором по адресу 0x94 шины I2C. Иногда программе не хватает времени, и возможно потребуется заменить кварцевый резонатор процессора на более низкочастотный. Так или иначе доступ к ISP восстанавливается, и процессор не требуется заменять из-за неправильной прошивки.
Помимо линий SDA/SCL на разъеме VGA для прошивки можно подключать программатор к соответствующим выводам процессора напрямую либо через специальный сервисный разъем.
Для выбора режима работы программы с процессорами Realtek в группе "Select Mode" отмечают пункт "Philips", затем нажимают кнопку "Settings" и на странице настроек отмечают пункт "Realtek/Novatek/...". Далее из выпадающего списка выбирают нужный тип процессора, после чего нажимают кнопку "OK" для подтверждения выбора.
В нормальном режиме после подачи питания на целевой процессор в программе нажимают кнопку "SetISP" и происходит подключение к процессору (название кнопки меняется на "Out ISP").
Необходимо дать пояснения по разблокировке чтения. Дело в том, что без процедуры разблокировки при попытке чтения чип будет полностью стерт. Чтобы исключить случайное стирание, разблокировка производится при любых операциях, в том числе и при записи. С одной стороны, процесс разблокировки прозрачен для пользователя и выполняется программой автоматически, с другой - процесс критичен по времени и пользователю надо снять все ненужные задачи в системе, т.к. обращение к диску на пару лишних миллисекунд может иногда вызвать сбой процесса разблокировки (память чипа будет неожиданно стерта).
Для правильной работы с секциями памяти чипа перед началом операций чтения, записи и проверки необходимо на страничке настроек (рис. 5) выбрать его тип - RTD2120 или RTD2122.
Рис. 5. Вид окна настроек программы в режиме работы с процессорами Realtek
Кнопка "Erase" (совместно с "Unblock") на страничке настроек в случае RTD2120 позволяет быстро вывести процессор из нештатного состояния, когда к нему трудно подключиться из-за неправильной прошивки.
Рис. 6. Вид главного окна программы в режиме RTD2120
Работа в главном окне программы (рис. 6) не имеет особенностей, за исключением кнопки "Status": выполняемая функция не несет полезной информации для пользователя, регистры процессора считываются в файл reg_dump.
После завершения работы с процессором нажимают кнопку "Out ISP".
Работа с процессорами RTD2660/2662 и им подобными с внешней памятью SPI-Flash
Для работы с чипами RTD2660 или RTD2662 необходимо на страничке настроек (рис. 5) выбрать в выпадающем списке "RTD2660 ISP" (можно выбрать также процессор RTD2485). Realtek выпускает еще несколько процессоров с внешней памятью SPI-Flash, протоколы обмена в режиме ISP у них отличаются незначительно, но программа Postal может их не поддерживать из-за нераспространенности таких процессоров (поддержка будет добавлена по возможности, подробности в конференции [2]).
Подключение и отключение режима ISP происходит аналогично описанному выше для RTD2120, при подключении ("Set ISP") читается сигнатура памяти SPI-Flash для определения способа работы с ней.
Кнопка "Status" выводит в окно лога содержимое регистра статуса микросхемы SPI-Flash, работает только в случае, если процессор в ISP-режиме.
Кнопка "Reset" в режиме RTD2660 дополнительно сбрасывает определенный ранее размер внешней памяти SPI-Flash (размер устанавливается как "неизвестный").
У микросхемы SPI-Flash также имеется вывод WP (Write Protect - защита записи), уровню на котором стоит уделить внимание, если производится запись. Обычно чип RTD2660 управляет этим выводом правильно, но по опыту работы с другими чипами, если запись не идет, то в первую очередь нужно проверить уровень на выводе WP, который может быть подключен к неизвестному порту общего назначения контроллера.
Управляющая программа программатора Postal использует однотипное, интуитивно понятное управление во всех режимах работы со всеми типами памяти, поэтому назначение основных кнопок не требует пояснений.
За всеми улучшениями программы можно наблюдать на техническом форуме МОНИТОР [2].
Интернет-ресурсы
1.http://www.realtek.com.tw/
2.http://monitor.net.ru/forum/postal23-info-317755.html
Автор: Валерия Ершова (г. Москва)
Источник: Ремонт и сервис