Перейти к содержанию
    

Проблемы с отладкой программы через JTAGICE mkII

А камень поменять?

 

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

 

Может тут на форуме кто из Минска есть, чтобы проверить сам JTAGICE? Я уже не знаю, что и подумать!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению и этот вариант не проходит, хотя бы из-за того что микросхема прошивается через этот же разъем (интерфейс) и программатор без проблем

Это ни о чем не говорит. Прошивать вы его могли вручную через Tools->Program AVR.

Речь о том, что во вкладке Debug->Select Platform and device должен быть выбран правильный отладчик и правильный тип кристала. Вы проверили что кристал выбран правильно, и что компилируете вы под тот чип, что надо?

 

На чем написана тестовая программа?

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

 

L1: rjmp L1

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такая же ерунда была у меня. Чип прошивался, но отлаживаться не хотел, отладчик либо зависал

наглухо, либо делал полную ерунду. Меняли чипы и было всё тоже самое. Думали что полетел JTAG mkII. Оказалось что не был попаян внешний кварц, т.е. не было клока. Пропаял всё стало нормально работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это ни о чем не говорит. Прошивать вы его могли вручную через 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"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

JTAG connection -> Target clock frequency должна быть меньше тактовой частоты МК более чем в 4 раза для надёжного коннекта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

JTAG connection -> Target clock frequency должна быть меньше тактовой частоты МК более чем в 4 раза для надёжного коннекта.

 

В устройстве кварц на 12МГц, частота JTAG 1МГц. Тем более, все что я писал в предыдущем посте проводилось на одном и том же устройстве, а значит с одним и тем же процессором, кварцем и частотой JTAG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может запрограммирован fuse WDTON ?

При останове программы посмотрите сброшен ли бит "I" регистра SREG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может запрограммирован fuse WDTON ?

При останове программы посмотрите сброшен ли бит "I" регистра SREG

 

Во FUSEs Watchdog выключен. По Рестарту бит "I" всегда сброшен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем kada

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема была что на одной из ног JTAGa M128 на макетке висели компоненты. После освобождения этой ноги все заработало.

Конденсатор на RESET тоже мешает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В устройстве кварц на 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 и оставить его висеть в воздухе).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В окне 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...