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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Отладка устройств на МК без JTAG, Как это делать правильно?
shevek
сообщение Jul 1 2006, 21:44
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 1-10-05
Пользователь №: 9 136



Как "правильно" отлаживать устройства не имеющие JTAG? Может Atmel и считает что в 2k байтной программе нечего отлаживать, но для меня это далеко не так.

Специфика устройства с которым я работаю в данный момент такова что там есть с десяток параметров точное значение которых расчетами(и моделированием) подобрать очень сложно (для меня во всяком случае).

Возникла идея встроить в программу нечто вроде отладчика который будет способен выполнять очень просты действия получать от ПК новые значения параметра и заносить его в SRAM. Камень tiny26 , есть три свободных пина(ISP по совместительству). Но возникли сомнения в плане того хватит ли МК на это производительности ведь придется поддерживать какой никакой простой но программный протокол обмена с ПК. Оценить даже приблизительно эти издержки я не могу, ибо опыта нет.

Прокоментируйте пожалуйста эти мысли вслух, что вы думаете об этом?

Если идея с отладчиком здравая то наверное есть где-то примеры реализации подобных задач?

Сообщение отредактировал shevek - Jul 1 2006, 21:45


--------------------
Мы не просто идем в будущее, мы его атакуем.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jul 1 2006, 21:57
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



В некоторых мелких камнях есть debugWIRE, правда, я сам это чудо не пользовал ниразу... В Т26 его нету(


--------------------
Go to the top of the page
 
+Quote Post
Shurmas
сообщение Jul 1 2006, 22:13
Сообщение #3


Местный
***

Группа: Новичок
Сообщений: 232
Регистрация: 24-06-06
Пользователь №: 18 332



Цитата(shevek @ Jul 2 2006, 01:44) *
Как "правильно" отлаживать устройства не имеющие JTAG? Может Atmel и считает что в 2k байтной программе нечего отлаживать, но для меня это далеко не так.


Мне нравится отладка через UART и ПК - об этом методе я прочитал там: [banned]/z4.htm - очень удобно ИМХО.
Go to the top of the page
 
+Quote Post
shevek
сообщение Jul 1 2006, 22:16
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 1-10-05
Пользователь №: 9 136



Вот что нашел сам , разибраюсь пока

avr.nikolaew.org/debug.htm


--------------------
Мы не просто идем в будущее, мы его атакуем.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 1 2006, 22:47
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



ИМХО, для отладки 2k кода вполне достаточно осциллографа (или светодиодов), минимальной диагностики по UART и симулятора.
А в большинстве случаев хватит и чего-нибудь одного.
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Jul 2 2006, 09:00
Сообщение #6


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Цитата(aaarrr @ Jul 2 2006, 01:47) *
ИМХО, для отладки 2k кода вполне достаточно осциллографа (или светодиодов), минимальной диагностики по UART и симулятора.
А в большинстве случаев хватит и чего-нибудь одного.

Именно в большинстве случаев smile.gif Смотря какая периферия навешана. Совсем недавно для отладки кода аж в 160 слов пришлось Marconi 2955 привлечь - синтезатор частоты не слушался.


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 2 2006, 09:51
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Дело в том что у тини26 нет UART .Есть USI которое более всего годится для SPI.
Если нужно было управлять\читать с компа, я посылал адрес ячейки оперативки с флагом
чтения\записи (у нее 128 байт оперативки ,как раз 7 бит для адресса и один на флаг),
вторым байтом или принимал или посылал само значение.
Программка обслуживающая подобный протокол занимала буквально десяток команд.
1 Принимаем ,выделяем флаг,остальное сохраняем в указателе.
2 Определяем значение флага и по нему решаем ,заносить следующий байт в оперативку или выбрать и отправить.

Таким макаром можно и управлять девайсом и переменные читать и получать инфу.
Единственное что необходимо ,нужно точно знать в каких ячейках что хранится.
Go to the top of the page
 
+Quote Post
shevek
сообщение Jul 2 2006, 10:08
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 1-10-05
Пользователь №: 9 136



bodja74

Именно нечто подобное я и хочу реализовать. По ссылке приведенной выше есть пример подобного отладочного модуля для МК, но к сожалению автор забыл(или не захотел) указать ссылку на программу для ПК управляющую всем этим делом(через простой переходник с COM).

Может есть где примеры превращения COM в SPI?


--------------------
Мы не просто идем в будущее, мы его атакуем.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 2 2006, 10:17
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



По быстрячку можно сделать следуещее.
1. Подлинковать старый добрый software uart - сделать передачу, через любую ногу (правда займет таймер)
2.Хранить критичные параметры в eeprom и обмениватся ими через программатор.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
nml
сообщение Jul 2 2006, 10:41
Сообщение #10


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

Группа: Свой
Сообщений: 86
Регистрация: 13-06-04
Из: Minsk
Пользователь №: 29



Цитата(shevek @ Jul 2 2006, 13:08) *
По ссылке приведенной выше есть пример подобного отладочного модуля для МК, но к сожалению автор забыл(или не захотел) указать ссылку на программу для ПК управляющую всем этим делом

Оба отладочных обмена (попроще и покруче) реализованы в программе программатора (ну и сказал :-) ) uniprof
Go to the top of the page
 
+Quote Post
shevek
сообщение Jul 2 2006, 10:52
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 1-10-05
Пользователь №: 9 136



nml

Спасибо.


--------------------
Мы не просто идем в будущее, мы его атакуем.
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 2 2006, 11:13
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(shevek @ Jul 2 2006, 13:08) *
bodja74

Именно нечто подобное я и хочу реализовать. По ссылке приведенной выше есть пример подобного отладочного модуля для МК, но к сожалению автор забыл(или не захотел) указать ссылку на программу для ПК управляющую всем этим делом(через простой переходник с COM).

Может есть где примеры превращения COM в SPI?


У меня есть исходники совсем простого примера эмуляции COM в SPI на VB6.
Если устраивает,оставляйте адресс ,вышлю.
Go to the top of the page
 
+Quote Post
m16
сообщение Jul 2 2006, 11:15
Сообщение #13


Местный
***

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



есть ещё два способа которые сам пользую:
а)макетка с мегой16 на которой отлавливаю баги в коде для мелких камней с помощью житага
б)пользую Algorithm Builder . к коду добавляется 130байт программы обмена и отладка через один назначенный пин проца
Go to the top of the page
 
+Quote Post
shevek
сообщение Jul 2 2006, 11:21
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 1-10-05
Пользователь №: 9 136



bodja74

Да, пожалуйста. VB незнаю но думаю осилю спортировать это в С или Pascal.
shevek at netman.ru


--------------------
Мы не просто идем в будущее, мы его атакуем.
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 2 2006, 12:06
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(shevek @ Jul 2 2006, 14:21) *
bodja74

Да, пожалуйста. VB незнаю но думаю осилю спортировать это в С или Pascal.
shevek at netman.ru


Исходник использует контролл MSCOMM32.OCX ,насколько я в курсе Борландовские среды их не переваривают,если хотите портировать на Си,ставте С++ из комплекта VisualStudio от MicroSoft.
Ладно пошел отправлять.
Go to the top of the page
 
+Quote Post
shevek
сообщение Jul 2 2006, 12:41
Сообщение #16


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 1-10-05
Пользователь №: 9 136



bodja74
Получил спасибо.
Разберусь.


--------------------
Мы не просто идем в будущее, мы его атакуем.
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jul 3 2006, 07:30
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(shevek @ Jul 2 2006, 00:44) *
Как "правильно" отлаживать устройства не имеющие JTAG? Может Atmel и считает что в 2k байтной программе нечего отлаживать, но для меня это далеко не так.

Использую IDE и ее отладочный интерфейс по SPI или СОМ ( SPI может быть программным )
с tinyboot.com ( раздел Firmware )
Go to the top of the page
 
+Quote Post
Abatt
сообщение Jul 3 2006, 08:37
Сообщение #18


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 22-06-06
Пользователь №: 18 277



Интересная штучка. Можете выложить что-то сделаное на ней ?
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jul 3 2006, 09:49
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(Abatt @ Jul 3 2006, 11:37) *
Интересная штучка. Можете выложить что-то сделаное на ней ?

Если реплика к IDE c tinyboot.com, то использовал ее для работы с PDP11
часть документации перевел.

P.S. Что поконкретнее интересует?
Go to the top of the page
 
+Quote Post
InvisibleMan
сообщение Jan 30 2007, 19:14
Сообщение #20





Группа: Новичок
Сообщений: 1
Регистрация: 24-10-06
Пользователь №: 21 625



Ребята, а не проще сделать программу под mega процессор, отладить ее, а потом ее видоизменить под tiny?
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Jan 30 2007, 20:57
Сообщение #21


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

Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066



А чем не устраивает АВРСТУДИЯ?
Очень, по-моему неплохой инструмент для отладки именно небольших
проектиков. Причем прямо по с-коду (если пишете на с)или по АСМ.
Go to the top of the page
 
+Quote Post
Dopler
сообщение Jan 30 2007, 22:09
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Цитата(InvisibleMan @ Jan 30 2007, 19:14) *
Ребята, а не проще сделать программу под mega процессор, отладить ее, а потом ее видоизменить под tiny?


В этом трудоемком деле есть одна особенность - чаще всего бывает, что проект, одинаково работающий в mega128 и tiny15 не нуждается в отладке в принципе.
Go to the top of the page
 
+Quote Post
boez
сообщение Jan 30 2007, 22:33
Сообщение #23


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

Группа: Новичок
Сообщений: 79
Регистрация: 1-11-06
Пользователь №: 21 868



Цитата(Dopler @ Jan 30 2007, 21:09) *
В этом трудоемком деле есть одна особенность - чаще всего бывает, что проект, одинаково работающий в mega128 и tiny15 не нуждается в отладке в принципе.


Хорошо сказано!

Отлаживал как-то я проект на меге 128 (ну была она в руках на плате). А работать должен был на меге 8. Компилю под мегу128, заливаю - работает. Компилю под м8, компилится без ошибок. Отдаю, заливают - не работает! Закончилось тем что купил мегу8 в дипе и распаял на макетке. Тогда токо понял в чем прикол. Кто нибудь знает что будет если неправильно написать имя вектора в объявлении SIGNAL(SIG_чегонибудь) (это WinAVR)? А ничего! Молча собирается, но вектор не вписывается, а обработчик остается в воздухе. Вектор заглушен weak символом и никто не жалуется... Ну а у меги 128 два усарта и вектора ессно зовутся по другому - там в имени есть 0 и 1...

А для отладки иногда хватает половинки уарта программного - только передатчик. Он реально проще приемника, можно без таймера на одних тактовых задержках сделать, и скорость задрать под мегабит для меньшего влияния на программу. Хорошо подходит для реал-тайм анализа процессов в программе. Но автору топика это вроде не подойдет - ему наоборот приемник сделать надо... Это уже правда на чем-то одно- или двухпроводном программном надо ваять. Как вариант переходника COM-SPI подойдет... та же самая тиня, может t26, а может и t13 с программным уартом с одной стороны и SPI либо своим протоколом с другой.

Сообщение отредактировал boez - Jan 30 2007, 22:43
Go to the top of the page
 
+Quote Post
aesok
сообщение Jan 30 2007, 22:52
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(boez @ Jan 30 2007, 22:33) *
.... Кто нибудь знает что будет если неправильно написать имя вектора в объявлении SIGNAL(SIG_чегонибудь) (это WinAVR)? А ничего! Молча собирается, но вектор не вписывается, а обработчик остается в воздухе. ......


Может у вас старый WinAVR, или GCC запускается с ключиком -w.

demo.c
#include <avr/io.h>
#include <avr/interrupt.h>

SIGNAL(SIG_XXX)
{
}
....

$ make
avr-gcc -Wall -Os -mmcu=atmega128 -Wundef -gdwarf-2 -g3 -c -o demo.o demo.c
demo.c:4: warning: 'SIG_XXX' appears to be a misspelled signal handler


Анатолий.
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Jan 31 2007, 00:42
Сообщение #25


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

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Как вариант отладки программы могу порекомендовать прицепить к процессору несложный ЖК-индикатор с минимальным количеством ножек. Естественно, сначала надо будет отладить интерфейс работы с этим индикатором. Зато потом можно будет выводить переменные в реальном режиме времени и на реальном железе. ЖК-индикатор может быть на I2C или SPI.
Go to the top of the page
 
+Quote Post
greezol
сообщение Jan 31 2007, 01:20
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 29-01-07
Пользователь №: 24 831



1. Городить целый программный УАРТ на мизерном камне - для некоторых приложений может не хватить. Поэтому лучше не искать встроеную периферию а использовать 2 ноги (1 только на крайний случай) - по одной данные, по другой часы (одна из ног может быть внешним прерыванием, чтобы дергать извне). Потом, УАРТ - это ограничение скорости отладки. как хорошо програмный SPI - шифт, дернул ногой, шифт дернул ногой.
2. Снаружи стоит уже взрослый процессор, который данные полученные от 2-х ног загоняет через уарт не торопять, разумеется организуя буффер внутри.

монитор то получится - зо-ло-той!(с)
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 31 2007, 01:44
Сообщение #27


кекс
******

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



Цитата(boez @ Jan 30 2007, 21:33) *
Отлаживал как-то я проект на меге 128 (ну была она в руках на плате). А работать должен был на меге 8. Компилю под мегу128, заливаю - работает. Компилю под м8, компилится без ошибок. Отдаю, заливают - не работает! Закончилось тем что купил мегу8 в дипе и распаял на макетке. Тогда токо понял в чем прикол. Кто нибудь знает что будет если неправильно написать имя вектора в объявлении SIGNAL(SIG_чегонибудь) (это WinAVR)? А ничего! Молча собирается, но вектор не вписывается, а обработчик остается в воздухе. Вектор заглушен weak символом и никто не жалуется... Ну а у меги 128 два усарта и вектора ессно зовутся по другому - там в имени есть 0 и 1...

Надо это учитывать сразу.
Я обработчики прерываний описываю примерно так:

Код
#if defined(_AVR_IOM8_H_) // mega8
SIGNAL (SIG_OUTPUT_COMPARE2)
#elif defined(_AVR_IOM88_H_)||defined(_AVR_IOM48_H_)||defined(_AVR_IOM168_H_) // mega48/88/168
SIGNAL (SIG_OUTPUT_COMPARE2A)
#elif <другие МК>....
   ....
#else
NOT SUPPORTED PROCESSOR!
#endif
{
   ... код обработчика
}

тобиш если сборка будет идти под процессор который у меня не учитывается, чтобы программа - не компилировалась. И тогда придется залезть в даташит, посмотреть какой вектор и добавить соответвующий #elif..

Обработчиков то в программе не так уж и много..
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 31 2007, 01:48
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(AndreyKeil @ Jan 31 2007, 01:42) *
Как вариант отладки программы могу порекомендовать прицепить к процессору несложный ЖК-индикатор с минимальным количеством ножек. Естественно, сначала надо будет отладить интерфейс работы с этим индикатором. Зато потом можно будет выводить переменные в реальном режиме времени и на реальном железе. ЖК-индикатор может быть на I2C или SPI.


Именно для этих целей иногда использую клавиатуру+LCD с i2c. Проект я выкладывал в библиотеки. Иногда использую специальный стенд, который на LPT компа отладочную инфу передаёт. Кое-что тоже туда выкладывал.

У меня есть debugWare и JTAG, но иногда и этого не достаточно. Например когда от внешнего устройства поток идёт непрерывный. А ошибка ч/з какое-то время работы наступает. В это время необходимо "на ходу" просматривать ту или иную переменную или признак.
Go to the top of the page
 
+Quote Post
I_AM_WINER
сообщение Jan 31 2007, 22:59
Сообщение #29





Группа: Новичок
Сообщений: 4
Регистрация: 31-01-07
Пользователь №: 24 916



Пользуем RS232 и вывод в терминал.
Go to the top of the page
 
+Quote Post
Vlad219i
сообщение Feb 1 2007, 16:32
Сообщение #30


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 13-03-06
Из: Москва
Пользователь №: 15 204



Цитата(SasaVitebsk @ Jan 31 2007, 01:48) *
Именно для этих целей иногда использую клавиатуру+LCD с i2c. Проект я выкладывал в библиотеки.


Кстати, пользуясь случаем - выражаю огромный a14.gif . Оч полезная и удобная штука, повторил ее (слегка подкрутив, не без этого smile.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 Текстовая версия Сейчас: 24th July 2025 - 14:51
Рейтинг@Mail.ru


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