Инструкция как искать JTAG распиновку на примере ZTE MF170
Источник

Инструкция как искать JTAG распиновку на ZTE MF170 (инструкция в RIFF-е идет на английском, поэтому может кому пригодится). Добавлю что в MF170 dll напряжение стоит 2.6В хотя у этого процессора - уровни 1.8В

1. Я использовал готовый RJ45 шнурок-папу в котором были проводки на 6м и 8м контактах. Не нужное - отрезал, а к "6му" проводку припаял иголку, и к 8-му - корпус (хотя его даже не подключал так как земля шла общая через ЮСБ шнурок (RIFF и модем подключены к одному компу, значит и земля более-менее общая)

2. Разбираем модем - в нем видна группа контактов:
Код:
оооооооо
оооооооо
ооо
3. Пронумеровываем их и подготавливаем пустой текстовый файл, подключаем модем к ЮСБ и предварительно тестером замеряем напряжения на каждой площадке, все это записываем в файлик. У меня получилось такое:
Код:
1 - 0В
2 - 0В
3 - 3.77В
4 - 3.77В
5 - 0В
6 - 0В
7 - 1.78В
8 - 0В
9 - 0В
10 - 1.70В
11 - корпус
12 - 1.71В
13 - 0В
14 - 1.71В
15 - 4.93В
16 - 0В
17 - 0В
18 - корпус
19 - корпус
Теперь все сомнения отпали - никакая тут не 2.6 логика а 1.8-товая. Плюс стало видно что 3,4 и 15 площадки никакого отношения к джитагу не имеют (по крайней мене - я таких уровней логики не знаю)

4. Теперь в софте бокса ставим Custom Target settings и выбираем Voltage = 1.8В и щелкаем на кнопку Start Probing

6. Ставим иголку на первую площадку - софт показывает probe0=0.75V, probe1=1.58V

7. Иголку на вторую площадку - софт пишет probe0=0.00 и probe1 = 1.68

8. 3,4 - вообще пропускаем. И так далее, короче меряем все 19 площадок. В результате у меня получилось:
Код:
1 - p0=0.75, p1=1.58
2 - p0=0.00, p1=1.68 - наверное trst
5 - p0=0.00, p1=1.78 - явно tdo
6 - p0=0.00, p1=0.00 - rtck
7 - p0=1.78, p1=1.80 - 
8 - p0=0.00, p1=1.11 - 
9 - p0=0.00, p1=1.68 - наверное trst
10 - p0=0.11,p1=1.78 - tdi,tms или tck
11 - корпус
12 - p0=0.11,p1=1.78 - tdi,tms или tck
13 - p0=0.00,p1=1.68 - наверное trst
14 - p0=0.11,p1=1.78 - tdi,tms или tck
16 - p0=0.00,p1=1.10
17 - p0=1.39,p1=1.38
18,19 - корпус
P.S. Функцию площадки я определял по аналогии с тем как написано в английской документации - trst ставят без подтяжек поэтому второе значение - probe1 обычно проседает слегка ниже заданного уровня (тут - 1.8В), tdi, tms и tck - c подтяжками, поэтому probe0 должен быть чуть выше нуля, rtck - выход поэтому он удерживает 0, tdo - откл. (high-impedance) поэтому когда иголкой дотрагиваемся - это никак не влияет на измерения (как будто площадка висит в воздухе)

9. Теперь можно припаять с большой вероятностью площадки 5,6 и корпус к соответствующим контактам на боксе. По инструкции чтобы найти tck надо проверить подозрительные площадки - здесь tck может быть на 10й, 12й или 14й площадке. Но в мануале еще надо знать наверняка trst - а здесь их целых 3 возможных - 2, 9 или 13-я площадка. Но это не очень страшно, просто надо в худшем случае 3 раза перепять trst.

10. Итак, в программе закрываем окошко probing и переходим на страницу JTAG read write, ставим частоту JTAG TCK Speed = RTCK, Custom Target Settings, Voltage = 1.8V
Припаиваем иголку к tck контакту на боксе, а trst сигнал с бокса - припаиваем к площадке 2 (предположим что trst это она).
Теперь ставим иголку на 10-ю площадку - и не отпуская - нажимаем в софте на Analize JTAG Chain - в ответ

Код:
Connecting to the target...ERROR
ERROR: The RTCK Signal does not respond.
иголку на 12-ю площадку - и не отпуская - нажимаем на Analize JTAG Chain - в ответ тоже самое
иголку на 14-ю площадку - и не отпуская - нажимаем на Analize JTAG Chain - в ответ тоже самое
Ни разу tck не прошло а значит trst это не 2я площадка. Пробуем 9ю площадку - перепаиваем trst от бокса на нее и снова 3 раза ищем tck дотрагиваясь иголкой на 10, 12 и 14 площадки. Снова неудача.

Осталось припаять trst на 13-ю площадку и снова повторить 3 раза поиск tck - и опа! с первой попытки когда иголка была на 10-й площадке получаем:

Код:
Connecting to the target...ERROR
None was found.
Значит tck проходит на rtck и джитаг работает - теперь наверняка известны trst,rtck и tck (плюс tdo - почти 99% это 5 площадка, по крайней мене других вариантов нет). Теперь можно отпаять иголку и припаять tck напрямую на площадку 12.

Остается определить 2 сигнала: tms и tdi - это 12 и 14я площадки или наоборот, 14я и 12я. Для этого первой попыткой паяем tdi с бокса на 14ю, tms с бокса - на 12ю площадку, нажимаем Analize JTAG chain и получаем:

Код:
Connecting to the target...ERROR
None was found.
значит надо наоборот - tdi с бокса на 12ю, tms с бокса - на 14ю площадку. После этого снова жмем Analize JTAG chain и о чудо!

Код:
Connecting to the target...OK
Set I/O Voltage reads as 1.80V, TCK Frequency is RTCK

Following devices are found on the JTAG chain:
Device on TAP #0: ID = 0x4015E0E1, IR Length = 0x04 bits
Total IR length: 0x0004 bits
Все работает, осталось только найти оставшийся сигнал - NRST
Отметим на самой первой таблице с измеренными напряжениями уже известные сигналы:
Код:
1 - 0В
2 - 0В
3 - 3.77В
4 - 3.77В
5 - 0В - TDO
6 - 0В - RTCK
7 - 1.78В - 
8 - 0В
9 - 0В
10 - 1.70В - TCK
11 - корпус
12 - 1.71В - TDI
13 - 0В
14 - 1.71В - TRST
15 - 4.93В
16 - 0В
17 - 0В
18 - корпус
19 - корпус
Сигнал сброса системы - активный при уровне 0, значит он должен быть в свободном состоянии равен уровню 1 (=1.8В). Здесь - это вообще исключает любые варианты, площадка которая удовлетворяет этому условию - только одна - 7я площадка. Паяем NRST с бокса на эту площадку. Дополнительно ставим в настройках софта - Target = ARM926 и TAP#=0 пробуем нажимать Reset the Target несколько раз подряд и действительно ресет работает, так как после каждого нажатия пишет что-то типа такого:

Код:
Resetting target...OK
STATUS: Target is halted.

R0 = 0x00000010 R6 = 0x00002020 R12 = 0x00004023
R1 = 0x60008000 R7 = 0x00000050 R13 = 0x78017D08
R2 = 0x00000024 R8 = 0x780004A4 R14 = 0x80002000
R3 = 0x000F4240 R9 = 0x00000000 R15 = 0xFFFF0020
R4 = 0x00000000 R10 = 0x00000004 CPSR = 0x000000D3
R5 = 0x00000000 R11 = 0x60008000
______________________________
ПРАВИЛА нашего форума
Последний раз редактировалось Sergey; 17.09.2013 в 08:51.