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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Проблемы с отладкой программы через JTAGICE mkII
mse
сообщение Nov 22 2007, 12:51
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



А камень поменять?
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Nov 22 2007, 13:18
Сообщение #17


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

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Цитата(mse @ Nov 22 2007, 15:51) *
А камень поменять?


Пробовал на 2-х изделиях одного типа и еще на одном другого типа, правда на всех стоят AtMega128.

Может тут на форуме кто из Минска есть, чтобы проверить сам JTAGICE? Я уже не знаю, что и подумать!!!
Go to the top of the page
 
+Quote Post
m16
сообщение Nov 22 2007, 13:44
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225



имхо фуз М103 не сброшен
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Nov 22 2007, 14:17
Сообщение #19


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

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Цитата(m16 @ Nov 22 2007, 16:44) *
имхо фуз М103 не сброшен


Режим совместимости с ATmega103 выключен
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 22 2007, 17:02
Сообщение #20


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Yaumen @ Nov 22 2007, 10:06) *
К сожалению и этот вариант не проходит, хотя бы из-за того что микросхема прошивается через этот же разъем (интерфейс) и программатор без проблем

Это ни о чем не говорит. Прошивать вы его могли вручную через Tools->Program AVR.
Речь о том, что во вкладке Debug->Select Platform and device должен быть выбран правильный отладчик и правильный тип кристала. Вы проверили что кристал выбран правильно, и что компилируете вы под тот чип, что надо?

На чем написана тестовая программа?
Рекомендую для проверки нашкрябать одну строку на asm'e и попробовать ее отладить:

L1: rjmp L1

Войдя в режим отладки, "не шагая", попробовать через JTAG подергать порты (кликая мышкой на квадратики во вкладке "I/O View").. Если ноги будут дергаться, то большая вероятность того, что у вас что-то не так с размещением программы.
Go to the top of the page
 
+Quote Post
Vasia Klin
сообщение Nov 23 2007, 04:41
Сообщение #21


Участник
*

Группа: Новичок
Сообщений: 48
Регистрация: 2-04-07
Пользователь №: 26 706



Такая же ерунда была у меня. Чип прошивался, но отлаживаться не хотел, отладчик либо зависал
наглухо, либо делал полную ерунду. Меняли чипы и было всё тоже самое. Думали что полетел JTAG mkII. Оказалось что не был попаян внешний кварц, т.е. не было клока. Пропаял всё стало нормально работать.
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Nov 23 2007, 06:28
Сообщение #22


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

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Цитата(defunct @ Nov 22 2007, 20:02) *
Это ни о чем не говорит. Прошивать вы его могли вручную через Tools->Program AVR.
Речь о том, что во вкладке Debug->Select Platform and device должен быть выбран правильный отладчик и правильный тип кристала. Вы проверили что кристал выбран правильно, и что компилируете вы под тот чип, что надо?

На чем написана тестовая программа?
Рекомендую для проверки нашкрябать одну строку на asm'e и попробовать ее отладить:

L1: rjmp L1

Войдя в режим отладки, "не шагая", попробовать через JTAG подергать порты (кликая мышкой на квадратики во вкладке "I/O View").. Если ноги будут дергаться, то большая вероятность того, что у вас что-то не так с размещением программы.


Значит вот что получилось:

1. Сделал новый проект на ASM с 2-мя строчками
Код
L1: rjmp L2
L2: rjmp L1

2. Проверил, что указан JTAGICE mkII в Debug->Select Platform and device. И указана AtMega128. Все правильно
3. Запустил Build\Build and Run
4. Появился указатель на 1-й строчке моего кода L1: rjmp L2
5. Пощелкал состоянием ног одного порта PORTD. Все нормально, состояние порта устанавливается в соответствии с тем, что я устанавливаю!!!
6. Делаю шаг "Step In" и программа как бы подвисает, но такое ощущение, что она просто куда-то улетает. Так как на TOOLBAR остаются активными кнопки RESET и PAUSE.
7. Через некоторое время, не дождавшись результата, жму PAUSE. И еще через мгновение программа выкидывает окно Dissambler и в нем останавливается на адресе:
Код
+00000A36:   FFFF        ???                      Data or unknown opcode

Пробовал проделывать такое несколько раз и даже со "Step Out", единственное отличие, что после нажатия PAUSE адрес моей остановки случайный.
8. В этом же окне Disassembler перехожу на начало программы и смотрю, что там все нормально записано:
Код
1:        L1: rjmp L2
+00000000:   C000        RJMP    PC+0x0001        Relative jump
@00000001: L2
2:        L2: rjmp L1
+00000001:   CFFE        RJMP    PC-0x0001        Relative jump

9. Ставлю указатель на адрес 0000 - Set next Statement
10. Делаю "Step In", перемещаюсь на L2, делаю еще раз "Step In", перемещаюсь на L1. И так до бесконечности, все работает ОТЛИЧНО!!! Попутный вопрос, обязательно нужно работать в окне Disassembler или что у меня не так?

11. Теперь загружаю свою программу, повторяю пункты 1-5. Все тоже самое - работает нормально, за исключением того, что указатель указывает на 1-ю строчку в моей программе
Код
clr    a

12. Открываю окно Disassembler, смотрю что и там указатель указывает на 1-ю строчку моего кода:
Код
+00000000:   2700        CLR     R16              Clear Register

13. Делаю "Step In" и все программа улетает куда то безвозвратно, а через мгновение, получаю знакомый: "Error single step" и затем еще через мгновение выкидывает окошко "Platform has been disconnected, leaving debug mode"
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 23 2007, 07:30
Сообщение #23


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



JTAG connection -> Target clock frequency должна быть меньше тактовой частоты МК более чем в 4 раза для надёжного коннекта.
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Nov 23 2007, 08:04
Сообщение #24


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

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Цитата(IgorKossak @ Nov 23 2007, 09:30) *
JTAG connection -> Target clock frequency должна быть меньше тактовой частоты МК более чем в 4 раза для надёжного коннекта.


В устройстве кварц на 12МГц, частота JTAG 1МГц. Тем более, все что я писал в предыдущем посте проводилось на одном и том же устройстве, а значит с одним и тем же процессором, кварцем и частотой JTAG
Go to the top of the page
 
+Quote Post
kada
сообщение Nov 23 2007, 08:13
Сообщение #25


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

Группа: Свой
Сообщений: 106
Регистрация: 23-05-05
Из: Ташкент
Пользователь №: 5 324



Может запрограммирован fuse WDTON ?
При останове программы посмотрите сброшен ли бит "I" регистра SREG
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Nov 23 2007, 08:46
Сообщение #26


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

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Цитата(kada @ Nov 23 2007, 10:13) *
Может запрограммирован fuse WDTON ?
При останове программы посмотрите сброшен ли бит "I" регистра SREG


Во FUSEs Watchdog выключен. По Рестарту бит "I" всегда сброшен.
Go to the top of the page
 
+Quote Post
kada
сообщение Nov 23 2007, 09:09
Сообщение #27


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

Группа: Свой
Сообщений: 106
Регистрация: 23-05-05
Из: Ташкент
Пользователь №: 5 324



Недавно я тоже мучался с отладкой Mega128 через mkII, правда из под IARa. mkII был подключен к компу через USB. Правда загрузка firmware в кристалл вообще не происходила. Компилятор ругался что не видит кристалл. Проблема была что на одной из ног JTAGa M128 на макетке висели компоненты. После освобождения этой ноги все заработало.

Сообщение отредактировал kada - Nov 23 2007, 09:14
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 23 2007, 10:35
Сообщение #28


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(kada @ Nov 23 2007, 11:09) *
Проблема была что на одной из ног JTAGa M128 на макетке висели компоненты. После освобождения этой ноги все заработало.

Конденсатор на RESET тоже мешает.
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 23 2007, 11:07
Сообщение #29


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Yaumen @ Nov 23 2007, 09:28) *
В устройстве кварц на 12МГц, частота JTAG 1МГц

5. Пощелкал состоянием ног одного порта PORTD. Все нормально, состояние порта устанавливается в соответствии с тем, что я устанавливаю!!!
7.
8.
9. Ставлю указатель на адрес 0000 - Set next Statement
10. И так до бесконечности, все работает ОТЛИЧНО!!!

Попутный вопрос, обязательно нужно работать в окне Disassembler или что у меня не так?

В окне Disassembler работать не обязательно. Открывается оно тогда когда кристал выполняет код вышедший за границу вашей программы.

То что при нажатии PAUSE проц останавливается по неправильному адресу - 0xA36, может говорить о том, что
1. произошло какое-то прерывание.. (Как? если флаг I == 0, для пресечения такой возможности в тест код ставим первой инструкцией CLI)
2. программа стартует не с 0x0000 адреса.
3. отладчик перепрыгнул через одну команду после точки останова. (для проверки п.3, вставляем между двумя rjmp пару-тройку NOP'ов)

Насчет, что не так:
Используете ли вы самодельный переходник между JTAGICE разъемом и таргет девайсом, если да какова суммарная длина шлейфа?
Можете привести настройки всех фузов которые у вас установлены (можно скопировать из окна Fuses)?
Включите фуз CKOPT и проверьте (если есть возможность) что на XTAL2 есть 12Mhz.
Если 12Mhz есть, самодельный шлейф не используется, то попробуйте разорвать соединение между nSRST JTAGICE и RST таргет девайса (например отпаять пин RST и оставить его висеть в воздухе).
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Nov 23 2007, 11:43
Сообщение #30


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

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Цитата(defunct @ Nov 23 2007, 13:07) *
В окне Disassembler работать не обязательно. Открывается оно тогда когда кристал выполняет код вышедший за границу вашей программы.

То что при нажатии PAUSE проц останавливается по неправильному адресу - 0xA36, может говорить о том, что
1. произошло какое-то прерывание.. (Как? если флаг I == 0, для пресечения такой возможности в тест код ставим первой инструкцией CLI)
2. программа стартует не с 0x0000 адреса.
3. отладчик перепрыгнул через одну команду после точки останова. (для проверки п.3, вставляем между двумя rjmp пару-тройку NOP'ов)

Насчет, что не так:
Используете ли вы самодельный переходник между JTAGICE разъемом и таргет девайсом, если да какова суммарная длина шлейфа?
Можете привести настройки всех фузов которые у вас установлены (можно скопировать из окна Fuses)?
Включите фуз CKOPT и проверьте (если есть возможность) что на XTAL2 есть 12Mhz.
Если 12Mhz есть, самодельный шлейф не используется, то попробуйте разорвать соединение между nSRST JTAGICE и RST таргет девайса (например отпаять пин RST и оставить его висеть в воздухе).


1. FUSEs установленные у меня:
- On-chip Debug Enabled
- JTAG Interface Enabled
- Serial Program Downloading enabled
- Boot Flash section size=512, НО при этом Boot Reset vector Disabled
- CKOPT fuse
- Brown-out Detection VCC=4.0V
- Ext. Crystal Resonator High Freq; Start-up time 16K CK + 64 ms

2. JTAG использую фирменный, шлеф включается непосредственно в отлаживаемое устройство, без дополнительных переходников.

3. Кварц работает именно на 12 Мгц, так как программа, которую я отлаживаю в приниципе работает. Но запускал ее я без оладчика и только теперь решил научиться работать с ним.

4. Непонятно, почему происходит прерывание, так как по рестарту прерывания все должны быть запрещены, а у меня проблема начинается с первой же команды. CLI поставил по 0-му адресу, но ничего не изменилось.

5. А почему программа должна стартовать не с 0-го адреса, если у меня Boot Reset vector Disabled. И еще, может пока у меня программа входит в режим Debug процессор выполняет программу и куда-то убегает? Но тогда непонятно, почему после ввода в режим Debug он не сбрасывает устройство в 0.
Go to the top of the page
 
+Quote Post

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

 


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


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