Ищу кросс-компилятор для АВР... :)

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 06 июн 2010, 14:30

Сорри, за тупые вопросы,...
- а что есть F23?
- сколькиразрядная у вас виртуальная машина получилась?
- исполняется из флэша или из рама?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 06 июн 2010, 14:31

1. 23-е число Фибоначчи
2. 16 разрядов, только беззнаковые числа
3. Из флэша
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 06 июн 2010, 15:09

Хм...
по-моему (это совершенно частное имхо) такие алгоритмы вообще не показатель.
Там же достаточно буковку поменять и результат будет сильно различаться.
буквально ифы местами переставляешь и вуаля... нет разве?
А уж если с начальными условиями "поиграться" - так и вообще в разы.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 06 июн 2010, 15:14

Как способ сравнения производительности - очень даже показатель.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 06 июн 2010, 15:24

Вот в этом-то я и не уверен.

Я сейчас на ГЦЦ скомпилял для АВРки... буквально от перестановки ифов, смены типа, легкой оптимизации ифов производительность заметно меняется. На одной и той же машине с одни и тем же компилятором. А есть еще ключи компилятора, например. Что уж говорить про разные языки, когда одинаково исходник заведомо разный.

А уж если задать не if(n==0) return 0; if(n==1) return 1; а, что-то вроде if(n<=2) return 1;
так и просто в два раза число итераций уменьшается...

Впрочем это оффтопик... Производительность понятна...
Имхо, есть куда оптимизировать... и сильно.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 06 июн 2010, 15:28

Michael_K писал(а):А уж если задать не if(n==0) return 0; if(n==1) return 1; а, что-то вроде if(n<=2) return 1;
так и просто в два раза число итераций уменьшается...

Этого не может быть, потому что не может быть никогда
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 06 июн 2010, 15:33

Ну я утрировал, конечно... :) Я думаю, пример понятен - просто начальные условия сдвинули и упростили одновременно. Хотя для n=0 результат неправильный получается, да... ну это ж тривиальный, типа, случай :))

Добавлено спустя 3 минуты 16 секунд:
В реальных прогах вряд ли будет столько коллов на один плюсик и пару сравнений... ;)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Duhas » 06 июн 2010, 15:53

тут, имхо важен порядок сраввнений... если в начале проверять на 0,1,2 то при каждом вызове будут тратиться такты впустую...

то есть должно быть
иф эн больше 2 колл ф(эн-1)

а далее уже редкие случаи типа эн = 0,1,2

вапще нужна скорость - асм в руки ))
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 06 июн 2010, 17:48

Не факт - посчитайте-ка :)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 09 июн 2010, 09:42

Переписал на ассемблере - тупо "в лоб" перевод с С на ассемблер, скорость выросла в 2 раза - F23 за 5,35 с. Вполне неплохо для 8-битного процессора (ATMega64)
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 09 июн 2010, 10:09

Ну вот это уже похоже на правду... грубо в среднем 25 тактов на команду...
В общем-то даже и неплохо.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 09 июн 2010, 14:18

Скорее ближе к 50. Вот несколько тестов (время в тактах процессора):

Код: Выделить всё
Empty loop (1000 iterations) : 265526
Assign 16-bit constant to global variable : 90
Assign 16-bit constant to local variable : 87
Call empty function : 153
Add 16-bit constant to local var, assign to local var : 178


Добавлено спустя 1 час 37 минут 47 секунд:
Немного ускорил
Код: Выделить всё
Empty loop (1000 iterations) : 205436
Assign 16-bit constant to global variable : 70
Assign 16-bit constant to local variable : 67
Call empty function : 123
Divide global by 16-bit constant, assign to global (worst case - divide by 1) : 479
Add 16-bit constant to local var, assign to local var : 138
Multiply global by 16-bit constant, assign to global : 152
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 23 июн 2010, 16:31

Еще потестил, полет нормальный. Начал интегрировать в проект (мега64/128, 2 устройства через уарт, воспроизведение звука, анализ звука с микрофона, анализ состояния входов, управление нагрузками на выходе, логи на карте памяти, простенькая RTOS).

Позже выложу компилятор и исходники виртуальной машины.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 23 июн 2010, 16:40

Вах!!! МОЛОДЦА! Супер.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23