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

 
 
> WinAVR обновился до 20081118rc2, Похоже, скоро релиз появится!
Alex_NEMO
сообщение Nov 20 2008, 12:22
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 13-05-05
Пользователь №: 4 977



Release Candidate 20081118rc2

File Release Notes and Changelog

Release Name: 20081118rc2

Notes:
Below is just a sample of what's new.

- New version of GNU Binutils: 2.19

- New version of GCC: 4.3.2

- New version of AVR-LibC: 1.6.4

- New version of Programmers Notepad: 2.0.8.718

- New devices supported:
* ATxmega64A3
* ATxmega128A3
* ATxmega256A3
* ATxmega256A3B
* ATmega32U6

- Various bugs fixed.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Nov 21 2008, 14:29
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А то последний запарил уже глупой работой с указателями.


Например?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
sonycman
сообщение Nov 21 2008, 15:50
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Rst7 @ Nov 21 2008, 18:29) *
Например?

А вот эту тему посмотрите: тута.
Вы же тогда сами мне подсказывали smile.gif

ЗЫ: видимо AVR Studio с интегрированным WinAVR никак не заставить компилировать C++.
Среда отказывается компилировать файлы с расширением, отличным от .с...
Через внешний makefile это возможно, но что-то не особо прельщает искать ошибки по номерам строчек в файлах, так как клик по сообщению не работает...
Млин, каменный век какой-то...
Может, когда времени больше будет smile.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 21 2008, 18:11
Сообщение #4


Гуру
******

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



Цитата(sonycman @ Nov 21 2008, 17:50) *
Через внешний makefile это возможно, но что-то не особо прельщает искать ошибки по номерам строчек в файлах, так как клик по сообщению не работает...
Очень странно. У меня работало. Просто в настройках проекта указать Custom (или External?) Makefile и все. Парсер вывода ведь никуда не денется. А еще можно отказаться от студии и работать в Эклипсе, а студию изредка использовать как симулятор, загружая в нее .elf.


--------------------
На любой вопрос даю любой ответ
"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
sonycman
сообщение Nov 21 2008, 20:02
Сообщение #5


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Сергей Борщ @ Nov 21 2008, 22:11) *
Очень странно. У меня работало. Просто в настройках проекта указать Custom (или External?) Makefile и все. Парсер вывода ведь никуда не денется. А еще можно отказаться от студии и работать в Эклипсе, а студию изредка использовать как симулятор, загружая в нее .elf.

Эклипс? Не юзал пока. А СликЭдит не подойдёт?

Скомпильнул небольшой код, и мне оптимизация ГНУ показалась интересной. Есть некоторые моменты, которые ИАР (5.10) даже не пытался затронуть, в отличие от, так сказать. Правда, очень уж любит ГНУ разворачивать подпрограммы, размерчик в итоге, думаю, получится посолидней... biggrin.gif
Тестил ГНУ на О3 и на Оs, а ИАР на макс. по скорости...

ЗЫ: вот напоследок перл от ИАРА:
Дано:
Код
#define RPM_MIN 0
#define RPM_MED 1
#define RPM_MAX 2

typedef    unsigned char    byte;

struct    frDatatable
{
    byte    min_speed;
    byte    med_speed;
    byte    max_speed;
    byte    min_temp;
    byte    max_temp;
} data;

    byte    RPMval[3];
    byte    minTEMPval;
    byte    maxTEMPval;

void    CFanRegulator::SetData(frDatatable *data)
{
    RPMval[RPM_MIN]    =    data->min_speed;
    RPMval[RPM_MED]    =    data->med_speed;
    RPMval[RPM_MAX]    =    data->max_speed;
    minTEMPval    =    data->min_temp;
    maxTEMPval    =    data->max_temp;
}

Вроде проще некуда. В итоге имеем:
Код
void    CFanRegulator::SetData(frDatatable *data)
   \                     ??SetData:
     15          {
     16              RPMval[RPM_MIN]    =    data->min_speed;
   \   00000000   01F9               MOVW    R31:R30, R19:R18
   \   00000002   8140               LD      R20, Z
   \   00000004   01F8               MOVW    R31:R30, R17:R16
   \   00000006   8345               STD     Z+5, R20
     17              RPMval[RPM_MED]    =    data->med_speed;
   \   00000008   01F9               MOVW    R31:R30, R19:R18
   \   0000000A   8141               LDD     R20, Z+1
   \   0000000C   01F8               MOVW    R31:R30, R17:R16
   \   0000000E   8346               STD     Z+6, R20
     18              RPMval[RPM_MAX]    =    data->max_speed;
   \   00000010   01F9               MOVW    R31:R30, R19:R18
   \   00000012   8142               LDD     R20, Z+2
   \   00000014   01F8               MOVW    R31:R30, R17:R16
   \   00000016   8347               STD     Z+7, R20
     19              minTEMPval    =    data->min_temp;
   \   00000018   01F9               MOVW    R31:R30, R19:R18
   \   0000001A   8143               LDD     R20, Z+3
   \   0000001C   01F8               MOVW    R31:R30, R17:R16
   \   0000001E   8740               STD     Z+8, R20
     20              maxTEMPval    =    data->max_temp;
   \   00000020   01F9               MOVW    R31:R30, R19:R18
   \   00000022   8124               LDD     R18, Z+4
   \   00000024   01F8               MOVW    R31:R30, R17:R16
   \   00000026   8721               STD     Z+9, R18
     21          }
   \   00000028   9508               RET

Просто аццкая куча кода biggrin.gif
Раз указатель грузится каждый раз заново - зачем он здесь вообще нужен?
К чему так заморачиваться - надо было авторам LDS использовать - эффект тот-же cranky.gif
И такое встречается частенько.
Вроде хороший компилер, но работа с указателями похабная.
Из трёх регистровых пар практически используется только одна.

А вот ГНУ такой фигнёй, похоже, не страдает wink.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 21 2008, 22:50
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(sonycman @ Nov 21 2008, 22:02) *
Просто аццкая куча кода biggrin.gif

Поставьте перед функцией __z, а ещё лучше __x (передавать указатель через регистровую пару весьма разумно) или оптимизацию установите по объёму и будет Вам счастье.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Nov 22 2008, 02:01
Сообщение #7


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Сергей Борщ @ Nov 22 2008, 02:29) *
Пойдет. Лично не пользовал, но уважаемые форумчане хвалят.Дык... O3 - это для больших машин с кучей памяти. Инлайн и разворот циклов где только можно в погоне за скоростью. Для AVR оптимальным является Os. Кроме того там есть еще куча ключей для тонкой настройки. Ваш код действительно дал какой-то неадекватный результат. Для ИАРа оптимизация по скорости очень часто дает меньший код, чем оптимизация по размеру (парадокс!). Попробуйте включить кластеризацию переменных, и вообще все галочки, которые доступны в дополнительных параметрах оптимизации.

Пробовал - не помогает.
Исправляюсь - кроме О3 тестил ещё и на Os. Да, последний режим давал более приемлимые результаты smile.gif

Цитата(IgorKossak @ Nov 22 2008, 02:50) *
Поставьте перед функцией __z, а ещё лучше __x (передавать указатель через регистровую пару весьма разумно) или оптимизацию установите по объёму и будет Вам счастье.

Не всё так просто.
Не спасает ничего, кроме установки перед функцией ключа __x_z. Но почему я должен каждую микроскопическую функцию проверять и персонально настраивать под оптимальную генерацию руками?
На это нужна куча времени!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alex_NEMO   WinAVR обновился до 20081118rc2   Nov 20 2008, 12:22
- - sonycman   Что то потянуло попробовать этот компилятор. Хочу ...   Nov 21 2008, 09:02
|- - Непомнящий Евгений   Цитата(sonycman @ Nov 21 2008, 12:02) А в...   Nov 21 2008, 09:12
|- - _Pasha   Цитата(sonycman @ Nov 21 2008, 13:02) uns...   Nov 21 2008, 09:45
|- - Сергей Борщ   Цитата(sonycman @ Nov 21 2008, 11:02) Уст...   Nov 21 2008, 10:47
|- - demiurg_spb   Цитата(sonycman @ Nov 21 2008, 12:02) Уст...   Nov 21 2008, 11:02
|- - sonycman   Цитата(Непомнящий Евгений @ Nov 21 2008, 13...   Nov 21 2008, 13:52
||- - Сергей Борщ   Цитата(sonycman @ Nov 21 2008, 22:02) Экл...   Nov 21 2008, 22:29
||- - Rst7   Цитата(sonycman @ Nov 22 2008, 04:01) Но ...   Nov 22 2008, 21:32
||- - AHTOXA   Цитата(Rst7 @ Nov 23 2008, 02:32) Еще хуж...   Nov 22 2008, 21:39
||- - Rst7   Цитата(AHTOXA @ Nov 22 2008, 23:39) WinAV...   Nov 22 2008, 21:51
|- - manul78   Цитата(Сергей Борщ @ Nov 21 2008, 21:11) ...   Nov 21 2008, 22:30
- - ukpyr   ЦитатаА вот ГНУ такой фигнёй, похоже, не страдает ...   Nov 21 2008, 20:49
- - NetTracer   Цитата(Alex_NEMO @ Nov 20 2008, 15:22) .....   Nov 23 2008, 08:22
|- - Alex_NEMO   Цитата(NetTracer @ Nov 23 2008, 11:22) Во...   Nov 23 2008, 10:07
- - sonycman   Портировал я свою программу с IARа на GCC. Оптимиз...   Nov 24 2008, 15:23
|- - singlskv   Цитата(sonycman @ Nov 24 2008, 18:23) жал...   Nov 24 2008, 23:49
|- - sonycman   Цитата(singlskv @ Nov 25 2008, 03:49) Увы...   Nov 25 2008, 09:51
|- - Непомнящий Евгений   Цитата(sonycman @ Nov 25 2008, 12:51) Ска...   Nov 25 2008, 10:12
||- - sonycman   Цитата(Непомнящий Евгений @ Nov 25 2008, 14...   Nov 25 2008, 10:38
||- - demiurg_spb   Цитата(sonycman @ Nov 25 2008, 13:38) Мож...   Nov 25 2008, 10:51
||- - Сергей Борщ   Цитата(demiurg_spb @ Nov 25 2008, 12:51) ...   Nov 25 2008, 15:40
|||- - Rst7   Цитата(Сергей Борщ @ Nov 25 2008, 17:40) ...   Nov 25 2008, 16:04
|||- - Непомнящий Евгений   Цитата(Сергей Борщ @ Nov 25 2008, 18:40) ...   Nov 26 2008, 06:43
||- - sonycman   Цитата(demiurg_spb @ Nov 25 2008, 14:51) ...   Nov 25 2008, 17:27
||- - demiurg_spb   Цитата(sonycman @ Nov 25 2008, 20:27) Это...   Nov 25 2008, 20:30
||- - defunct   Цитата(sonycman @ Nov 25 2008, 19:27) Ест...   Dec 11 2008, 01:50
|- - singlskv   Цитата(sonycman @ Nov 25 2008, 12:51) Да,...   Nov 25 2008, 11:15
- - ukpyr   хм, а если писать по заранее неизвестному адресу (...   Nov 24 2008, 15:42
|- - sonycman   Цитата(ukpyr @ Nov 24 2008, 19:42) хм, а ...   Nov 24 2008, 16:19
|- - IgorKossak   Цитата(sonycman @ Nov 24 2008, 19:19) Хм,...   Nov 24 2008, 16:59
|- - sonycman   Цитата(IgorKossak @ Nov 24 2008, 20:59) Б...   Nov 24 2008, 19:57
|- - IgorKossak   Цитата(sonycman @ Nov 24 2008, 21:57) Раз...   Nov 24 2008, 20:34
|- - _Pasha   Цитата(sonycman @ Nov 24 2008, 23:57) Раз...   Nov 24 2008, 21:56
|- - sonycman   Цитата(_Pasha @ Nov 25 2008, 01:56) Вот т...   Nov 24 2008, 23:45
- - Serjio   Зарелизили http://sourceforge.net/projects/winavr/   Dec 10 2008, 17:12


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:17
Рейтинг@Mail.ru


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