Восстановление работоспособности точки доступа D-Link DWL-2100AP когда точка абсолютно не подаёт признаков работоспособности (не светится ниодин светодиод, через COM-порт не видится), так бывает если отформатировать флэш через COM-порт или когда повреждается загрузчик. (мой случай ) Рассмотрено под ревизии A3 и A4.В случае когда по разным причинам точка не подаёт никаких признаков жизни есть последний шанс восстановить точку - это подключиться через JTAG кабель и сделать необходимое.
Нам понадобится:
1. Компьютер с операционной системой Linux или FreeBSD (в моём случае я использовал Linux ASP11) имеющий LPT-порт для принтера.
2. JTAG-кабель по схеме WIGGLER. Отечественный аналог микросхемы 74HC244 - КР1564АП5
3. Источник бесперебойного питания (UPS)
ОБЯЗАТЕЛЬНО! Через него обязательно подключать точку и желалательно компьютер, в противном случае от малейших импульсов в сети посыпятся ошибки при программировании! Процесс прошивки достаточно длительный поэтому лучше перестраховаться.
wiggler.gif ( 27.24 килобайт )
Кол-во скачиваний: 488Я использовал упрощённый вариант без микросхемы
wiggler_mini.gif ( 7.86 килобайт )
Кол-во скачиваний: 444Основной недостаток упрощённый схемы это критичность к длине кабеля, его длина должна быть менее 10 см! Если у Вас компьютер не АТХ то нужно учитывать и длину шлейфа от LPT разъёма до материнской платы!
Разъём подключаем к LPT-порту компьютера (не забудьте его включить в биосе на стандартное прерывание IRQ7, 0x378), а вторым концом припаиваемся к контактам помеченным J5 (у ревизии А3 и А4)
2100_j5.gif ( 3.85 килобайт )
Кол-во скачиваний: 3973. Софт для работой через JTAG. Я использовал готовый пропатченый jtag
jtag_bin.zip ( 887.32 килобайт )
Кол-во скачиваний: 1046Распаковав папку jtag-bin.zip, заходим в папку, куда распаковали и копируем директорию share в директорию /usr/local/ Запускать JTAG следует обязательно от пользователя root.
И так, точка подуключена к LPT-порту, питание к точке включено, запускаем ./jtag и делаем следующее:
Код
[root@boss jtag_bin]# ./jtag
JTAG Tools 0.6-cvs-20051228
Copyright (C) 2002, 2003 ETC s.r.o.
JTAG Tools is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for JTAG Tools.
Warning: JTAG Tools may damage your hardware! Type ''quit'' to exit!
Type ''help'' for help.
jtag> cable parallel 0x378 WIGGLER
Initializing Macraigor Wiggler JTAG Cable on parallel port at 0x378
jtag> detect
IR length: 5
Chain length: 1
Device Id: 00000000000000000000000000000001
Unknown manufacturer!
chain.c(110) Part 0 without active instruction
chain.c(133) Part 0 without active instruction
chain.c(110) Part 0 without active instruction
jtag> include atheros/ar2312/ar2312
jtag> poke 0x58400000 0x000e3ce1
ImpCode=01000000010000000100000000000000
EJTAG version: 2.6
EJTAG Implementation flags: R4k ASID_8 NoDMA MIPS32
jtag> detectflash 0x1fc00000
dev ID=007e man ID=0001
Using CFI flash chip detection, not jedec
Query identification string:
Primary Algorithm Command Set and Control Interface ID Code: 0x0002
(AMD/Fujitsu Standard Command Set)
Alternate Algorithm Command Set and Control Interface ID Code: 0x0000 (null)
Query system interface information:
Vcc Logic Supply Minimum Write/Erase or Write voltage: 2700 mV
Vcc Logic Supply Maximum Write/Erase or Write voltage: 3600 mV
Vpp [Programming] Supply Minimum Write/Erase voltage: 0 mV
Vpp [Programming] Supply Maximum Write/Erase voltage: 0 mV
Typical timeout per single byte/word program: 128 us
Typical timeout for maximum-size multi-byte program: 128 us
Typical timeout per individual block erase: 1024 ms
Typical timeout for full chip erase: 0 ms
Maximum timeout for byte/word program: 256 us
Maximum timeout for multi-byte program: 4096 us
Maximum timeout per individual block erase: 16384 ms
Maximum timeout for chip erase: 0 ms
Device geometry definition:
Device Size: 4194304 B (4096 KiB, 4 MiB)
Flash Device Interface Code description: 0x0002 (x8/x16)
Maximum number of bytes in multi-byte program: 32
Number of Erase Block Regions within device: 2
Erase Block Region Information:
Region 0:
Erase Block Size: 8192 B (8 KiB)
Number of Erase Blocks: 8
Region 1:
Erase Block Size: 65536 B (64 KiB)
Number of Erase Blocks: 63
Порт JTAG очень медленный, например для заливки родного загрузчика размером 327 килобайт у меня ушло 9 часов, представьте сколько будет по времени литься образ флэшки в 4 мегобайта, я заново заливал образ по причине того что у меня накрылся раздел ''/fl'' и при подключении через COM-порт была строчка ''tffsDevCreate failed.''. На прошивку образа флэш у меня ушло 2,5-3 суток. У других процесс проходил намного быстрее (181 минута и 44 часа соответственно), причину пока не выяснил.
И так, нам надо определиться что будет прошивать, я делал 2 вещи: прошивал загрузчик и прошивал образ флэшки. Качаем что вам нужно:
- загрузчик
2100.boot ( 320 килобайт )
Кол-во скачиваний: 506 - образ флэшки
fullflash.rar ( 2.55 мегабайт )
Кол-во скачиваний: 3444Заливка осуществляется командой ''flashmem 0x1fc00000 имя_файла''.
На примере заливки загрузчка это выглядит так:
Код
jtag> flashmem 0x1fc00000 2100.boot
program blocks:
Chip: AMD Flash
Manufacturer: AMD
Chip: Unknown (ID 0x007e)
Protected: 0000
flash_unlock_block 0x1FC00000 IGNORE
block 0 unlocked
flash_erase_block 0x1FC00000
..flash_erase_block 0x1FC00000 DONE
erasing block 0 to program 8192 bytes, status: 0
flash_unlock_block 0x1FC02000 IGNORE
block 1 unlocked
flash_erase_block 0x1FC02000
.....flash_erase_block 0x1FC02000 DONE
erasing block 1 to program 8192 bytes, status: 0
flash_unlock_block 0x1FC04000 IGNORE
block 2 unlocked
flash_erase_block 0x1FC04000
........flash_erase_block 0x1FC04000 DONE
erasing block 2 to program 8192 bytes, status: 0
flash_unlock_block 0x1FC06000 IGNORE
block 3 unlocked
flash_erase_block 0x1FC06000
......flash_erase_block 0x1FC06000 DONE
erasing block 3 to program 8192 bytes, status: 0
flash_unlock_block 0x1FC08000 IGNORE
block 4 unlocked
flash_erase_block 0x1FC08000
...flash_erase_block 0x1FC08000 DONE
erasing block 4 to program 8192 bytes, status: 0
flash_unlock_block 0x1FC0A000 IGNORE
block 5 unlocked
flash_erase_block 0x1FC0A000
....flash_erase_block 0x1FC0A000 DONE
erasing block 5 to program 8192 bytes, status: 0
flash_unlock_block 0x1FC0C000 IGNORE
block 6 unlocked
flash_erase_block 0x1FC0C000
......flash_erase_block 0x1FC0C000 DONE
erasing block 6 to program 8192 bytes, status: 0
flash_unlock_block 0x1FC0E000 IGNORE
block 7 unlocked
flash_erase_block 0x1FC0E000
.......flash_erase_block 0x1FC0E000 DONE
erasing block 7 to program 8192 bytes, status: 0
flash_unlock_block 0x1FC10000 IGNORE
block 8 unlocked
flash_erase_block 0x1FC10000
.......................flash_erase_block 0x1FC10000 DONE
erasing block 8 to program 65536 bytes, status: 0
flash_unlock_block 0x1FC20000 IGNORE
block 9 unlocked
flash_erase_block 0x1FC20000
.........................................flash_erase_block 0x1FC20000 DONE
erasing block 9 to program 65536 bytes, status: 0
flash_unlock_block 0x1FC30000 IGNORE
block 10 unlocked
flash_erase_block 0x1FC30000
.......................................flash_erase_block 0x1FC30000 DONE
erasing block 10 to program 65536 bytes, status: 0
flash_unlock_block 0x1FC40000 IGNORE
block 11 unlocked
flash_erase_block 0x1FC40000
.......................................flash_erase_block 0x1FC40000 DONE
erasing block 11 to program 65536 bytes, status: 0
addr: 0x1FC50000 (done)
verify:
addr: 0x1FC50000
Done.
jtag>
прошивка фуллфлэш содержит 70 блоков
кстати после прошивки всех блоков идёт проверка "verify:", если торопитесь то её делать не обязательно, можно приостановить прошивку нажав Ctrl+C, отключить LPT разъём и сбросить точку по питанию.
И на последок повторюсь, чтобы не потерять драгоценное время подключите компьютер и точку доступа через источник бесперебойного питания, особенно если вы прошиваете фулфлэш. Удачи!