реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> вопрос по JTAG'у
Leonid.K.
сообщение Sep 22 2007, 20:55
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 76
Регистрация: 4-06-07
Пользователь №: 28 178



Цитата(Harbour @ Aug 16 2007, 09:09) *
Вроде как шаманство это - из известных способов считается, что длина data register обычно 32 бита, т.е. для неизвестного chain'a можно вычислить кол. микросхем в цепи и их _общую_ длину IR, но не зная длины конкретного IR конкретной микросхемы ничего реального с данной цепью сделать нельзя.

По аналогии с шуткой 90-60-90 это не размеры, а номер телефона, могу сказать, что 32 бита это не длина регистра данных (она у каждого чипа своя и может быть извлечена из файла BSDL), а фиксированная длина поля ID регистра. Такие программы как XILINX iMPACT, ALTERA QUARTUS, LATTICE ispVM умеют определять длину и количество элементов в цепочке а также вычитывать ID CODES.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Sep 23 2007, 05:58
Сообщение #17


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



С каких это пор инструкция IDCODE стала одинаковая для всех чипов ?
Go to the top of the page
 
+Quote Post
Oldring
сообщение Sep 23 2007, 06:29
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Harbour @ Sep 23 2007, 09:58) *
С каких это пор инструкция IDCODE стала одинаковая для всех чипов ?


Посмотрите внимательнее на состотяние Test-Logic-Reset


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Leonid.K.
сообщение Sep 23 2007, 06:39
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 76
Регистрация: 4-06-07
Пользователь №: 28 178



Цитата(Harbour @ Sep 23 2007, 07:58) *
С каких это пор инструкция IDCODE стала одинаковая для всех чипов ?

Сэр, читайте внимательней посты. Не инструкция одинаковая, а длина поля.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Sep 24 2007, 04:26
Сообщение #20


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



Цитата(Leonid.K. @ Sep 23 2007, 09:39) *
Сэр, читайте внимательней посты. Не инструкция одинаковая, а длина поля.

Оно-то верно, в случае если этот регистр ID есть wink.gif Кусочек из стандарта :
...
Test-Logic-Reset

The test logic is disabled so that normal operation of the on-chip system logic (i.e., in response to stimuli
received through the system pins only) can continue unhindered. This is achieved by initializing the instruc-
tion register to contain the IDCODE instruction or, if the optional device identification register is not pro-
vided, the BYPASS instruction (see 7.2). No matter what the original state of the controller, it will enter Test-
Logic-Reset when TMS is held high for at least five rising edges of TCK. The controller remains in this state
while TMS is high.
...
Go to the top of the page
 
+Quote Post
Leonid.K.
сообщение Sep 24 2007, 05:04
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 76
Регистрация: 4-06-07
Пользователь №: 28 178



Цитата(Harbour @ Sep 24 2007, 06:26) *
Оно-то верно, в случае если этот регистр ID есть wink.gif Кусочек из стандарта :
...
Test-Logic-Reset

The test logic is disabled so that normal operation of the on-chip system logic (i.e., in response to stimuli
received through the system pins only) can continue unhindered. This is achieved by initializing the instruc-
tion register to contain the IDCODE instruction or, if the optional device identification register is not pro-
vided, the BYPASS instruction (see 7.2). No matter what the original state of the controller, it will enter Test-
Logic-Reset when TMS is held high for at least five rising edges of TCK. The controller remains in this state
while TMS is high.
...

Совершенно верно. Но, редкий чип с JTAG не содержит этого регистра.
Go to the top of the page
 
+Quote Post
Raven
сообщение Oct 2 2007, 12:34
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Я буквально на днях закончил прочтение IEEE 1149.1, и не возьму в толк, отчего возник спор вокруг того, что достаточно ясно описано в стандарте. Чипы, поддерживающие JTAG, обязаны, как минимум, иметь на борту BYPASS register. Они также могут иметь опциональный ID регистр. При переходе в состояние Test-Logic-Reset (тем или иным способом) таковой чип обязан подключить между TDI и TDO либо BYPASS (если нету IDCODE), либо ID (если таковой есть, то именно его). BYPASS всегда инициализируется 0, а ID в 2-х младших битах обязан иметь pattern "01". Длина ID регистра известна (32 бита) и зафиксирована стандартом. Если добавить сюда еще необходимость начинать ВДВИГАЕМУЮ битовую последовательность зарезервированным fake-ID кодом ("xxxxx000011111111" <- lsb), то мы получаем все возможности для того, чтобы:
1) определять начало и конец "отклика" JTAG-цепочки;
2) отделять друг от друга последовательности, соответствующие BYPASS и ID регистрам;
3) соотвтественно, определять место в цепочке соответствующих чипов с BYPASS/ID и вести их учет.

Прошу извинить обчество, если вышеперечисленное было и так всем ясно.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Oct 2 2007, 13:28
Сообщение #23


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Raven @ Oct 2 2007, 15:34) *
.. skip ..

1) определять начало и конец "отклика" JTAG-цепочки;
2) отделять друг от друга последовательности, соответствующие BYPASS и ID регистрам;
3) соотвтественно, определять место в цепочке соответствующих чипов с BYPASS/ID и вести их учет.

Прошу извинить обчество, если вышеперечисленное было и так всем ясно.


Не совсем так - мне буквально недавно приходилось решать подобную задачу - имелся чип-микросборка с неизвестным числом последовательно "оцепоченных" TAP-ов , один из которых был достоверно ARM7TDMI-S. По ID-регистру выяснить ничего не получится - код команды IDCODE не стандартизован, и длина IR у всех девайсов разная. Но - BYPASS вроде определен в стандарте как все единицы. Вот на это и следует опереться:
1) грузим в цепочку IR-ов единички в избыточном количестве
2) определяем количество регистров BYPASS и соответственно количество TAP-ов
3) далее следует разбить цепочку IR на отдельные элементы - тут в помощь тот факт, что при записи IR он инициализируется в b'01. Ищем единички в отклике после загрузки BYPASS и выясняем границы IR-отдельных TAP-ов. Ну а потом уже выцепляем нужный TAP.
Go to the top of the page
 
+Quote Post
Raven
сообщение Oct 2 2007, 21:07
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Вот вы говорите: "1) грузим в цепочку IR-ов единички в избыточном количестве". Описанная мной метода (на авторство, ессно, не претендую - уши растут из стандарта :-)), как раз и позволяет не гадать, не загружать единички в избыточном кол-ве (а кстати, сколько это - избыточное количество для конкретно взятой серьезной цепочки?), а точно определить кол-во TAP'ов в цепи. Прочитайте внимательнее.

В результате описанной процедуры мы имеем пока описание JTAG-chain'а в виде последовательности TAP'ов, каждый из которых представлен либо 1) BYPASS rg (в свою очередь, представлен одиночным "0" в выходной последовательности), либо 2) ID rg (представлен 32-битовым кодом, младшие 2 бита которого по стандарту д.б. "01"). Теперь для тех TAP'ов, для которых известен ID, можно определить производителя и модель чипа. Для тех же, которые ID не имеют - придется все же провести небольшой reverse engineering для сопоставления конкретного чипа (с конкретной маркировкой ;-)) конкретному TAP'у в цепочке. Но, сдается мне, что все более-менее современные чипы ID-регистр содержат, так что к последнему варианту вряд ли придется прибегать.

Ну, а коль скоро мы сопоставили каждому TAP'у производителя и модель чипа, можно доставать из Web'а соответствующие bsd-файлы, в которых описана масса другого интересного: и длина регистра команд, и коды команд (по крайней мере, public-команд), и полное описание всего boundary scan регистра, и многое другое. А дальше - все зависит от конечной цели...
Go to the top of the page
 
+Quote Post
VslavX
сообщение Oct 3 2007, 07:55
Сообщение #25


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Raven @ Oct 3 2007, 00:07) *
В результате описанной процедуры мы имеем пока описание JTAG-chain'а в виде последовательности TAP'ов, каждый из которых представлен либо 1) BYPASS rg (в свою очередь, представлен одиночным "0" в выходной последовательности), либо 2) ID rg (представлен 32-битовым кодом, младшие 2 бита которого по стандарту д.б. "01"). Теперь для тех TAP'ов, для которых известен ID, можно определить

Да, согласен, я упустил из вида что при Test-Logic-Reset идет инициализация на такую цепочку регистров. (При попытке самостоятельно настроить такую цепочку моим методом я наткнулся на проблему "неизвестен код команды IDCODE", пришлось решать задачу перебором). Любопытный факт, попробую такой автоопределитель добавить в свои JTAG-утилиты.
Go to the top of the page
 
+Quote Post
Raven
сообщение Oct 3 2007, 19:41
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Как говорится - случай классический - RTFM biggrin.gif Рад, если смог чем-то помочь.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 00:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.02719 секунд с 7
ELECTRONIX ©2004-2016