|
Вышел 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 19 2008, 16:50
|

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

|
Цитата(haker_fox @ Apr 19 2008, 09:10)  А здесь сообщения тоже противоречивые, хотя есть и положительные. Наверно стоит подождать. Либо пробывать самому. Проекты компилируются без ошибок, но часть из них не работает в железе. Есть серьёзная бага с не сохранением R16 (почитайте баглист на http://sourceforge.net/tracker/?atid=52007...mp;func=browse)Размер кода только увеличился в сравнении с WinAVR 20070525. И ещё, я нашёл пару приколов в стабилной версии WinAVR 20070525, которую использую постоянно: 1) При компиляции с -oS код получается больше (212 байт), чем с -o2 (210 байт). Пример во вложенном файле. Там процедура mcu_init присутствует дважды один раз она встраивается компилятором как inline, но при этом она же остаётся в asm листинге и как обычная процедура с заканчивающаяся ret. 2) В прерываниях сохраняется в стэке, а потом очищается регистр __zero_reg__ (r1), после чего востанавливается перед reti. Хотя он вовсе не используется процедурой. 3) Код при оптимизации -o2 получается просто смешным: проверка условия происходит дважды!!! if (time_is_up) loop: lds r24, 0x0061 // первый раз and r24, r24 breq loop // тело условия lds r24, 0x0061 // второй раз вместо rjmp loop !!! and r24, r24 breq loop Я в шоке! (всё это можно увидеть скомпилировав вложенный файл)
Test_bug.rar ( 5.45 килобайт )
Кол-во скачиваний: 159
Сообщение отредактировал demiurg_spb - Apr 19 2008, 16:54
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Apr 19 2008, 17:18
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(demiurg_spb @ Apr 19 2008, 20:50)  Размер кода только увеличился в сравнении с WinAVR 20070525. к сожалению по моим пробам после 20060421 код очень часто увеличивается, правда сО всякими спецключами я не пробовал, но и код который пробовал не требует этих ключей. Цитата При компиляции с -oS код получается больше (212 байт), чем с -o2 (210 байт). нуу... 2 байта это совсем не показатель, всегда можно написать так что при оптимизации по скорости код будет более медленным чем при оптимизации по размеру, ну и конечно наоборот.. Цитата 2) В прерываниях сохраняется в стэке, а потом очищается регистр __zero_reg__ (r1), после чего востанавливается перед reti. Хотя он вовсе не используется процедурой. Ну это не баг а уже довольно давно фича AVR Gcc, если это фсе мне начинает сильно мешать то объявляю прерывание как: void TIMER2_COMP_vect(void) __attribute__((signal)) __attribute__((naked)); ну и уже все сохранение/востановление пишу сам.
|
|
|
|
|
Apr 20 2008, 07:15
|

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

|
Цитата(singlskv @ Apr 19 2008, 21:18)  к сожалению по моим пробам после 20060421 код очень часто увеличивается, правда сО всякими спецключами я не пробовал, но и код который пробовал не требует этих ключей. нуу... 2 байта это совсем не показатель, всегда можно написать так что при оптимизации по скорости код будет более медленным чем при оптимизации по размеру, ну и конечно наоборот.. Специально я ничего не делал. На мой взгляд это действительно бага, т.к. сгенерированный компилятором код одной функции присутствует _дважды_ в одой единице трансляции. И именно по этой причине размер программы увеличивается... Цитата(singlskv @ Apr 19 2008, 21:18)  Ну это не баг а уже довольно давно фича AVR Gcc, если это фсе мне начинает сильно мешать то объявляю прерывание как: void TIMER2_COMP_vect(void) __attribute__((signal)) __attribute__((naked)); ну и уже все сохранение/востановление пишу сам. Всё делать руками... А для чего тогда вообще на С писать?
Сообщение отредактировал demiurg_spb - Apr 20 2008, 07:18
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Apr 20 2008, 07:26
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(demiurg_spb @ Apr 20 2008, 11:15)  Всё делать руками... А для чего тогда вообще на С писать? Я не говорю что все делать руками, только в тех случаях когда нужно сделать очень короткое быстрое прерывание с минимумом накладных расходов. При этом вся остальная прога может быть на С.
|
|
|
|
Сообщений в этой теме
Сергей Борщ Вышел WinAVR 20080402...20080411 Apr 3 2008, 13:46 Сергей Борщ Цитата(Сергей Борщ @ Apr 3 2008, 16:46) В... Apr 8 2008, 15:08 aesok Цитата(Сергей Борщ @ Apr 8 2008, 18:08) З... Apr 8 2008, 15:46  Сергей Борщ Цитата(aesok @ Apr 8 2008, 18:46) Пожалуй... Apr 8 2008, 17:54   aesok Цитата(Сергей Борщ @ Apr 8 2008, 20:54) П... Apr 8 2008, 20:43    singlskv Цитата(aesok @ Apr 9 2008, 00:43) Его уже... Apr 8 2008, 20:54 singlskv Цитата(Сергей Борщ @ Apr 8 2008, 19:08) Н... Apr 8 2008, 18:13  Сергей Борщ Цитата(singlskv @ Apr 8 2008, 21:13) Серг... Apr 8 2008, 21:10   singlskv Цитата(Сергей Борщ @ Apr 9 2008, 01:10) Н... Apr 8 2008, 21:22    demiurg_spb Цитата(singlskv @ Apr 9 2008, 00:22) Спас... Apr 11 2008, 22:49 AHTOXA Выходит, плюсов как таковых - нет вовсе? :-) Apr 8 2008, 15:49 Антон Малыгин Помоему с официального сайта эту версию уже убрали... Apr 12 2008, 12:37 mdmitry На официальном сайте сейчас другая версия:
WinAVR-... Apr 12 2008, 22:05 Сергей Борщ Цитата(mdmitry @ Apr 13 2008, 01:05) На о... May 12 2008, 22:12  AHTOXA Цитата(Сергей Борщ @ May 13 2008, 04:12) ... May 13 2008, 02:59  aesok Цитата(Сергей Борщ @ May 13 2008, 02:12) ... May 13 2008, 06:27   Сергей Борщ Цитата(aesok @ May 13 2008, 09:27) Все сб... May 14 2008, 09:47    aesok Цитата(Сергей Борщ @ May 14 2008, 13:47) ... May 14 2008, 14:01     Сергей Борщ Цитата(aesok @ May 14 2008, 17:01) Так ве... May 14 2008, 14:34      aesok Цитата(Сергей Борщ @ May 14 2008, 18:34) ... May 15 2008, 05:08 Сергей Борщ Цитата(haker_fox @ Apr 17 2008, 13:17) Ка... Apr 17 2008, 10:49       demiurg_spb Цитата(singlskv @ Apr 20 2008, 11:26) Я н... Apr 20 2008, 07:31        aesok Цитата(demiurg_spb @ Apr 20 2008, 11:31) ... Apr 20 2008, 09:58         demiurg_spb Цитата(aesok @ Apr 20 2008, 13:58) Не над... Apr 20 2008, 20:09        yod Цитата(demiurg_spb @ Apr 20 2008, 14:31) ... Apr 24 2008, 08:18         ReAl Цитата(yod @ Apr 24 2008, 11:18) хотелось... Apr 24 2008, 09:13         demiurg_spb Цитата(yod @ Apr 24 2008, 12:18) Веду про... Apr 24 2008, 19:25 mdmitry Уже другой:
WinAVR 20080512 May 12, 2008 May 13 2008, 08:56
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|