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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Странная проблема с AvrStudio 4+WinAvr, При отладке с JtagIce mkII не работают функции и не изменяются локальн
John23
сообщение Jan 17 2008, 12:57
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 17-01-08
Пользователь №: 34 156



Здравствуйте дорогие знатоки, очень надеюсь на ваш совет.
Недавно начал делать проект с Mega128 пишу на Си, компилирую WinAvr, затем открываю в AvrStudio 4, мега соединяется по JtagIce mkII, для пошаговой отладки жму F11 или F10. Сразу же столкнулся с проблемой, а именно:
1) локальные переменные не изменяются, а всегда равны 0 или 13107(касательно типа int), то есть любой цикл с ними виснет по той причине что переменная всегда постоянна
2)вызов функции приводит к зависанию программы. Это выглядит так - перемещаясь по телу функции её переменные не изменяются, параметр остаётся неизвестным (об этом сообщает watch), и дойдя до последней строчки прога зависает и через несколько секунд возвращается на точку входа, то есть на main().
То есть не понятно почему локальные переменные никак не реагируют на любые манипуляции с ними, ещё больше удивляет что параметры не передаются в функцию.
Подскажите в чём я не прав и что там возможно в настройках не проставил, возможно надо поставить SP4), потому что никогда не встречался с такой немыслимой и глупой ошибкой, а победить её не могу.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jan 17 2008, 13:03
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 John23 - с mkII не работал, однако работал с чистым асйсом - всё шло как по маслу.
Ну для начала советовал бы проверить все настройки в портах там.... Потом посмотреть не коротит ли где чего.

А так из общих предположений - попробуйте сделать самый простенький проэкт в АВР студии - она винавр может подрубать - в настройках глянте. Для примера - отправка по усарт. Скомпильте и залейте - там есть кномка залит и начать отладку - ну и есно смотреите асм код - что у вас там творится...
Go to the top of the page
 
+Quote Post
aesok
сообщение Jan 17 2008, 13:06
Сообщение #3


Знающий
****

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



Цитата(John23 @ Jan 17 2008, 15:57) *
Недавно начал делать проект с Mega128 пишу на Си, ...
2)вызов функции приводит к зависанию программы.....


Поищите в даташите волшебное слово: M103C

Анатолий.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Jan 17 2008, 13:07
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Студия вообще не любит отображать стековые переменные. Чтобы понять в чем дело введите дополнительную глобальную переменную или несколько, в нужных местах программы мониторьте локальные переменные присвоением их значений глобальным, которые нормально вотчатся.
Go to the top of the page
 
+Quote Post
John23
сообщение Jan 17 2008, 13:22
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 17-01-08
Пользователь №: 34 156



2 aesok Вы имеете в виду совместимость с мега103, если так то как это может повлиять на работу программы?
Go to the top of the page
 
+Quote Post
aesok
сообщение Jan 17 2008, 13:28
Сообщение #6


Знающий
****

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



Цитата(John23 @ Jan 17 2008, 16:22) *
2 aesok Вы имеете в виду совместимость с мега103, если так то как это может повлиять на работу программы?


Страницы 4-5 даташита. Или поиск по форуму, здесь это уже было с десяток раз.

Анатолий.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jan 17 2008, 20:28
Сообщение #7


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Совет от aesok очень важен. Студия не всегда правильно отражает периферию и в этом у Вас может быть проблема. Компилятор оптимизирующий (gcc), попробуйте убрать оптимизацию. Сам с этим сталкивался при эмуляции (именно 128 Меги).


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 17 2008, 20:36
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(mdmitry @ Jan 17 2008, 22:28) *
попробуйте убрать оптимизацию.
При чем здесь оптимизация? Ключевое слово в комплект к M103C - стек


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
John23
сообщение Jan 18 2008, 09:08
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 17-01-08
Пользователь №: 34 156



Цитата(Сергей Борщ @ Jan 18 2008, 00:36) *
При чем здесь оптимизация? Ключевое слово в комплект к M103C - стек

Извините за глупые вопросы, просто вообще впервые начал работать с мк и средствами разработки для них, но все же не понимаю причём фьюз совместимости M103C если функции и локальные переменные не работают в принципе. Если в такой функции как...
void something (void)
{
int rez;
int a =2;
int b=3;
rez=a+b;
}
...a и b имеют постоянное значение 0 и зависает на последней строчке, то есть нет возможности пользоваться функциями, и прога зависает при отладке.
Пытался по совету выводить значения, например в порт С, чтобы посмотреть что туда выводится из локальных переменных
void naf(void)
{
unsigned int i;
unsigned char pr;
pr=3;
i=10;
DDRC=0x0F;
PORTC=pr;
PORTC=0x03;
PORTC=i;
pr=2;
PORTC=pr;
}
во всех строках, кроме PORTC=0x03 в порт выводится значение 59, хотя в вотче переменные i и pr всегда равны 15163. Запустил в седующий раз в порт нет присвоения вообще,хотя значение у них так же 15163, кроме опять же строки PORTC=0x03. Где логика. Не вижу закономерности в поведении и поэтому нет возможности разобраться самостоятельно в чем же загвоздка.
Всем признателен за помощь.
Go to the top of the page
 
+Quote Post
aesok
сообщение Jan 18 2008, 09:51
Сообщение #10


Знающий
****

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



Цитата(John23 @ Jan 18 2008, 12:08) *
Извините за глупые вопросы, просто вообще впервые начал работать с мк и средствами разработки для них, но все же не понимаю причём фьюз совместимости M103C если функции и локальные


Пожалуйста, отключите совместимость с ATmega103 и не теряйте свое время понапрасну.

RAM по другим адресам расположена.

Анатолий.

Сообщение отредактировал aesok - Jan 18 2008, 09:52
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 20 2008, 00:55
Сообщение #11


кекс
******

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



Цитата(Сергей Борщ @ Jan 17 2008, 23:36) *
Ключевое слово в комплект к M103C - стек

Сомневаюсь, что ключевое слово "стек" может быть причиной. (если бы речь шла об IAR'е тогда да, но здесь WinAvr).
В gcc стек ложится в конце памяти и теоретически (на маленьких программах) его всегда "за-глаза".
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Jan 20 2008, 01:18
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(defunct @ Jan 20 2008, 03:55) *
Сомневаюсь, что ключевое слово "стек" может быть причиной. (если бы речь шла об IAR'е тогда да, но здесь WinAvr).
В gcc стек ложится в конце памяти и теоретически (на маленьких программах) его всегда "за-глаза".

Напрасно сомневаетесь. У М128 и у М103 по разному размещается память, более того - она разного размера. У м128 4096 байт с 0x0100 по 0x10FF, а у м103 4000 байт с 0x0060 по 0x0FFF. Стек компилятор разместит в памяти, но для м128 - например вершина будет 0x10FF. А такого адреса в м103 просто нет.

Сообщение отредактировал Qwertty - Jan 20 2008, 01:19
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 20 2008, 02:12
Сообщение #13


кекс
******

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



Цитата(Qwertty @ Jan 20 2008, 04:18) *
Напрасно сомневаетесь. У М128 и у М103 по разному размещается память, более того - она разного размера. У м128 4096 байт с 0x0100 по 0x10FF, а у м103 4000 байт с 0x0060 по 0x0FFF. Стек компилятор разместит в памяти, но для м128 - например вершина будет 0x10FF. А такого адреса в м103 просто нет.

Насчет того, что у m103 и m128 по-разному размещена память сомнений у меня нет.
Мой пост выражает сомнения по поводу стека как самостоятельной причины глюка.
Хотя может быть я не так понял пост Сергея.

PS: спасибо, что помогли взглянуть на это с другой стороны smile.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 20 2008, 11:34
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(defunct @ Jan 20 2008, 04:12) *
Хотя может быть я не так понял пост Сергея.
Qwerrty все правильно объяснил - в режиме M103C стек программы, скомпилированной для M128 оказывается в адресах, в которых в этом режиме физически нет памяти. Поэтому программа с хотя бы одним вызовом подпрограммы падает напрочь, а локальные переменные, расположенные на стеке, т.е. опять же там, где памяти нет - содержат мусор.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jan 20 2008, 12:00
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Кстати,интересно,почему атымель до сих пор не похерил этот фьюз?М103 снята с производства бог знает
когда и софт под нее вряд-ли сейчас актуален.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post

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

 


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


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