| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
WinAver C, указатель стека
20.03.2011, 19:27
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: WinAver C, указатель стека
Сообщение от svd71
|
|
есть. вложил
|
Ну и не задана там мега8. Что и не удивительно.
Однако видимо есть расклад памяти по умолчанию.
|
|
|
|
20.03.2011, 19:33
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: WinAver C, указатель стека
Поменяйте
|
Код:
|
#---------------- Linker Options ----------------
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
#LDFLAGS = -gstabs
#LDFLAGS += -Wl,-gc-sections,--debug-stubs,-Map=$(TARGET).map,--cref
.... |
На
|
Код:
|
#---------------- Linker Options ----------------
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -mmcu=$(MCU)
#LDFLAGS += -gstabs
#LDFLAGS += -Wl,-gc-sections,--debug-stubs,-Map=$(TARGET).map,--cref
... |
Последний раз редактировалось kison; 21.03.2011 в 04:37.
|
|
|
|
20.03.2011, 19:46
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: WinAver C, указатель стека
Хотя может и не поможет. Это чуть ли не самый геморный мейкфайл, что я видел.
Дайте строку из лога сборки которая кончается main.elf
|
|
|
|
20.03.2011, 21:06
|
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: WinAver C, указатель стека
ну как же не стоит:
|
Цитата:
|
# MCU name
MCU = atmega8
...
CFLAGS = -g3 -g$(DEBUG) -mmcu=$(MCU)
|
весь на экран не влез, но модули компилятся друг за другом. то есть строка вызова компилятора повторяется. А вот финальная компиляция файла с main() тут есть.
|
Цитата:
|
avr-gcc -g3 -gdwarf-2 -mmcu=atmega8 -DF_CPU=1000000UL -O1 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunction-sections -Wall -Wextr
a -Wstrict-prototypes -Wundef -Wsign-compare -Wa,-adhlns=./cmd/exchange.lst -std=gnu99 -O1 -c cmd/exchange.c
In file included from cmd/exchange.c:25:
cmd/../uart/uart.h:2:1: warning: "/*" within comment
rm -f dimmer.elf
rm -f dimmer.cof
avr-gcc -Wl,-gc-sections,--defsym=__stack=0x8003ff,-Map=main.map,--cref -lm -o dimmer.elf rfm12_cmd.o dimmer.o spi.o uart.o cbdlight.o rtc.o cmd.o rfm12.
o utils.o exchange.o
#avr-objcopy --debugging -O ihex dimmer.elf dimmer.hex
avr-size dimmer.elf
text data bss dec hex filename
2734 48 86 2868 b34 dimmer.elf
avr-objcopy --debugging -O coff-ext-avr dimmer.o dimmer.cof
avr-objcopy: dimmer.o: no recognized debugging information
avr-objdump -h -S -s -z dimmer.elf›dimmer.lss
|
__________________
|
|
|
|
20.03.2011, 21:06
|
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: WinAver C, указатель стека
Ладно. спасибо. буду делать в коде.
хотя может что-нибудь и найду, все равно на такую мелочь выходной убил
__________________
|
|
|
|
21.03.2011, 04:39
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: WinAver C, указатель стека
Сообщение от svd71
|
|
ну как же не стоит:
|
Это CFLAGS - опции компиляции. А нужны опции линкера.
Вот строка с опциями линковки -
avr-gcc -Wl,-gc-sections,--defsym=__stack=0x8003ff,-Map=main.map,--cref -lm -o dimmer.elf
Тут тоже должна была быть задана мега 8 - -mmcu=atmega8, но нету.
Попробуйте все же изменить мейк. Есть способ и попроще - создайте проект в студии. Там выберите кристалл, установите все опции. Добавьте в проект все Ваши файлы. И все соберется без правки выходного HEX-а Дальше можно из студии и мейкфайл экспортировать.
ЗЫ. Это похоже все же не тот мейкфайл которым Вы собираете. В приложенном тут TARGET = main, так что должно быть не dimmer.elf а main.elf.
|
|
|
|
21.03.2011, 13:42
|
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: WinAver C, указатель стека
1. Вчера вечером вычитал в описании по winavr про --defsym=__stack. Попробовал, пошло. Спасибо за помощь.
2. Вроде в описании опций линковки не стоит что либо о mcu. Да и в студии те выставляется.
3. У меня в makefile собирается несколько проектов - как создать несколько makefile в одном каталоге, я не знаю. именно этот проект называется dimmer, а не main. Да и хранить все в одном файле намного удобней - в этом юниксоиды рулят. Я не особый знаток gcc и winavr в часности, поэтому со временем makefile певращается вкучу правок, внесенных в разное время.
__________________
|
|
|
|
21.03.2011, 15:22
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: WinAver C, указатель стека
Да, я потом повнимательнее посмотрел, там $(CC) $(LDFLAGS) -o dimmer.elf
Это результат беспорядочных правок  Обычно результат сборки и имя основной цели -одно и то же. Тут dimmer - всего лишь одна из возможных целей.
А тип кристалла линкеру передавать все же надо. Он по нему скрипт выбирает для линковки. Можно правда просто указать свой скрипт, а не указывать кристалл. В скрипте кстати есть регионы памяти и стек настраивается по информации взятой оттуда. Если не задать его принудительно -minit_stack=
Хранить все в одном файле удобно, когда там все по полочкам разложено. Еще несколько изменений и Вы совсем в своем мейкфайле заблудитесь.
|
|
|
|
05.07.2011, 15:39
|
|
|
Гражданин KAZUS.RUN
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
|
Re: WinAver C, указатель стека
Сообщение от svd71
|
|
1. Вчера вечером вычитал в описании по winavr про --defsym=__stack. Попробовал, пошло. Спасибо за помощь.
|
А можно поподробнее про флажки и стек в Винавр , а то чтото тоже не совсем разберусь с этим
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Указатель поворотов на PIC
|
Nash |
Микроконтроллеры, АЦП, память и т.д |
52 |
20.04.2010 16:24 |
Часовой пояс GMT +4, время: 08:11.
|
|