Как восстановить прошивку Renesas uPD72020x

03 Июн 2013

Как восстановить прошивку Renesas uPD72020x

Необходимым атрибутом всех современных электронных устройств яв­ля­ет­ся функция обновления внутреннего программного обеспечения (firm­ware) без вскрытия корпуса. Операция, называемая на жаргоне «за­ме­ной про­шив­ки» стала такой привычной и доступной для рядового по­тре­би­теля потому, что в качестве носителей firmware используются ми­кро­схемы электрически перепрограммируемых постоянных запоми­на­ю­щих устройств или Flash па­мять.

Но за любое удовольствие надо платить: если внутреннюю память уст­рой­ства можно программно перезаписать, значит, существует возмож­ность ее искажения в результате программного сбоя, неудачной перезаписи или атаки вирусов.И случается это довольно часто.

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

На практике, это не всегда так. Штатные программные средства, предоставляемые производителями устройств, обычно ориентированы на обновление firmware, то есть на ситуацию, при которой устройство исправно, firmware работоспособно и целью операции является установка его более современной версии. Поэтому, замена искажен­ной прошивки часто является проблемой, для решения которой необходимы познания в цифровой электронике и системном программировании, при условии доступности технической документации на устройство. Сразу огово­рим­ся, что не существует единого протокола доступа к Flash памяти различных устройств, поэтому, не существует и единого рецепта ее восстановления.

Сегодня мы рассмотрим инструмент, позволяющий выполнить данную операцию для адаптеров PCI Express USB 3.0 xHCI на основе контроллеров uPD720201 и uPD720202 производства компании Renesas.

Особенности xHCI-контроллеров Renesas uPD720201 и uPD720202

Эксперименты проводились с адаптерами производства ST Lab на основе xHCI-контроллеров Renesas uPD720201 и uPD720202. В качестве носителя Firmware устройства используют микросхему SPI EPROM Macronix MX25L512E, размером 512 килобит или 64 килобайта.

Двухпортовой адаптер USB 3.0 на чипе Renesas uPD720202
На фото: двухпортовой адаптер USB 3.0, модель U-710, выполненный на основе контроллера Renesas uPD720202.
Справа от него расположен SPI-чип Macronix MX25L512E в корпусе SOIC-8 (позиционное обозначение U4).

Обратим внимание, что для адаптеров, подключаемых к шинам PCI или PCI Express, существует два варианта толкования понятия firmware:

  1. Данные и код, находящиеся в EPROM адаптера, аппаратно загружаемые во внутреннее ОЗУ микросхемы контроллера при старте и используемые автономным процессором устройства. Для центрального процессора персональной платформы не существует стандартизованных механизмов доступа к такому EPROM. Вместе с тем, исключительно с целью программного обновления firmware, механизмы доступа существуют в виде Vendor-Specific реализаций.
  2. Микросхема EPROM адаптера доступна в адресном пространстве центрального процессора. При этом функциональность контроллера по ее поддержке сводится к выполнению функций “моста” между данной микросхемой и шиной, к которой подключен адаптер (например, PCI или PCI Express).

Устройства Renesas xHCI относятся к категории (1). Типичные представители категории (2) – видео адаптеры, контроллеры RAID и SCSI, содержащие модули Adaptor Option ROM, доступные центральному процессору персональной платформы и расширяющие функциональность BIOS или UEFI для обеспечения поддержки данных адаптеров. Также существует много устройств, в которых присутствуют оба вида firmware, совместно находящиеся в одной микросхеме EPROM или разделенные по отдельным микросхемам.

О программе для прошивки контроллеров Renesas

Разработанная в нашей тестовой лаборатории программа, позволяет выполнять чтение, запись и стирание Flash памяти xHCI контроллеров Renesas uPD720201 и uPD720202 без выпайки микросхемы и без использования программатора.

Если поддерживаемый контроллер обнаружен, выводится меню, позволяющее выбрать требуемую операцию – Read, Write, Erase. В целях упрощения, данная версия не поддерживает выбор заданного контроллера из нескольких, а работает только с первым, с точки зрения адресации в конфигурационном пространстве. Из тех же соображений, размер блока фиксирован – 64 килобайта.

Как уже было сказано, в силу разнообразия особенностей реализации устройств, мы не можем претендовать на создание универсального и всесильного инструмента. Кроме того, любые опыты с перезаписью firmware связаны с риском его искажения. Поэтому, наша программа, это инструмент, предназначенный для использования специалистами.

Утилита FWTOOL и ее исходный код

Разработанная в нашей тестовой лаборатории утилита FWTOOL, позволяет выполнять следующие манипуляции с содержимым запоминающего устройства на плате USB-контроллера Renesas uPD720201 или uPD720202:

  • Операция чтения firmware read: чтение содержимого EPROM контроллера и сохранение результата в файле с фиксированным именем – ROM.BIN размером 64 килобайта;
  • Операция записи firmware write: запись содержимого EPROM контроллера из файла с фиксированным именем ROM.BIN размером 64 килобайта;
  • Операция firmware erase стирает содержимое EPROM контроллера, устанавливая все ячейки EPROM в состояние FFh без использования файловых операций.

Стартовый экран утилиты FWTOOL, для обновления прошивки чипов Renesas uPD72020x

Программа написана на языке ассемблера x86, для ее трансляции и отладки использовалось программное обеспечение фирмы Borland: Turbo Assembler 3.0, Turbo Link 4.0, Turbo Debugger 2.51. Она предназначена для запуска в среде DOS, тестировалась в MS DOS v7.10.

При операциях с EPROM, используются следующие Vendor-Specific регистры контроллера:

  • Firmware Control and Status Register
  • DATA0 Register
  • DATA1 Register

Указанные регистры, назначение их битов и алгоритмы выполнения типовых операций приведены в документации компании Renesas, распространяемой на условиях NDA.

Исходный код программного обеспечения и выполняемый модуль предоставляются на условиях AS IS. Загрузить утилиту FWTOOL и текстовый файл с исходным кодом можно прямо сейчас с нашего сайта. Предлагаемые файлы не содержат вирусов, показа рекламы, шпионского и иного нежелательного ПО.

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

«Компостер» благодарен компании IT-Link
за предоставленный для исследований адаптер USB 3.0