|
|
  |
WinAVR-20100110, Пишем отзывы сюда |
|
|
|
Jan 16 2010, 10:30
|
Местный
  
Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205

|
Цитата(_Pasha @ Jan 16 2010, 02:18)  Слито вместе avr & avr32. Прикольно. 275 метров На официальном сайте на sourceforge версия занимает 29.9 MB
|
|
|
|
|
Jan 16 2010, 11:26
|

Чайник, 1 литр
   
Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168

|
Цитата 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 Цитата(kurtis @ Jan 16 2010, 13:30)  На официальном сайте на sourceforge версия занимает 29.9 MB Размер указанный _Pasha - это установленный столько занимает (278 МБ (291 557 454 байт)). Цитата(Petka @ Jan 16 2010, 13:31)  Напишите хотя-бы как изменился размер собранных бинарников? (было/стало). Device: atmega128 20081205: 87924 bytes (67.1% Full); Новый, 20100110: 87710 bytes (66.9% Full).
|
|
|
|
|
Jan 16 2010, 15:00
|

Чайник, 1 литр
   
Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168

|
Цитата(ARV @ Jan 16 2010, 17:32)  ...размер генерируемого бинарника (при полностью одинаковых исходных параметрах) увеличился... А вы генерируемый код не сравнивали, за счет чего конкретно увеличение? Я рабочие проекты попересобирал (только Си, ++ нету), и в итоге везде уменьшение размера кода: стабильно от 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 Сравниваю генерируемый код, ибо интересно откуда...  -- Просмотрел по-быстрому. Чудес нету  Функция с __attribute__((const)) static inline перестала инлайниться - функция из 12 команд, без пролога\эпилога; вероятно, с форсированием инлайна не прав я -- надо проверить в железе; Еще одна просто static тоже перестала инлайниться - тут уже решение компилятора в обоих случаях, и мне пофиг; Кое-где jmp заменен на rjmp, и небольшие оптимизации по использованию регистров (Z -> X), как следствие, возможно, изменений с функциями...
Сообщение отредактировал SysRq - Jan 16 2010, 15:39
|
|
|
|
|
Jan 16 2010, 22:36
|

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

|
Цитата(ARV @ Jan 16 2010, 22:30)  а как вы поступаете: ставите сразу несколько копий 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= и все собирается нужной версией. Цитата(_Pasha @ Jan 16 2010, 02:18)  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 с ней же. Исправил. Написаному выше теперь - верить.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 17 2010, 05:55
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(ARV @ Jan 17 2010, 00:30)  а как вы поступаете: ставите сразу несколько копий WinAVR? как можно с удобством тестировать разные сборки компилятора на одинаковых проектах? как быть с прописыванием путей? неудобно же... или я в танке? Я на флешке держу все используемые ГЦЦ - от MinGW до SDCC +несколько версий winAVR и yagarto. Выбор через makefile. Откатиться на предыдущую версию - одним # в начале строки выбора. Однако, 2009 стабильненький был. Ни разу не огорчил. Цитата(Сергей Борщ @ Jan 17 2010, 02:36)  Уже давно сделал себе рабочий комплект утилит непосредственно с их родины - проекта 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 немного подрихтовали-таки. Насчет работоспособности проекта - тоже пока не проверял.
|
|
|
|
|
Jan 17 2010, 08:25
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(ARV @ Jan 16 2010, 22:30)  а как вы поступаете: ставите сразу несколько копий 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, то при смене цели линка все проектіначнут копилироваться другой версией.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|