|
Проблемы с отладкой программы через JTAGICE mkII |
|
|
|
 |
Ответов
|
Nov 22 2007, 17:02
|

кекс
     
Группа: Свой
Сообщений: 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").. Если ноги будут дергаться, то большая вероятность того, что у вас что-то не так с размещением программы.
|
|
|
|
|
Nov 23 2007, 06:28
|
Частый гость
 
Группа: Свой
Сообщений: 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"
|
|
|
|
|
Nov 23 2007, 11:07
|

кекс
     
Группа: Свой
Сообщений: 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 и оставить его висеть в воздухе).
|
|
|
|
|
Nov 23 2007, 11:43
|
Частый гость
 
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Nov 23 2007, 13:32
|

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

|
Цитата(Yaumen @ Nov 23 2007, 14:43)  5. А почему программа должна стартовать не с 0-го адреса, если у меня Boot Reset vector Disabled. И еще, может пока у меня программа входит в режим Debug процессор выполняет программу и куда-то убегает? Но тогда непонятно, почему после ввода в режим Debug он не сбрасывает устройство в 0. Не должна. Куда-то уходить программа также не может, т.к. у вас бесконечный цикл и плюс по JTAG посылается команда сброса. Остаются варианты 1 (с прерыванием, маловероятный) и 3. Попробуйте код: cli L1: rjmp L2 nop nop nop nop L2: rjmp L1 rjmp L1 // just in case jmp L1 jmp L1 .... заполнить командами jmp L1 всю таблицу векторов
|
|
|
|
Сообщений в этой теме
Yaumen Проблемы с отладкой программы через JTAGICE mkII Nov 22 2007, 06:04 mse Цитата(Yaumen @ Nov 22 2007, 09:04) 1. По... Nov 22 2007, 06:25 Yaumen Цитата(mse @ Nov 22 2007, 09:25) Сделать ... Nov 22 2007, 06:38  mse Цитата(Yaumen @ Nov 22 2007, 09:38) Извин... Nov 22 2007, 06:56 mse Цитата(Yaumen @ Nov 22 2007, 10:06) К сож... Nov 22 2007, 07:42  Yaumen Цитата(mse @ Nov 22 2007, 10:42) А вывали... Nov 22 2007, 08:23   mse Цитата(Yaumen @ Nov 22 2007, 11:23) ...
... Nov 22 2007, 08:40    Yaumen Цитата(mse @ Nov 22 2007, 11:40) Ха-ха...... Nov 22 2007, 08:59     mse Цитата(Yaumen @ Nov 22 2007, 11:59) Ха. С... Nov 22 2007, 09:15      Yaumen Цитата(mse @ Nov 22 2007, 12:15) Ну,блин.... Nov 22 2007, 10:21       defunct Цитата(Yaumen @ Nov 22 2007, 13:21) На др... Nov 22 2007, 10:37        Yaumen Цитата(defunct @ Nov 22 2007, 13:37) Раз ... Nov 22 2007, 10:53         defunct Цитата(Yaumen @ Nov 22 2007, 13:53) Boot ... Nov 22 2007, 11:01          Yaumen Цитата(defunct @ Nov 22 2007, 14:01) Вы н... Nov 22 2007, 11:45     mse Этта...Раз у вас м128, то соберите какой-нить прос... Nov 23 2007, 12:05      Yaumen Цитата(defunct @ Nov 23 2007, 15:32) Не д... Dec 6 2007, 07:35 mse А камень поменять? Nov 22 2007, 12:51 Yaumen Цитата(mse @ Nov 22 2007, 15:51) А камень... Nov 22 2007, 13:18 m16 имхо фуз М103 не сброшен Nov 22 2007, 13:44 Yaumen Цитата(m16 @ Nov 22 2007, 16:44) имхо фуз... Nov 22 2007, 14:17 Vasia Klin Такая же ерунда была у меня. Чип прошивался, но от... Nov 23 2007, 04:41 IgorKossak JTAG connection -> Target clock frequency должн... Nov 23 2007, 07:30 Yaumen Цитата(IgorKossak @ Nov 23 2007, 09:30) J... Nov 23 2007, 08:04 kada Может запрограммирован fuse WDTON ?
При останове п... Nov 23 2007, 08:13 Yaumen Цитата(kada @ Nov 23 2007, 10:13) Может з... Nov 23 2007, 08:46 kada Недавно я тоже мучался с отладкой Mega128 через mk... Nov 23 2007, 09:09 IgorKossak Цитата(kada @ Nov 23 2007, 11:09) Проблем... Nov 23 2007, 10:35 Vasia Klin Уже почти год работаем с JTAG mkII. Их у нас неско... Dec 6 2007, 08:28 Yaumen Цитата(Vasia Klin @ Dec 6 2007, 10:28) Уж... Dec 6 2007, 09:04 Busel Roman Такая же беда встречалась. Пытался отлаживать прог... Dec 6 2007, 09:13  Yaumen Цитата(Busel Roman @ Dec 6 2007, 11:13) Т... Dec 6 2007, 09:24 Vasia Klin А вы попробуйте поключить какой нибудь чип к вашем... Dec 6 2007, 09:54 Yaumen Цитата(Vasia Klin @ Dec 6 2007, 11:54) А ... Dec 11 2007, 15:09
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|