_Pasha 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба Собсно сабж. Попробовал пока ничего плохого не могу сказать. За выходные разберемся Слито вместе avr & avr32. Прикольно. 275 метров AVR-gcc 4.3.3 AVR32-gcc 4.3.2 Make 3.81 - наконец-то ! Или он уже давно там... не помню, ну да ладно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kurtis 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба Слито вместе avr & avr32. Прикольно. 275 метров На официальном сайте на sourceforge версия занимает 29.9 MB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба ... AVR-gcc 4.3.3 AVR32-gcc 4.3.2 ... А ваши отзывы? Напишите хотя-бы как изменился размер собранных бинарников? (было/стало). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба AVR32 GNU toolchain Splint 3.1.2 Splint is a tool for statically checking C programs for security vulnerabilities and programming mistakes. Splint does many of the traditional lint checks. More powerful checks are made possible by additional information given in source code annotations. New Device Support Component Version Upgrades На официальном сайте на sourceforge версия занимает 29.9 MBРазмер указанный _Pasha - это установленный столько занимает (278 МБ (291 557 454 байт)). Напишите хотя-бы как изменился размер собранных бинарников? (было/стало).Device: atmega128 20081205: 87924 bytes (67.1% Full); Новый, 20100110: 87710 bytes (66.9% Full). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба 20081205: 87924 bytes (67.1% Full); Новый, 20100110: 87710 bytes (66.9% Full). А оптимизация-то какая при этом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба А оптимизация-то какая при этом?Os. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба я тоже скачал официальный релиз и, как обычно (за последние 4 релиза), обратил внимание, что размер генерируемого бинарника (при полностью одинаковых исходных параметрах) увеличился... не на много, но все-таки возрос. я проверял на тестовом проекте - получил +10 байт (но и сам проект едва 2 килобайта перешагнул). выходит, с каждым релизом все меньше и меньше шансов использовать всякие "недомерки" attiny13, attiny2xxx и т.п.... жалко... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 16 января, 2010 Опубликовано 16 января, 2010 (изменено) · Жалоба ...размер генерируемого бинарника (при полностью одинаковых исходных параметрах) увеличился...А вы генерируемый код не сравнивали, за счет чего конкретно увеличение? Я рабочие проекты попересобирал (только Си, ++ нету), и в итоге везде уменьшение размера кода: стабильно от 2 байт и больше (2 байта - разница в стартапе). Везде оптимизация по размеру, и CFLAGS += -ffunction-sections LDFLAGS += -Wl,--gc-sections LDFLAGS += -Wl,--relax Выше я писал 214 байт высвободилось. Сейчас еще один пересобрал - 270 байт освободилось! D:\Projects_UPD\SA_application>avr-size _main.elf text data bss dec hex filename 5294 4 1136 6434 1922 _main.elf D:\Projects_UPD\SA_application>avr-size main.elf text data bss dec hex filename 5024 4 1136 6164 1814 main.elf Сравниваю генерируемый код, ибо интересно откуда... :cranky: -- Просмотрел по-быстрому. Чудес нету :( Функция с __attribute__((const)) static inline перестала инлайниться - функция из 12 команд, без пролога\эпилога; вероятно, с форсированием инлайна не прав я -- надо проверить в железе; Еще одна просто static тоже перестала инлайниться - тут уже решение компилятора в обоих случаях, и мне пофиг; Кое-где jmp заменен на rjmp, и небольшие оптимизации по использованию регистров (Z -> X), как следствие, возможно, изменений с функциями... Изменено 16 января, 2010 пользователем SysRq Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба Собсно сабж. http://www.avrfreaks.net/index.php?name=PN...p;postorder=asc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба а как вы поступаете: ставите сразу несколько копий WinAVR? как можно с удобством тестировать разные сборки компилятора на одинаковых проектах? как быть с прописыванием путей? неудобно же... или я в танке? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 16 января, 2010 Опубликовано 16 января, 2010 · Жалоба а как вы поступаете: ставите сразу несколько копий WinAVR? как можно с удобством тестировать разные сборки компилятора на одинаковых проектах? как быть с прописыванием путей?позаимствовано у ReAl: в makefile прописываем:#TOOLSET = C:/WinAVR/20090313 TOOLSET = C:/WinAVR/20100110 TARGET = avr- CC = $(TARGET)gcc OBJCOPY = $(TARGET)objcopy OBJDUMP = $(TARGET)objdump SIZE = $(TARGET)size # if TOOLSET variable set, # add TOOLSET bin directory first in PATH ifneq ($(strip $(TOOLSET)),) ifeq (,$(findstring;,$(PATH))) PATH := $(subst :,,/$(TOOLSET)/bin):$(PATH) else PATH := $(subst /,\,$(TOOLSET)/bin);$(PATH) endif export PATH endif Дальше раскомментируем нужную строчку TOOLSET= и все собирается нужной версией. Make 3.81 - наконец-то ! Или он уже давно там... не помню, ну да ладно.Уже давно. Но с древней глючной msys-1.0.dll. На днях автор закрыл мою очередную (датированную 2008-10-02) просьбу в баг-трекере заменить эту dll на более свежую с резолюцией won't fix. Уже давно сделал себе рабочий комплект утилит непосредственно с их родины - проекта msys и утилиты из WinAVRa идут в сад сразу. По качеству кода - по сравнению с 20090319 на двух проектах код на одном вырос, на втором существенно сократился. Размеры проектов - 1836->1854 (загрузчик) и 6042->5816 (приложение, мега8, С++, виртуальные функции). Работоспособность не проверял. Опции оптимизации для последнего (подбирались по минимальному коду для 20090313): CFLAGS += -ffunction-sections CFLAGS += -fdata-sections CFLAGS += -mcall-prologues #CFLAGS += -fno-ivopts CFLAGS += -fno-tree-scev-cprop CFLAGS += -fno-split-wide-types CFLAGS += -fno-inline-small-functions CFLAGS += --param inline-call-cost=0 #CFLAGS += -fno-reorder-blocks #CFLAGS += -fno-reorder-blocks-and-partition #CFLAGS += -fno-reorder-functions #CFLAGS += -fno-toplevel-reorder CFLAGS += -fno-move-loop-invariants #CFLAGS += -fno-unroll-loops #CFLAGS += -fno-unroll-all-loops #CFLAGS += --param max-unroll-times=0 Левое предупреждение "only initialized variables can be placed into program memory area" на плюсовых исходниках осталось. Баги 40112, 40013 остались. Судя по рассылке - много правили в avr-libc. Имеет смысл переходить. P.S. Заметил, что некорректно распаковал новую версию и сравнивал 20090313 с ней же. Исправил. Написаному выше теперь - верить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 17 января, 2010 Опубликовано 17 января, 2010 · Жалоба а как вы поступаете: ставите сразу несколько копий WinAVR? как можно с удобством тестировать разные сборки компилятора на одинаковых проектах? как быть с прописыванием путей? неудобно же... или я в танке? Я на флешке держу все используемые ГЦЦ - от MinGW до SDCC +несколько версий winAVR и yagarto. Выбор через makefile. Откатиться на предыдущую версию - одним # в начале строки выбора. Однако, 2009 стабильненький был. Ни разу не огорчил. Уже давно сделал себе рабочий комплект утилит непосредственно с их родины - проекта msys и утилиты из WinAVRa идут в сад сразу. То же самое. Неприятно только, что winavr кидает свои binutils в пути, потом приходится вычищать. Так. Пробую. Проект с параметрами из-под плагина студии avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -fu nsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -mcall-prologues -finline-limit=2 -MD -MP -MT WinAVR-2009 AVR Memory Usage ---------------- Device: atmega16 Program: 6300 bytes (38.5% Full) (.text + .data + .bootloader) Data: 75 bytes (7.3% Full) (.data + .bss + .noinit) EEPROM: 57 bytes (11.1% Full) (.eeprom WinAVR-2010 AVR Memory Usage ---------------- Device: atmega16 Program: 6238 bytes (38.1% Full) (.text + .data + .bootloader) Data: 75 bytes (7.3% Full) (.data + .bss + .noinit) EEPROM: 57 bytes (11.1% Full) (.eeprom) Вывод пока один - avr-libc немного подрихтовали-таки. Насчет работоспособности проекта - тоже пока не проверял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 17 января, 2010 Опубликовано 17 января, 2010 · Жалоба а как вы поступаете: ставите сразу несколько копий WinAVR? как можно с удобством тестировать разные сборки компилятора на одинаковых проектах? как быть с прописыванием путей?Однин из моих подходов озвучен выше. Правда, эта "поделка" подходит не всем, так как мои makefile есть не у всех, не входят в стандатную поставку WinAVR, а стандартный и доступный каждому Mfile такого не генерирует. Второй способ действует не попроектно, а валом на все, зато PATH не модифицируется на лету и всякие AVRstudio работают. И удобно для каких-то проверок прямо в командной строке набрать avr-gcc -Os -S foo.c. Используется возможность файловой системы NTFS создавать линки на каталоги (на файлы тоже может, но это другая история, позволяющая на несколкьо мегабайт сократить размер каталога WinAVR-XXXX путём замены копий файлов из WinAVR-XXXXXX\bin на линки к телам файлов из WinAVR-XXXXXX\avr\bin Впрочем, сейчас это не актуально) Ставим как и раньше толпу WinAVR-XXXX в соответствующие каталоги, но в PATH происываем C:\WinAVR\bin - как для установки одной версии в этот каталог. Но самого каталога нет. Теперь лезем сюда http://technet.microsoft.com/en-us/sysinte...s/bb896768.aspx и берём программу junction либо ставим FAR. Для работы с конкретной версией, например, WinAVR-20060421, говорим junction C:\WinAVR C:\WinAVR-20060421кстати, WinAVR-20060421 может стоять вообще в f:\avr\gcc\WinAVR-20060421, тогда говорим junction C:\WinAVR f:\avr\gcc\WinAVR-20060421 Либо в FAR становимся на каталог f:\avr\gcc\WinAVR-20060421, наимаем Alt-F6 и в строке ввода набираем C:\WinAVR (либо нажимем Ctrl-Down и выбираем из списка). Дополнительного места на диске C: это практически не займёт. Кажется, что-то такое есть и в TotalCommnder через плугин. FAR напротив такого каталога показывает не <Folder> а <Link>, по F8 стирает только линк. Windows explorer в W2000/XP никак не выделяет, более того, при попытке вытереть линк он трёт его и все файлы каталога, на который указывал линк! Левая рука вин не знает, что сделала правая. Теперь все программы, которые будут лезть в С:\WinAVR\ - будут попадать в указываемый линком каталог. Если в makefile ничего не указано, рассчитано на размещение компилятора по PATH, то при смене цели линка все проектіначнут копилироваться другой версией. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 17 января, 2010 Опубликовано 17 января, 2010 · Жалоба Неприятно только, что winavr кидает свои binutils в пути, потом приходится вычищать.А я распаковываю инсталятор при помощи 7Zip и вытягиваю только нужные папки. И быстрее, и реестр не засоряется, и легко сносится удалением папки. Такой вот portable вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 17 января, 2010 Опубликовано 17 января, 2010 · Жалоба А я распаковываю инсталятор при помощи 7Zip и вытягиваю только нужные папки. И быстрее, и реестр не засоряется, и легко сносится удалением папки. Такой вот portable вариант. Поступаю аналогично. Только использую батник, который создаёт консоль, с прописанными нужными путями. Из этой консоли можно запускать хоть make хоть eclipse. Давно собирался выложить на суд общественности своё решение по объединению всех GNU/OpenSource утилит и программ для embedded. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться