|
|
  |
WinAVR-20100110, Пишем отзывы сюда |
|
|
|
Apr 1 2011, 12:02
|

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

|
Цитата(Сергей Борщ @ Apr 1 2011, 13:03)  ...найдите, откуда эти утилиты берутся на "больном" и уберите этот путь из path. Команда which %exename%.exe для всех *.exe из C:\WinAVR\utils\bin и C:\WinAVR\bin выдаёт эти же пути, т.е. ничего стороннего не запускается. Файлы на больном и остальных компах идентичны. -- Оно починилось. Но причину поломки так и не знаю  Переустановка поверх не излечивала, а вот удалить\поставить излечило. Смена системной даты могла повлиять? Выставлял год как-то аж до 1991 (так надо было), и мог в это время WinAVR использовать. Даты доступа\создания\изменения файлов WinAVR не додумался проверить до удаления\установки
|
|
|
|
|
Aug 5 2012, 12:56
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(halfdoom @ Aug 5 2012, 10:44)  Попросил заказчик использовать gcc-4.5.1 А у меня из-под убунты Код Using built-in specs. COLLECT_GCC=avr-gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/avr/4.5.3/lto-wrapper Target: avr Configured with: ../src/configure -v --enable-languages=c,c++ --prefix=/usr/lib --infodir=/usr/share/info --mandir=/usr/share/man --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --enable-shared --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-libssp --build=i686-linux-gnu --host=i686-linux-gnu --target=avr Thread model: single gcc version 4.5.3 (GCC) и под масдаем - сабж Отличий при сборках вообще нету. Наверное, это не нормально. Попробую пересобрать с десяток проектов и сравнить.
Сообщение отредактировал IgorKossak - Aug 9 2012, 09:19
|
|
|
|
|
Aug 5 2012, 13:57
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата(halfdoom @ Aug 5 2012, 11:44)  Попросил заказчик использовать gcc-4.5.1 (тот, что из avr-toolchain-installer-3.3.1.1020-win32.win32.x86). На сабже размер кода для меги8 был 4338 байт, на новом 4872 байт. Спрашивается, откуда такая разница? Ответ - везде понемногу, причем раскладка по регистрам совершенно другая, поэтому точное сравнение невозможно. Для меги168 пока вообще не вмещается во флэш... У меня при компиляции avr-toolchain-installer-3.4.0.1146-win32.win32.x86.exe по сравнению с 1020 код подрос код заметно. В моём случае на 32 килобайтах около 300 байт. Причём, сабжёвый компилятор проигрывает сильно 1020-й и 710-й сборкам. Попробуйте выборочным запрещением инлайна функций поиграться, static у функций поставить где надо.
|
|
|
|
|
Aug 7 2012, 23:03
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата(halfdoom @ Aug 5 2012, 19:11)  В общем, нашел основной источник роста: излишне "умный" компилятор позаменял везде, где смог дотянуться, обращения через указатели на lds/sts. На некоторых кусках, где используется конструкции вида p=pp;*p++=a; *p++=b; *p++=c;fn(p) получаем 3 sts'a и еще арифметику для pp+3. Переменных (в структурах) в этом проекте очень много, отсюда и заметный прирост в объеме. Это ради скорости, вероятно? Если так - пусть живёт... Если нет - как отключить, не знаете?
|
|
|
|
|
Aug 8 2012, 14:30
|

Профессионал
    
Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072

|
Цитата(Genadi Zawidowski @ Aug 8 2012, 02:03)  Это ради скорости, вероятно? Если так - пусть живёт... Если нет - как отключить, не знаете? Нет, скорости это не добавляет (указатель все равно подгружается позже), только бесполезно увеличивает размер кода. Цитата(demiurg_spb @ Aug 8 2012, 08:50)  Отнюдь, avr-gcc 4.7.1 весьма и весьма неплох Может быть, но вот изъятие поддержки типа "typedef int16_t PROGMEM prog_int16_t;" несколько расстраивает.
|
|
|
|
|
Aug 9 2012, 05:10
|

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

|
Цитата(halfdoom @ Aug 8 2012, 18:30)  Может быть, но вот изъятие поддержки типа "typedef int16_t PROGMEM prog_int16_t;" несколько расстраивает. Напрасно расстраиваетесь, если нужна совместимость со старыми дедовскими методами нужно объявить глобально или до включения pgmspace.h Код #define __PROG_TYPES_COMPAT__ Все эти PGMы уже больше не нужны ввиду наличия гораздо более удобного механизма с ключевым словом __flash. Будут вопросы - спрашивайте, я самую малость причастен к avr-libc и в частности pgm_read_float в pgmspace.h накалякал
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Aug 9 2012, 06:23
|

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

|
(сверните кто-нибудь строку в 78 сообщении, а то она в монитор 1600 по горизонтали не лезет, надо на 1920 попробовать) Ещё руки не дошли пробовать, но если я правильно понял обсуждения, то __flash сейчас только в С-шном форнт-энде, в С++-ном его нет (пространства памяти в С-шном стандарте появились, а не в С++-ном). Буду рад ошибиться. Но typedef int16_t PROGMEM prog_int16_t по сути никогда и не работал. Т.е. тип при этом не создавался. Я даже не говорю об обращении по адресу переменной типа prog_int16_t, но ведь даже контроля типов при передаче в функцию не было. Так что такой typedef только сокращал писанину (её и #define-ом сократить можно), но ничем не отличался от Код int16_t ip PROGMEM;
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
  |
8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0
|
|
|