Анамнез:
объект проблемы: роутер на чипе AR2313a
Субъект - подключение по JTAG.
Источники знаний, которые использовал:
Мануал 1 http://www.lan23.ru/wifi/JTag/jtag.html
Мануал 2 http://wiki.openwrt.org/toh/d-link/dwl-2100ap
Мануал 3 http://wiki.openwrt.org/doc/hardware/port.jtag.cable.buffered
Судя по документации - затыка в том месте где он у меня - быть не может...
Но он есть!
Итак, пробую. Кабель JTAG - WIGGLER (результаты абсолютно идентичны полученным с использованием Altera ByteBlasterMV и ByteBlasterII)
- Код: Выделить всё • Развернуть
testserv:~# jtag
UrJTAG 0.10 #2007
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors
UrJTAG 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 UrJTAG.
warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.
jtag> cable byteblaster parallel 0x378
Initializing parallel port at 0x378
jtag> detect
IR length: 5
Chain length: 1
Device Id: 00000000000000000000000000000001 (0x00000001)
Unknown manufacturer! (00000000000) (/usr/share/urjtag/MANUFACTURERS)
jtag> include atheros/ar2312/ar2312
ImpCode=01000000010000000100000000000000 40404000
EJTAG version: 2.6
EJTAG Implementation flags: R4k ASID_8 NoDMA MIPS32
Processor entered Debug Mode.
jtag> detectflash 0x1fc00000
dev ID=0000 man ID=0000
urj_flash_amd_detect: mid 0, did 0
error: flash: mid != 0x01
jtag>
Флешка на роутере стоит Spansion...
Спустя 3 минуты: Ну что делать? Вот только сподобился создать тему как
начала определяться!
- Код: Выделить всё • Развернуть
jtag> detectflash 0x1fc00000
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
Primary Vendor-Specific Extended Query:
Major version number: 1
Minor version number: 3
Address Sensitive Unlock: Required
Process Technology: CS99
Erase Suspend: Read/write
Sector Protect: 1 sectors per group
Sector Temporary Unprotect: Not supported
Sector Protect/Unprotect Scheme: 29BDS640 mode (Software Command Locking)
Simultaneous Operation: Not supported
Burst Mode Type: Supported
Page Mode Type: 4 word Page
ACC (Acceleration) Supply Minimum: 11500 mV
ACC (Acceleration) Supply Maximum: 12500 mV
Top/Bottom Sector Flag: Bottom boot device
Program Suspend: Not supported
А ведь неделю плясал вокруг - и осцллографом фронты смотрел и тщательнейшим образом проверял. Мистика!
Но тему пока оставлю - вдруг все из-за влияния робофорумовского эгрегора?
Добавлено спустя 12 минут 20 секунд:
Нет, не мистика!
В файле atheros/ar2312/ar2312 последней строкой стояло: poke 0x58400000 0x000e3ce1
Я строки там закомментировал, вводил вручную - для того чтоб реакцию видеть.
Если poke не выполнять совсем - флешку читает. Если писать что-то неправильное - не видит.
Заменил на poke 0x58400000 0x000e3ce3