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

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

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

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

На практике, это не всегда так. Штатные программные средства, предоставляемые про­из­во­ди­те­ля­ми уст­ройств, обы­ч­но ори­е­н­ти­ро­ва­ны на обновление firmware, то есть на си­ту­а­цию, при которой устройство ис­прав­но, firm­ware ра­бо­то­спо­соб­но и целью операции является ус­та­нов­ка его более современной версии. По­э­то­му, замена искажен­ной про­шив­ки часто является проблемой, для решения которой необходимы по­зна­ния в циф­ро­вой элек­т­ро­ни­ке и сис­тем­ном про­г­рам­ми­ро­ва­нии, при условии доступности технической до­ку­мен­та­ции на устройство. Сразу огово­рим­ся, что не су­щест­ву­ет единого протокола доступа к 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 килобайта.

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

Утилита 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 или аналогичной.


Загрузить текстовый файл
с примером программирования
на ассемблере
можно здесь.