Данное описание может быть полезно владельцам ADSL модемов D-link 300/500G, а также другого оборудования, в котором
применяется флеш память Atmel серии AT45. Упор сделан на программирование AT45DB161B в составе перечисленных модемов, но вероятно применение
методики и ПО (возможно с некоторой доработкой) для отдельного программирования
микросхем серии AT45 и других со сходным алгоритмом чтения записи. Исходники ПО, написанного
на LabVIEW
7.1 прилагаются. Repair_ADSL_D-link_programmator_for_Atmel_AT45[Chupakabra].rar
Зеркало: repair_dlink, Repair_ADSL_D-link_programmator_for_Atmel_AT45_Chupakabra_.rar
HARDWARE
Информация по алгоритмам записи и чтения взята из «AT45DB161B.pdf»
Для чтения всего флеша используется Opcode 0xE8, для блочной записи Opcode 0x85, для блочного чтения 0xD2.
Распиновка 6-pin разъема для DSL-300G/500G взята из
\emergency
direct flash.zip
\Other_Info\AT45DB161B.pdf
Pins \ info |
LPT |
6-pin interface |
AT45DB161B |
+3.3 V |
4 |
3 |
NOT
connected to AT45DB161* (But connected to 4th-pin of LPT with invariable 3.3v
voltage) |
SI |
5 |
1 |
13 |
SCK |
6 |
5 |
12 |
^CS (инвертированный) |
7 |
4 |
11 |
SO |
11 |
2(WITH 100¦¸Resist 0.25w) (я брал 150
Ом) |
14 |
GND |
18 |
6 |
7 |
Фотография модема Huawey, но расположение разъема и флеша похоже на D-link.
Кабель, который я использовал для программирования можно посмотреть в \my_programmator.jpg J
Распиновка 5-pin разъема для DSL-300G/500G. Разъем представляет, по сути, консольный порт с уровнями напряжения LVTTL (+3.3V).
1 |
Tx |
2 |
GND |
3 |
+3 |
4 |
GND |
5 |
Rx |
Где, конкретно, pin1 я не помню, но можно померить тестером, на нем должно быть
+(3-5)V относительно GND. Я использовал переделанный кабель от телефона Motorola (на базе MAX232-аналог микросхемы) для подключения консольного порта к компьютеру.
Некоторая информация об использовании этого (5-pin) разъема, а также параметры соединения можно найти в файлах:
\Other_Info\failedug.php.html
\Other_Info hyperterminal.php.html
Все ПО в целях сокращения временных затрат J написано на National Instruments LabVIEW 7.1. Для запуска EXE файлов необходимы Run-Time библиотеки поддержки:
lvruntimeeng.msi
(из lv71runtimeeng.rar)
!!!
ПО состоит из двух программ:
Программа начинает работать после нажатия на кнопку со стрелкой (подчеркнута на первом рис. синий линией, второй рис. во время работы).
Если все правильно подключено, указан правильный адрес LPT порта (default: 0x378), то данные должны считываться и отображаться на индикаторе SO и в нижнем текстовом поле. Настройки ^CS, SCK … mask отвечают за используемые при чтении и записи контакты LPT (соответствующие биты регистра данных и статуса LPT). По умолчанию все соответствует распиновке из раздела HARDWARE.
Принцип работы: прошивальщик считывает (проверяет) блоки данных размером 528 байт (см. спецификацию по флешу AT45), сверяет их с соответствующими блоками из файла прошивки, если блоки не равны, то соответствующий блок переписывается до тех пор, пока не станут идентичными.
Решение возможных (предполагаемых) проблем сводятся к заданию временным интервалов в алгоритмах записи и чтения. Решаются или увеличением параметров “Задержка чтения”, “Задержка записи” или правкой кода J.
Firmware. Для восстановления своего D-link 300G, я использовал следующую прошивку для 500G (они аппаратно идентичны J):
\Firmware\r2.01.b15.rar
В общем, главное здесь то, что
TEimage.bin заливается напрямую во флеш
!!!
Кроме этого я прилагаю исходники всего ПО:
\Chupa_flasher_AT45.llb
– библиотечный файл LabVIEW.
Chupakabra
pi_meson@front.ru