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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Непонятки с WINAVR из AVRStudio, Что нужно сделать?
011119xx
сообщение Jan 27 2009, 06:51
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Честно говоря такие вопросы задавать стыдно, но все же может ответ на поверхности. Работаю в WINAVR из AVRStudio. Например есть 3 файла исходников на Си. Один главный в котором функция main и 2 с подпрограммами. Из главного вызываются подпрограммы, описанные в 2 других файлах. Так вот когда запускаю симуляцию по шагам, то в подпрограммы, расположенные в первом файле вход происходит и можно посмотреть что делается в них по шагам. А вот в подпрограммы, расположенные во втором файле вход не происходит, как будто подается команда на выполнения шага без захода в подпрограмму. Хидеры в главном файле объявлены. Что можно сделать, или это глюк такой у WINAVR? WINAVR у меня 20060421, AVRStudio 4.13, система XP.
Go to the top of the page
 
+Quote Post
TechMike
сообщение Jan 27 2009, 08:17
Сообщение #2


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

Группа: Свой
Сообщений: 130
Регистрация: 30-07-08
Из: Moscow
Пользователь №: 39 302



Цитата(011119xx @ Jan 27 2009, 09:51) *
Честно говоря такие вопросы задавать стыдно, но все же может ответ на поверхности. Работаю в WINAVR из AVRStudio. Например есть 3 файла исходников на Си. Один главный в котором функция main и 2 с подпрограммами. Из главного вызываются подпрограммы, описанные в 2 других файлах. Так вот когда запускаю симуляцию по шагам, то в подпрограммы, расположенные в первом файле вход происходит и можно посмотреть что делается в них по шагам. А вот в подпрограммы, расположенные во втором файле вход не происходит, как будто подается команда на выполнения шага без захода в подпрограмму. Хидеры в главном файле объявлены. Что можно сделать, или это глюк такой у WINAVR? WINAVR у меня 20060421, AVRStudio 4.13, система XP.


Makefile покажите. Было такое при включенной оптимизации в значение 3.
Go to the top of the page
 
+Quote Post
011119xx
сообщение Jan 27 2009, 08:54
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Make файл

###############################################################################
# Makefile for the project MP3_Player_2
###############################################################################

## General Flags
PROJECT = MP3_Player_2
MCU = atmega128
TARGET = MP3_Player_2.elf
CC = avr-gcc.exe

## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)

## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2

## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS += -Wl,-Map=MP3_Player_2.map


## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom

HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings


## Objects that must be built in order to link
OBJECTS = MP3_Player_2.o fat.o glcd.o id3.o mmc.o playlist.o skin.o vs1011.o

## Objects explicitly added by the user
LINKONLYOBJECTS =

## Build
all: $(TARGET) MP3_Player_2.hex MP3_Player_2.eep MP3_Player_2.lss size

## Compile
MP3_Player_2.o: ../MP3_Player_2.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

fat.o: ../fat.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

glcd.o: ../glcd.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

id3.o: ../id3.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

mmc.o: ../mmc.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

playlist.o: ../playlist.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

skin.o: ../skin.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

vs1011.o: ../vs1011.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

##Link
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)

%.hex: $(TARGET)
avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@

%.eep: $(TARGET)
-avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0

%.lss: $(TARGET)
avr-objdump -h -S $< > $@

size: ${TARGET}
@echo
@avr-size -C --mcu=${MCU} ${TARGET}

## Clean target
.PHONY: clean
clean:
-rm -rf $(OBJECTS) MP3_Player_2.elf dep/* MP3_Player_2.hex MP3_Player_2.eep MP3_Player_2.lss MP3_Player_2.map


## Other dependencies
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)

Сообщение отредактировал 011119xx - Jan 27 2009, 08:58
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 27 2009, 09:12
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Пользуйтесь окном дизасемблера, хоть это и неудобно.

Причина в том, что функции, просмотреть которые нельзя, просто проинлайнены, ввиду того, что вызываются небольшое число раз. Можете, конечно, запретить инлайнить на время отладки атрибутом или в ком строке.
Go to the top of the page
 
+Quote Post
011119xx
сообщение Jan 27 2009, 09:31
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Как запретить инлайнить на время отладки атрибутом или в ком строке.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 27 2009, 09:39
Сообщение #6


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

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



Читайте об аттрибутах в:
C:/WinAVR/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Attributes.html
Код
extern void foobar (void) __attribute__((noinline));


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
011119xx
сообщение Jan 27 2009, 10:21
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Это не помогло.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 27 2009, 10:40
Сообщение #8


Гуру
******

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



Цитата(011119xx @ Jan 27 2009, 12:21) *
Это не помогло.
А в листинг вы смотрели? Проблема действительно во встраивании? Если да, то куда вы применяли атрибут? Сделайте и выложите сюда минимальный проект из одного main() и двух функций a() и b() в разных файлах, на котором эффект наблюдается. Только весь проект, в виде архива.


--------------------
На любой вопрос даю любой ответ
"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
011119xx
сообщение Jan 27 2009, 11:24
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Отправить файл не получается. Но тем не менее, на маленьком проекте все работает и без атрибутов.
С большим проектом тоже разобрался. Возможно глючит WINAVR периодически.

Сообщение отредактировал 011119xx - Jan 27 2009, 12:03
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 27 2009, 15:15
Сообщение #10


Гуру
******

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



Цитата(011119xx @ Jan 27 2009, 13:24) *
Возможно глючит WINAVR периодически.
Даю 99.9%, что WinAVR в вашем случае не глючит даже периодически, а виноват недостаток знаний. Приведите отрывок исходника и листинга, где он "сглючил", будем разбираться. Пока нет доказательства в виде листинга вероятность источника глюков примерно такова: 99% - кривые руки и 1% - положение звезд на небе. По поводу последней цифры агрументация примерно как у вас: "возможно".


--------------------
На любой вопрос даю любой ответ
"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
ARV
сообщение Jan 27 2009, 17:41
Сообщение #11


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

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



несколько раз натыкался на подобное, когда над одним и тем же комплектов исходников работал из разных сред - AVR Studio и Eclipse. Студия по умолчанию делает несколько упрощенный make-файл и бывает так, что не компилируя прилинковывает объектники, ранее сгенерированные без отладочной информации. т.е. В этом случае заход в функции, о которых нет отладочной инфы, не получается...

хотя судя по первому посту, это не та ситуация...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
011119xx
сообщение Jan 28 2009, 03:13
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Цитата(Сергей Борщ @ Jan 27 2009, 20:15) *
Даю 99.9%, что WinAVR в вашем случае не глючит даже периодически, а виноват недостаток знаний. Приведите отрывок исходника и листинга, где он "сглючил", будем разбираться. Пока нет доказательства в виде листинга вероятность источника глюков примерно такова: 99% - кривые руки и 1% - положение звезд на небе. По поводу последней цифры агрументация примерно как у вас: "возможно".

Руки как раз не такие уж и кривые. Проблема была решена так: был создан новый проект и все файлы исходников были созданы заново, а их исходные тексты скопированы из "условно глючных". Все заработало. Замечена еще одна странность: после изменения текста в каком-либо файле и последующем его сохранении в папке с проектом появляется некий файл имя которого начинается с имени сохраняемого файла, далее в имени идут цифры, а его расширение "TMP". Чтобы это значило? Причем потом этот файл нельзя удалить даже после закрытия AVR Studio. Есть подозрения что проблема с операционкой.
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Jan 28 2009, 07:17
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(011119xx @ Jan 28 2009, 06:13) *
появляется некий файл имя которого начинается с имени сохраняемого файла, далее в имени идут цифры, а его расширение "TMP". Чтобы это значило? Причем потом этот файл нельзя удалить даже после закрытия AVR Studio. Есть подозрения что проблема с операционкой.

Есть подозрения что проблема с вирусом. Который плодит тмп-шки, не давая их удалять. Проверьте машину...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 28 2009, 09:16
Сообщение #14


Гуру
******

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



Цитата(011119xx @ Jan 28 2009, 05:13) *
их исходные тексты скопированы из "условно глючных".
"Казалось бы, при чем здесь Лужков?" Т.е. при чем тут компилятор? Вы нашли что же именно в этих "условно глючных" файлах приводит к сбою и не передается копировальным путем? Причина так и не установлена, но свалить вину на компилятор как бы за между прочим - нормальное дело.


--------------------
На любой вопрос даю любой ответ
"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
IgorKossak
сообщение Jan 28 2009, 09:40
Сообщение #15


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(011119xx @ Jan 28 2009, 05:13) *
...Проблема была решена так: был создан новый проект и все файлы исходников были созданы заново, а их исходные тексты скопированы из "условно глючных"....

На мой взгляд было бы вполне достаточно просто пересоздать проект, а не морочиться с копированием текстов. ARV об этом намекал, хотя и сделал неверный вывод.
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 - 14:07
Рейтинг@Mail.ru


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