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

 
 
9 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> WinAVR-20100110, Пишем отзывы сюда
_Pasha
сообщение Jan 16 2010, 00:18
Сообщение #1


;
******

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



Собсно сабж.
Попробовал пока ничего плохого не могу сказать. За выходные разберемся
Слито вместе avr & avr32. Прикольно. 275 метров

AVR-gcc 4.3.3
AVR32-gcc 4.3.2
Make 3.81 - наконец-то ! Или он уже давно там... не помню, ну да ладно.
Go to the top of the page
 
+Quote Post
kurtis
сообщение Jan 16 2010, 10:30
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Цитата(_Pasha @ Jan 16 2010, 02:18) *
Слито вместе avr & avr32. Прикольно. 275 метров

На официальном сайте на sourceforge версия занимает 29.9 MB
Go to the top of the page
 
+Quote Post
Petka
сообщение Jan 16 2010, 10:31
Сообщение #3


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(_Pasha @ Jan 16 2010, 03:18) *
...
AVR-gcc 4.3.3
AVR32-gcc 4.3.2
...

А ваши отзывы?
Напишите хотя-бы как изменился размер собранных бинарников? (было/стало).
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jan 16 2010, 11:26
Сообщение #4


Чайник, 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).
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 16 2010, 11:28
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SysRq @ Jan 16 2010, 14:26) *
20081205: 87924 bytes (67.1% Full);
Новый, 20100110: 87710 bytes (66.9% Full).

А оптимизация-то какая при этом?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jan 16 2010, 11:38
Сообщение #6


Чайник, 1 литр
****

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



Цитата(zltigo @ Jan 16 2010, 14:28) *
А оптимизация-то какая при этом?
Os.
Go to the top of the page
 
+Quote Post
ARV
сообщение Jan 16 2010, 14:32
Сообщение #7


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

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



я тоже скачал официальный релиз и, как обычно (за последние 4 релиза), обратил внимание, что размер генерируемого бинарника (при полностью одинаковых исходных параметрах) увеличился... не на много, но все-таки возрос. я проверял на тестовом проекте - получил +10 байт (но и сам проект едва 2 килобайта перешагнул).

выходит, с каждым релизом все меньше и меньше шансов использовать всякие "недомерки" attiny13, attiny2xxx и т.п.... жалко...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jan 16 2010, 15:00
Сообщение #8


Чайник, 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

Сравниваю генерируемый код, ибо интересно откуда... cranky.gif

--

Просмотрел по-быстрому. Чудес нету sad.gif
Функция с __attribute__((const)) static inline перестала инлайниться - функция из 12 команд, без пролога\эпилога; вероятно, с форсированием инлайна не прав я -- надо проверить в железе;
Еще одна просто static тоже перестала инлайниться - тут уже решение компилятора в обоих случаях, и мне пофиг;
Кое-где jmp заменен на rjmp, и небольшие оптимизации по использованию регистров (Z -> X), как следствие, возможно, изменений с функциями...

Сообщение отредактировал SysRq - Jan 16 2010, 15:39
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 16 2010, 19:12
Сообщение #9


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

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



Цитата(_Pasha @ Jan 16 2010, 03:18) *
Собсно сабж.

http://www.avrfreaks.net/index.php?name=PN...p;postorder=asc


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


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

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



а как вы поступаете: ставите сразу несколько копий WinAVR? как можно с удобством тестировать разные сборки компилятора на одинаковых проектах? как быть с прописыванием путей? неудобно же... или я в танке?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 16 2010, 22:36
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 17 2010, 05:55
Сообщение #12


;
******

Группа: Участник
Сообщений: 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 немного подрихтовали-таки. Насчет работоспособности проекта - тоже пока не проверял.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jan 17 2010, 08:25
Сообщение #13


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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, то при смене цели линка все проектіначнут копилироваться другой версией.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 17 2010, 09:19
Сообщение #14


Гуру
******

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



Цитата(_Pasha @ Jan 17 2010, 07:55) *
Неприятно только, что winavr кидает свои binutils в пути, потом приходится вычищать.
А я распаковываю инсталятор при помощи 7Zip и вытягиваю только нужные папки. И быстрее, и реестр не засоряется, и легко сносится удалением папки. Такой вот portable вариант.


--------------------
На любой вопрос даю любой ответ
"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
Petka
сообщение Jan 17 2010, 10:00
Сообщение #15


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Сергей Борщ @ Jan 17 2010, 12:19) *
А я распаковываю инсталятор при помощи 7Zip и вытягиваю только нужные папки. И быстрее, и реестр не засоряется, и легко сносится удалением папки. Такой вот portable вариант.

Поступаю аналогично. Только использую батник, который создаёт консоль, с прописанными нужными путями. Из этой консоли можно запускать хоть make хоть eclipse. Давно собирался выложить на суд общественности своё решение по объединению всех GNU/OpenSource утилит и программ для embedded.
Go to the top of the page
 
+Quote Post

9 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:48
Рейтинг@Mail.ru


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