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

 
 
> Вышел WinAVR 20080402...20080411, сыроват еще
Сергей Борщ
сообщение Apr 3 2008, 13:46
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Apr 17 2008, 10:17
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



А я пока до сих пор использую WinAVR20070525, даже до декабрьской версии прошлого года обнавляться побаиваюсь) Полет нормальный. Как понимаю, обновляться до версии 2008 года пока рано.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 17 2008, 13:38
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(haker_fox @ Apr 17 2008, 16:17) *
А я пока до сих пор использую WinAVR20070525, даже до декабрьской версии прошлого года обнавляться побаиваюсь


А я как пионер, обновлялся... Думал, а вдруг какую ошибку неприятную исправили? И каждый раз всё хужее и хужее :-) В прошлый переход пара проектов перестала помещаться в кристалл... Хорошо хоть вовремя наткнулся на сообщение Сергея Борща про -ffunction-sections -fdata-sections, с их помощью - впихнул:-)
Короче, я пока тоже пас:-)


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Apr 19 2008, 05:10
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(AHTOXA @ Apr 17 2008, 22:38) *
А я как пионер, обновлялся... Думал, а вдруг какую ошибку неприятную исправили? И каждый раз всё хужее и хужее :-) В прошлый переход пара проектов перестала помещаться в кристалл... Хорошо хоть вовремя наткнулся на сообщение Сергея Борща про -ffunction-sections -fdata-sections, с их помощью - впихнул:-)
Короче, я пока тоже пас:-)

А здесь сообщения тоже противоречивые, хотя есть и положительные. Наверно стоит подождать. Либо пробывать самому.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 19 2008, 16:50
Сообщение #5


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

Группа: Свой
Сообщений: 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


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 19 2008, 17:18
Сообщение #6


дятел
*****

Группа: Свой
Сообщений: 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));
ну и уже все сохранение/востановление пишу сам.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 20 2008, 07:15
Сообщение #7


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

Группа: Свой
Сообщений: 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


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 20 2008, 07:26
Сообщение #8


дятел
*****

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



Цитата(demiurg_spb @ Apr 20 2008, 11:15) *
Всё делать руками... А для чего тогда вообще на С писать?
Я не говорю что все делать руками,
только в тех случаях когда нужно сделать очень короткое быстрое прерывание с минимумом
накладных расходов. При этом вся остальная прога может быть на С.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 20 2008, 07:31
Сообщение #9


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

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



Цитата(singlskv @ Apr 20 2008, 11:26) *
Я не говорю что все делать руками,
только в тех случаях когда нужно сделать очень короткое быстрое прерывание с минимумом
накладных расходов. При этом вся остальная прога может быть на С.

Это я чисто риторически спрашивал.... smile.gif

Проверил на 20080411:
1)
Проблема с дублированием кода процедуры осталось.
2)
Размер кода при оптимизации o2 и oS одинаков 214 байт.
Ушла проблема с двойной проверкой условий, что не может не радовать!
3)
Ненужное сохранение в стэке __zero_reg__ (r1) осталось.

Может кто-нибудь зарегистрирует ошибки 1 и 3 на:
http://sourceforge.net/tracker/?atid=52007...mp;func=browse)
А то у меня с письменным английским не так хорошо, как могло бы быть...

Использование данной версии 20080411 невозможно из-за баги с R16.
Часть программ не работает в железе по этой причине.

Сообщение отредактировал demiurg_spb - Apr 20 2008, 08:29


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


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(demiurg_spb @ Apr 20 2008, 11:31) *
Проверил на 20080411:
1)
Проблема с дублированием кода процедуры осталось.


Не надо свое незнание языка С выдавать за баг компилятора уже третий пост подрят.

В дали компилятору команду оптимизировать код? Он вставил инлай версию функции 'mcu_init' в 'main', при этом ускорив код на команды вызова/возврата?

Вы обьявили функцию 'mcu_init' как глобальную, компилятор должен обрабатывть ситуацию что эта функция может быть вызвана из другого модуля? И для этого случая оставить код полной версии 'mcu_init'?

Где ошибся компилятор?

Объявите 'mcu_init' как static.

Анатолий.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 20 2008, 20:09
Сообщение #11


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

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



Цитата(aesok @ Apr 20 2008, 13:58) *
Не надо свое незнание языка С выдавать за баг компилятора уже третий пост подрят.


К слову, могли бы и не ждать три поста подряд а поправить ранееsmile.gif

Цитата(aesok @ Apr 20 2008, 13:58) *
В дали компилятору команду оптимизировать код? Он вставил инлай версию функции 'mcu_init' в 'main', при этом ускорив код на команды вызова/возврата?

Вы обьявили функцию 'mcu_init' как глобальную, компилятор должен обрабатывть ситуацию что эта функция может быть вызвана из другого модуля? И для этого случая оставить код полной версии 'mcu_init'?

Где ошибся компилятор?

Объявите 'mcu_init' как static.

Анатолий.


Спасибо за поучение.
Static совершенно упустил из виду.
С кодом функции всё в порядке.
Вопрос был задан для того чтобы понять суть проблемы.
Одна проблема была в недопонимании и она решилась благодаря Вам.
Я думаю, что это было интересно не только мне...
Антон.

Сообщение отредактировал demiurg_spb - Apr 20 2008, 20:15


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Сергей Борщ   Вышел 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
|- - 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


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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 18:53
Рейтинг@Mail.ru


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