Перейти к содержанию
    

Глупые строки вида

lds r24, 0x013A

lds r25, 0x013B

mov r18, r24

mov r19, r25

- остались.

 

Исходники компилятора находятся здесь: http://gcc.gnu.org/. Сделать компилятор менее глупым в ваших силах.

 

В чем отличие и кому нужны 32 байта - так и не понял.

 

На этом форуме было несколько рекомендаций как заставить avr-gcc 4.3 гененрировать более компактный код, поищите. (--param inline-call-cost, атрибут OS_main...)

 

Анатолий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Исходники компилятора находятся здесь: http://gcc.gnu.org/. Сделать компилятор менее глупым в ваших силах.

А поточнее можно ссылочку? Может и правда стоит попробовать... Когда-то давно с энтузиазмом дорабатывал компилятор Small-C для процессора 8080, он у меня стал полностью соответствовать стандарту, не понимал только элипсисы (...) Там даже оптимизатор был неслабый. Прада, он был pure-C...

На этом форуме было несколько рекомендаций как заставить avr-gcc 4.3 гененрировать более компактный код, поищите. (--param inline-call-cost, атрибут OS_main...)

param inline-call-cost есть, а OS_main - это что? Надо сказать, документация у WinAVR весьма неудачно сделана, все разбросано по каким-то закоулкам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо сказать, документация у WinAVR весьма неудачно сделана, все разбросано по каким-то закоулкам.

А мне наоборот, очень понравилась, хотя бы тем, что она вообще есть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А мне наоборот, очень понравилась, хотя бы тем, что она вообще есть

c WinAvr идет документация по avr-libc, а остальную документацию нужно искать, как сказали выше, на http://gcc.gnu.org и на http://sources.redhat.com/binutils/

Изменено пользователем kaf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну уж не знаю, что тогда считать документацией...

Щас специально глянул - в папке WinAVR лежит папочка DOC (32 метра) - это чё - не документация?

post-33646-1216385595_thumb.jpg

ну вы ребята зажрались...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а OS_main - это что?

 

This patch add "OS_main" and 'OS_task' attributes in GCC .... Function with 
"OS_main" and 'OS_task' attributes do not save any "call-saved" registers.

1. "OS_main" attribute  used when there IS guarantee that interrupts are 
disabled at that time when function is called. For example "main" function in 
avr-libc. If this function has local variables that a prologue will look so:
  in r28, 0x3d; 61
  in r29, 0x3e; 62
  sbiw r28, 0x08; 8
  out 0x3e, r29; 62
  out 0x3d, r28; 61

No save/clear/restore "I" flag.

2. "OS_task" attribute  used when there is NO guarantee that interrupts are 
disabled at that time when function is called. For example task functions 
multi-threading operating systems. In this case save/clear/restore "I" flag is 
need for changing SP register. Prologue (if this function has local variables) 
will look so:

  in r28, 0x3d; 61
  in r29, 0x3e; 62
  sbiw r28, 0x08; 8
  in r0, 0x3f; 63
  cli
  out 0x3e, r29; 62
  out 0x3f, r0; 63
  out 0x3d, r28; 61

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня вот такой вопрос. поставил тут сегодня AVR Studio v4.14 build 589 затем установил WinAVR-20071221.

Далее создаю новый проект в AVR GCC на микроконтроллере ATmega16.

Далее нажимаю компиляцию и приехали называется.

При компиляции выдаётся два сообщения

 

Build started 30.7.2008 at 14:30:11
make: Makefile: No such file or directory
make: *** No rule to make target `Makefile'.  Stop.
Build failed with 2 errors and 0 warnings...

 

Я как понимаю не может создать Mafefile только вот почему.

Люди добрые помогите обойти проблему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мало информации: как создаете проект, какими средствами? Если без средств студии, то одни проблемы (рабочая директория и директория запуска make, корректность самого makefile и др). Со студией не работал, она сама что-то плодит (не понравилось), надо разбираться что за файлы наплодила и какие в них настройки.

Возможно, студиа не знает об установленном winavr.

Сначало надо установить winavr, а затем студию. Она сама подцепит winavr.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сначало надо установить winavr, а затем студию. Она сама подцепит winavr.

что-то сомневаюсь. Надёжнее ручками подцепить. Да и собственно, цеплять-то особо нечего. Разве что указать пути к системным хедерам и библиотекам. Скорее всего надо разбираться с настройками проекта в студии. Здесь помочь ничем не могу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самое интересное что дома попробывал сейчас немного по другому.

Установил в начале WinAVR-20080610 затем устанвил AVR Studio 4.14 build589

и всё заработало...хм интресно...завтра на работе попробую такую же комбинцию. :)

 

В общем тут немного поэксперементировал и пришёл к выводу.

Если создаёшь проект то в пути до проекта не ДОЛЖНО БЫТЬ РУССКИХ БУКВ

Например (C:\Documents and Settings\Admin\Мои документы\test)

Иначе Makefail не создастся...Для его создание необходимо исключить русские символы в пути до проекта....

Изменено пользователем Антон Малыгин

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самое интересное что дома попробывал сейчас немного по другому.

Установил в начале WinAVR-20080610 затем устанвил AVR Studio 4.14 build589

и всё заработало...хм интресно...завтра на работе попробую такую же комбинцию. :)

Наверно студия при установки смотрит, установлен ли WinAVR, и если да - то она готова для работы с ним. В противном случае начинаются проблемы.

В общем тут немного поэксперементировал и пришёл к выводу.

Если создаёшь проект то в пути до проекта не ДОЛЖНО БЫТЬ РУССКИХ БУКВ

Например (C:\Documents and Settings\Admin\Мои документы\test)

Иначе Makefail не создастся...Для его создание необходимо исключить русские символы в пути до проекта....

Это верно. При разработке программ под что угодно, в путях не должно быть русских имен. Я даже имена каталогов и файлов стараюсь не делать длинее 8 символов. Хотя здесь проблем не возникало никогда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверно студия при установки смотрит, установлен ли WinAVR, и если да - то она готова для работы с ним. В противном случае начинаются проблемы.

Если сама не нешла, то достаточно прописать в плагине пути до make и gcc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если создаёшь проект то в пути до проекта не ДОЛЖНО БЫТЬ РУССКИХ БУКВ

 

Я даже больше скажу : если Вы "случайно" сделали лог. диск командой типа SUBST z: c:\design, и расположили там проект, то вся веселая АВР-студия висла (наверное и сейчас виснет) намертво, и развесить ее можно было только удалив диск z:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 MrYuran и haker_fox

как я понимаю, студия именно смотрит наличие установленного winavr и цепляется к нему. Полностью согласен,что русские буквы и пробелы в именах путь к потенциальным (и не только) несовместимости и ошибкам.

Надежнее конечно руками все прописать, а еще надежнее самому сделать makefile. Я сам студио не использую, не нравится, когда за меня makefile автоматически делается и из кусков к тому же. У меня eclipse+winavr. Для симулирования иногда студия запускается на проект, собранный make.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сам я пользуюсь WinAVR+AVRStudio+иногда Proteus. Но уже посматриваю на что-нибудь, где все в одном флаконе. И является именно IDE, а не набором разных программ, написанных разными авторами. Если кто-нибудь бывал на собрании кооператива(или смотрел фильм "Гараж"), то мы понимаем друг-друга. Пусть даже прийдется искать к этому вечно "хрюки". У меня установлен WinAVR-20060421, и не потому что я не в курсе выхода новых версий-просто я привык к "особенностям" этой. Плюс в более новых версиях в Протеусе не видно переменных, расположенных в Static RAM с выводом некорректного расположения адреса этой памяти. На это накладываются чудеса версий AVRStudio(в каком то сочетании WinAVR и AVRStudio попытка отладки Си кода в студии приводила к 100% вылету последней). Новая версия студии прекрасно отлаживает extcoff и виснет на ELF . RM.exe в указанной мною версии 20060421 (и еще какаято утилита) находятся в другой директории, какие-то файлы дублируются. Затолкав в протеус не вижу фрагмента кода, хотя в LSS файле все есть. Все это отнимает время. Человек должен ездить на машине, а не копаться в ней,это только у нас принято. Не скажу, что это совсем плохо, дает знания, но если для написания программы нужно начать с ремонта блока питания компа-это как-то не совсем. Я не против данного продукта, тем более в бесплатности есть большой плюс для написания коммерческих вещей.

Для Антон Малыгин: возможно у вас что-то с путями доступа к файлам проекта или несоответствие названий. Попробуйте создать makefile вручную или с помощью утилиты из комплекта WinAVR. В студии определите Use external makefile, при составлении в ручную не забудьте все файлы проекта с расш "С" указать(вариант, созданный утилитой makefile):

# List C source files here. (C dependencies are automatically generated.)

SRC = $(TARGET).c C1820Timer.c WireDriver.c

Удачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...