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

 
 
 
Reply to this topicStart new topic
> Как в окне Watch посмотреть содержимое long-переменной?, AVR Studio 4 + AVR Assembler
jokolemene
сообщение May 12 2010, 15:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 14-03-10
Пользователь №: 55 950



Отлаживаю сейчас программу, написанную на AVR ассемблере. В ней есть несколько переменных, объявленных подобным образом:
Код
xmodemLength: .byte  2
crc32:        .byte  4

Переменная xmodemLength - это short int, а переменная crc32 - это long. Но при отладке в окне Watch эти переменные отображаются, как char - показывается только их младший байт. Подскажите, пожалуйста, что нужно сделать, чтобы эти переменные отображались полностью - как short и long?
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 12 2010, 21:34
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Ну я в студии мало работал. Может быть попробовать добавить в Watch вот так: (long)crc32

И мне вообще не понравилось как там watch работает. После техасовского Code Composer Studio я как-то чувствовал себя неудобно в AVR студии smile.gif


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
jokolemene
сообщение May 13 2010, 06:22
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 14-03-10
Пользователь №: 55 950



Так я уже пробовал. Не работает. Пишет "Not in scope". Да, я тоже от этого Watch-а не в восторге.
Go to the top of the page
 
+Quote Post
V_G
сообщение May 13 2010, 06:28
Сообщение #4


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Никак.
Я этот вопрос задавал в техподдержку атмела, мне посоветовали писать и отлаживать на Си (типа там watch нормальный).
Выход - только memory window и наблюдать побайтно

Сообщение отредактировал V_G - May 13 2010, 06:29
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 13 2010, 06:35
Сообщение #5


Гуру
******

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



Цитата(V_G @ May 13 2010, 09:28) *
мне посоветовали писать и отлаживать на Си (типа там watch нормальный).
Если используется ассемблер из WinAVR, а не студийный, то можно совместить эти два подхода. Переменные нужных типов объявляются в .c, а используются в ассемблерном файле. Студия будет довольна. Есть еще один дикий способ - создать отдельный с-проект, объявить в нем все переменные, загрузить его в дебаг студии а потом поверх загрузить .hex отлаживаемой программы. Первый все-таки удобнее.


--------------------
На любой вопрос даю любой ответ
"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
sigmaN
сообщение May 13 2010, 06:46
Сообщение #6


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
мне посоветовали писать и отлаживать на Си (типа там watch нормальный).
Безбожно врут! Он работает, но он не нормальный. При включенной оптимизации многие переменные у меня тоже Not in scope(даже когда запускаю код в симуляторе студии) подозреваю, что без оптимизации всё будет Ok, но это уже не нормальный Watch ИМХО smile.gif

P.S. а без оптимизации у меня код не влазит во флешку т.к. задержки из util/delay.h кто-то сделал с применением плавучки ))
Кароче я переменные просто в ком порт засовывал и не стал со всем этим разбираться )) Может быть и вам так поступить тоже


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
jokolemene
сообщение May 13 2010, 07:08
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 14-03-10
Пользователь №: 55 950



Цитата(V_G @ May 13 2010, 09:28) *
Никак.
Я этот вопрос задавал в техподдержку атмела, мне посоветовали писать и отлаживать на Си (типа там watch нормальный).

Вот порнушники. На дворе 21-й век, а они всё не могут такой элементарной вещи сделать.
Цитата(V_G @ May 13 2010, 09:28) *
Выход - только memory window и наблюдать побайтно

Сейчас так и делаю.
Цитата(Сергей Борщ @ May 13 2010, 09:35) *
Если используется ассемблер из WinAVR, а не студийный...

Использую AVR Assembler Version 2 - понравился тем, что в нём комментарии можно по сишному типу оформлять (/* */).
Цитата(sigmaN @ May 13 2010, 09:46) *
Кароче я переменные просто в ком порт засовывал и не стал со всем этим разбираться )) Может быть и вам так поступить тоже

Я отлаживаю бутлоадер - ограничен местом, поэтому такой вариант отладки напрягает. Кроме того специально под этот проект был приобретён JTAGICE MkII (нифига не задёшево). Имея такой дебаггер, выводить отладочную информацию в COM-порт - это несерьёзно.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 13 2010, 07:14
Сообщение #8


Гуру
******

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



Цитата(jokolemene @ May 13 2010, 10:08) *
Использую AVR Assembler Version 2 - понравился тем, что в нём комментарии можно по сишному типу оформлять (/* */).
Используйте от WinAVR - там можно не только комментарии, но и весь сишный препроцессор использовать. И Многофайловые проекты делать. И ваши ассемблерные исходники потом можно будет использовать в ваших же С-проектах.


--------------------
На любой вопрос даю любой ответ
"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
jokolemene
сообщение May 13 2010, 07:25
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 14-03-10
Пользователь №: 55 950



WinAVR у меня установлен. Ещё до написания основной программы на C я хотел им пользоваться, но потом на IAR C перешёл. Но что-то в опциях ассемблера студии я не вижу возможности выбрать для компиляции ассемблер WinAVR. Как его к студии прикрутить?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 13 2010, 09:48
Сообщение #10


Гуру
******

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



Цитата(jokolemene @ May 13 2010, 10:25) *
Но что-то в опциях ассемблера студии я не вижу возможности выбрать для компиляции ассемблер WinAVR. Как его к студии прикрутить?
Создавайте C-проект WinAVR, выкидывайте из него предлагаемый вам main.c, добавляйте свои ассемблерные файлы с расширением .S, в свойствах проекта в опции линкера добавьте -Wl,-nostartfiles


--------------------
На любой вопрос даю любой ответ
"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
demiurg_spb
сообщение May 15 2010, 08:09
Сообщение #11


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(sigmaN @ May 13 2010, 10:46) *
P.S. а без оптимизации у меня код не влазит во флешку т.к. задержки из util/delay.h кто-то сделал с применением плавучки ))

Может это поможет.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


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


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