|
Вышел WinAVR 20080402...20080411, сыроват еще |
|
|
|
Apr 3 2008, 13:46
|

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

|
Вчера еще лежал 20080402-rc1, сегодня уже 20080402. из плюсов по сравнению с 20071221 - не выдает ошибочное предупреждение Цитата warning: only initialized variables can be placed into program memory area gcc версии 4.3.0. Выдает нелепые предупреждения-пожелания поставить скобки в выражениях типа X = Y << 2 + 5. просит отделить пробелом точку с запятой от пустого цикла: Код while(!ready()); //<- ругается while(!ready())<пробел>; //<- а так нет из минусов - начали переделывать eeprom.h, изменили порядок параметров у eeprom_write_block(), теперь порядок соответствует memcpy, memmove и т.д. Могли бы и название другое дать - теперь при смене версии приходится переписывать исходник или добавлять функцию-обертку с условной компиляцией. В файле встречаются ссылки на функции __eerd_block() и __eewr_block(), которых линкер не нашел. Соответственно проект не собрался, качество кода сравнить не могу. Описание eeprom.h убрано из документации avr-libc. Не нашел своих же ситемных заголовочных файлов - пришлось указать путь вручную через ключ -I (возможно криво встал - вечером проверю на домашнем компе). Вчера ставил дома rc2 - он заголовочники находил. make, sh и прочие оставлись теми же, что и в предыдущих версиях. Проблема, описанная в соседней ветке осталась. Убрали АДУ. Пока это все, что заметил.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 8 2008, 15:08
|

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

|
Цитата(Сергей Борщ @ Apr 3 2008, 16:46)  Вчера еще лежал 20080402-rc1, сегодня уже 20080402. Хм. Оба спрятали, выложили 20080407. Цитата(Сергей Борщ @ Apr 3 2008, 16:46)  из плюсов по сравнению с 20071221 - не выдает ошибочное предупреждение Таки выдает. На переменные с атрибутом PROGMEM и на PSTR(). На переменные, объявленные с PROGMEM через typedef (например, через типы введенные в avr/pgmspace.h) - не выдает. Цитата(Сергей Борщ @ Apr 3 2008, 16:46)  из минусов - начали переделывать eeprom.h, изменили порядок параметров у eeprom_write_block(), теперь порядок соответствует memcpy, memmove и т.д. Вернули назад. Снова совместимо с предыдущими версиями. Цитата(Сергей Борщ @ Apr 3 2008, 16:46)  В файле встречаются ссылки на функции __eerd_block() и __eewr_block(), которых линкер не нашел. Так и осталось. Цитата(Сергей Борщ @ Apr 3 2008, 16:46)  Соответственно проект не собрался, качество кода сравнить не могу. Закомментировал обращение к eeprom. Не смотрел еще, что они там улучшили, но статистика по нескольким проектам такая: Код 20070525 20071221 20080407 mega8 3486 3392 3142 mega8 5958 6070 6050 mega128 (AES loader) 2368 2402 2560 Первый проект писался без напряжения, второй - "утаптывался" чтобы влезть в доступную память, третий - портирован с ИАРа, тоже "утоптан" но не очень сильно. Цитата(Сергей Борщ @ Apr 3 2008, 16:46)  Не нашел своих же ситемных заголовочных файлов - пришлось указать путь вручную через ключ -I Осталось.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 8 2008, 15:46
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(Сергей Борщ @ Apr 8 2008, 18:08)  Закомментировал обращение к eeprom. Не смотрел еще, что они там улучшили, но статистика по нескольким проектам такая: Код 20070525 20071221 20080407 mega8 3486 3392 3142 mega8 5958 6070 6050 mega128 (AES loader) 2368 2402 2560 Первый проект писался без напряжения, второй - "утаптывался" чтобы влезть в доступную память, третий - портирован с ИАРа, тоже "утоптан" но не очень сильно. Пожалуйста протестируйте версию 20080407 с ключем "--param inline-call-cost=5" Анатолий
|
|
|
|
|
Apr 8 2008, 17:54
|

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

|
Цитата(aesok @ Apr 8 2008, 18:46)  Пожалуйста протестируйте версию 20080407 с ключем "--param inline-call-cost=5" Пожалуйста. Результат меня заинтересовал, я проверил все три проекта с этим параметром от 0 до 10: Код 0 3038 5812 2408 1 3038 5840 2408 2 3038 5878 2468 3 3128 5878 2538 4 3128 5918 2560 5 3128 5918 2560 6 3146 5966 2560 7 3146 6018 2560 8 3142 6018 2560 9 3142 6018 2560 10 3142 6018 2560 20 6116 20071221 на этот параметр не реагировал. Ключик возьму на заметку. А отрицательным его нельзя сделать?  И что делать с eeprom? P.S. странно - на домашнем компе системные заголовочные файлы компилятор нашел.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 8 2008, 18:13
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Сергей Борщ @ Apr 8 2008, 19:08)  Не смотрел еще, что они там улучшили, но статистика по нескольким проектам такая: Код 20070525 20071221 20080407 mega8 3486 3392 3142 mega8 5958 6070 6050 mega128 (AES loader) 2368 2402 2560 Первый проект писался без напряжения, второй - "утаптывался" чтобы влезть в доступную память, третий - портирован с ИАРа, тоже "утоптан" но не очень сильно. Сергей Борщ а не осталось ли у Вас до кучи 20060421 ? можете на нем попробовать ? Думаю переползать на чего-нить посвежее, но пока не определился на какую версию, был неудачный опыт попыток переползания на 200701xx, ну и я отложил это дело, но когда-то ведь придется...
|
|
|
|
|
Apr 8 2008, 20:43
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(Сергей Борщ @ Apr 8 2008, 20:54)  Пожалуйста. Результат меня заинтересовал, я проверил все три проекта с этим параметром от 0 до 10: Код 0 3038 5812 2408 1 3038 5840 2408 2 3038 5878 2468 3 3128 5878 2538 4 3128 5918 2560 5 3128 5918 2560 6 3146 5966 2560 7 3146 6018 2560 8 3142 6018 2560 ... Странно у меня минимум был при значениях 4..6, при больших и меньших размер кода увеличивался. Цитата И что делать с eeprom? Не слежу я за ним. Его уже второй раз полностью переписывают. Анатолий.
|
|
|
|
|
Apr 8 2008, 20:54
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(aesok @ Apr 9 2008, 00:43)  Его уже второй раз полностью переписывают. Анатолий. Интересно, а чтение/сравнение перед записью когда-нить есть шансы увидеть в библиотеке ? Все таки запись ради записи, ИМХО, выглядит ущербно, учитывая то что на реализацию этого нужны доли % производительности...
|
|
|
|
|
Apr 8 2008, 21:10
|

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

|
Цитата(singlskv @ Apr 8 2008, 21:13)  Сергей Борщ а не осталось ли у Вас до кучи 20060421 ? можете на нем попробовать ? Не было, поставил. первый проект после подтачивания скрипта линкера дал 3901 второй не скомпилился: error: cannot bind packed field `Msg_DriverID.msg_driver_id_t::Time' to `systime_t&' третий заоптимизировал в ноль - включена --gc-sections, а его скрипты линкера с этой опцией несовместимы. К счастью, в этом проекте у меня --gc-sections ничего не выкидывает, без --gc-sections получилось 2462. Цитата(aesok @ Apr 8 2008, 23:43)  Странно у меня минимум был при значениях 4..6, при больших и меньших размер кода увеличивался. А вы при компиляции задаете -Winline? Для меня было большим сюрпризом, что несмотря на inline и на определение функций-членов в объявлении классов gcc часто решает не встраивать некоторые функции. Спасает только __attribute__((always_inline)). В процессе "утаптывания" этих исходников все функции, вызываемые только в одном месте были объявлены с __attribute__((always_inline)), т.е. код сделан максимально линейным. Возможно с этим связана такая разница в результатах.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 11 2008, 22:49
|

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

|
Цитата(singlskv @ Apr 9 2008, 00:22)  Спасибо, впрочем я так и не понял какую из версий стоит пробовать  Придется протестировать на своих исходниках... Я тоже протестировал 20080407 на себе. При оптимизации о2 размер всех моих проектов слегка увеличился. Игры с "--param inline-call-cost" впечатляют... Есть проблемы с заголовочным файлом "math.h" пришлось убрать из него определение функций: Код __ATTR_CONST__ extern inline int isfinite (double __x) { .... } __ATTR_CONST__ extern inline double copysign (double __x, double __y) { .... } А то на них были маты... Кстати, та же фигня была и в сборке от Клёна... В остальном всё ГУД!
Сообщение отредактировал demiurg_spb - Apr 11 2008, 22:53
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Apr 12 2008, 12:37
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 11-05-07
Из: Коряжма
Пользователь №: 27 672

|
Помоему с официального сайта эту версию уже убрали..
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|