|
|
  |
Программирование AVR через JTAG, Кто-нибудь имеет информацию конкретно о протоколе JTAG для AVR? |
|
|
|
Jan 5 2009, 08:31
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 13-05-06
Из: Камышин
Пользователь №: 17 067

|
Цитата(Diusha @ Jan 4 2009, 17:55)  А не знает ли кто, с какой частотой на АВР можно гнать сигналы? В ДШ ЖТАГовских характеристик нет  Кстати, Polaris, получилось? Для JTAG ICE в IAR стоит максимум 540KHz, а на практике JTAG ICE MKII однозначно быстрее работает. Можно предположить что в районе 1MHz.
|
|
|
|
|
Jan 6 2009, 04:47
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Сразу оговорюсь: JTAG ICE и т.п. просьба не предлагать, мне надо свое В ДШ программирование по JTAG описано (мягко говоря) сжато, есть неоднозначности. Короче, не получилось. Вообще, связь с АВРкой есть: (1) при записи команды в Instruction Register (TAP в состоянии Shift-IR) с TDO читается 0х01, как и должно быть; (2) чип нормально ресетится и выходит из этого состояния соотв. командами. А теперь пытаюсь что-нибудь прочитать из чипа (Flash, EEPROM, Signature). Дейсвую по ДШ: Цитата 28.7.13 Entering Programming Mode 1. Enter JTAG instruction AVR_RESET and shift 1 in the Reset Register. 2. Enter instruction PROG_ENABLE and shift 0b1010_0011_0111_0000 in the Program- ming Enable Register Цитата 28.7.23 Reading the Signature Bytes 1. Enter JTAG instruction PROG_COMMANDS. 2. Enable Signature byte read using programming instruction 9a. 3. Load address 0x00 using programming instruction 9b. 4. Read first signature byte using programming instruction 9c. … Цитата 28.7.14 Leaving Programming Mode 1. Enter JTAG instruction PROG_COMMANDS. 2. Disable all programming instructions by using no operation instruction 11a. 3. Enter instruction PROG_ENABLE and shift 0b0000_0000_0000_0000 in the program- ming Enable Register. 4. Enter JTAG instruction AVR_RESET and shift 0 in the Reset Register. Вопросы: 1. Каким концом в регистр PROG_COMMANDS (0x5) надо совать команды, которые даны в таблице «JTAG Programming Instruction», т.е. 1-й бит слева или справа? Пробовал по-всякому. Самое смешное, какое-то шевеление (но не то) появилось, когда (случайно) «9a. Enter Signature Byte Read» я посылал первым левый бит, а все остальное – 1-м правый 2. Запись в таблице в графе "TDI Sequence" (в одной ячейке) вроде 0100011_10000000 0110001_10000000 0110011_10000000 0110011_10000000 следует понимать, что отправлять надо все приведенные TDI Sequence или любую из них? 3. А может я вообще что-то не так делаю?
|
|
|
|
|
Jan 6 2009, 05:29
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 13-05-06
Из: Камышин
Пользователь №: 17 067

|
Цитата(Diusha @ Jan 6 2009, 07:47)  1. Каким концом в регистр PROG_COMMANDS (0x5) надо совать команды, которые даны в таблице «JTAG Programming Instruction», т.е. 1-й бит слева или справа? Пробовал по-всякому. Самое смешное, какое-то As a definition in this datasheet, the LSB is shifted in and out first of all Shift Registers. То есть младший бит первый.
|
|
|
|
|
Jan 6 2009, 07:42
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Цитата(rvk @ Jan 6 2009, 08:29)  As a definition in this datasheet, the LSB is shifted in and out first of all Shift Registers.
То есть младший бит первый. Но никто не говорил, с какого конца в записи 0110001_10000000 младший. Т.е. нигде не сказано, что эту запись следует воспринимать как двоичное число, а не просто последовательность, как, например Цитата • At the TMS input, apply the sequence 1, 1, 0, 0 at the rising edges of TCK... В данном случае "младший бит" слева
|
|
|
|
|
Jan 6 2009, 09:02
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 13-05-06
Из: Камышин
Пользователь №: 17 067

|
Младший справа по тексту однозначно. Поэтому число 0110001_10000000 должно вдвигаться в проц в таком порядке, (последовательность слева направо, левый ноль первый). Уж не знаю как еще сказать поточнее. Итак слева направо последовательность вдвигания в JTAG: первый бит 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 последний бит Думаю вот так. Как вариант можно взять JTAG_ICE подключить его к процессору, и используя документ http://www.atmel.com/dyn/resources/prod_do...nts/doc2524.pdf это описание протокола между AVRSTUDIO и JTAG_ICE, подавать ему свои команды, и смотреть,что выдается на процессор. Насчет справа слева, есть разница. Когда приводится просто число 0110001, младший бит справа, а когда стоит слово sequence, что означает последовательность, тогда 1,0,0,1 первая цифра слева и есть то что вводится первым. Думаю в русском тексте тоже все также примерно строится...
Сообщение отредактировал rvk - Jan 6 2009, 09:13
|
|
|
|
|
Jan 6 2009, 09:43
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Цитата(rvk @ Jan 6 2009, 12:02)  Младший справа по тексту однозначно. Вы это знаете (если да, то откуда?) или предполагаете? Цитата(rvk @ Jan 6 2009, 12:02)  Как вариант можно взять JTAG_ICE ... Взять негде Цитата(rvk @ Jan 6 2009, 12:02)  Насчет справа слева, есть разница. Когда приводится просто число 0110001, младший бит справа, а когда стоит слово sequence, что означает последовательность, тогда 1,0,0,1 первая цифра слева и есть то что вводится первым. Беда в том, что в таблице написно "0110001_10000000", о том, что это число нигде не сказано, графа называется "TDI Sequence"
|
|
|
|
|
Jan 6 2009, 11:47
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Diusha @ Jan 6 2009, 07:47)  Сразу оговорюсь: JTAG ICE и т.п. просьба не предлагать, мне надо свое А Byte Blaster хотя бы есть ? Можете скачать вот эти исходники: http://www.urjtag.org/это реинкарнация вот этого: http://openwince.sourceforge.net/jtag/Вам от туда понадобятся TAP драйвер и описание регистров mega128. Ну и при наличии Byte Blaster, Вы можете просто потренироваться давать разные команды из командной строки.
|
|
|
|
|
Jan 6 2009, 13:09
|
Местный
  
Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964

|
Цитата(Diusha @ Jan 4 2009, 16:55)  А не знает ли кто, с какой частотой на АВР можно гнать сигналы? В ДШ ЖТАГовских характеристик нет  Кстати, Polaris, получилось? Да, получилось, пока окончательно не отладил, потому что все делается в фоновом режиме (задача не основная, делается для собственного удобства), плюс там полный комплекс, пишется и по JTAG и по SPI, протокол STK500, плюс интерфейсная часть на компе со складированием прошивок и результатов в базу, но можно запустить AVR Studio, прошить через STK500 как бы (на самом деле через JTAG) фузы, считать сигнатуры, прошить флэш и EEPROM. Могу сбросит часть исходников, касающихся непосредственно работы с JTAG.
|
|
|
|
|
Jan 6 2009, 13:19
|
Местный
  
Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964

|
Цитата(Diusha @ Jan 6 2009, 15:17)  Polaris, может Вы тогда сможете ответить на мои вопросы? Эх, не знаю, как дать ссылку непосредственно на пост... Короче, в этой ветке, послано сегодня в 7:47 Сейчас не смогу ответить, все исходники и доки на работе, а по памяти врать не хочу  Восьмого выйду на работу - отвечу. И куски кода с вычитыванием тоже смогу послать.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|