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

 
 
6 страниц V  « < 4 5 6  
Reply to this topicStart new topic
> Какую среду разработки Вы используете?
Какую среду разработки Вы преимущественно используете для своих проектов, и почему?
среда разработки (компилятор/транслятор)
AVR-Studio (atmel-avr-asm) [ 43 ] ** [17.27%]
AVR-Studio + gcc-plugins [ 12 ] ** [4.82%]
IAR-EWAVR преимуществунно (asm) [ 0 ] ** [0.00%]
IAR-EWAVR преимущественно ( C ) [ 79 ] ** [31.73%]
WinAvr (gcc) [ 33 ] ** [13.25%]
CodeVision [ 52 ] ** [20.88%]
ImageCraft-C [ 9 ] ** [3.61%]
E-LAB pascal [ 1 ] ** [0.40%]
Alhorithm Builder [ 7 ] ** [2.81%]
AVR-Basic [ 2 ] ** [0.80%]
другую [ 11 ] ** [4.42%]
Всего голосов: 249
Гости не могут голосовать 
beer_warrior
сообщение May 25 2006, 21:07
Сообщение #76


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
(SasaVitebsk @ May 25 2006, 21:41) *

А каким образом Вы NOP в проект на C подключали? Может в этом кроется ошибка?


asm("nop")?

asm volatile("nop") smile.gif


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение May 25 2006, 21:55
Сообщение #77


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Итак наш ответ Чемб... простите DXP
IAR и WinAVR у меня другой версии, так что результаты получились несколько другие:
IAR :
last flash byte address = 0x00BF
last flash word address = 0x005F
GCC:
; last flash byte address = 0x00D3
; last flash word address = 0x0069
0xD3 - 0xBF = 0x14 = 20
Итак мне стало интересно на чем набежала разница.
Из-за отличия в листингах я собрал все в два hex и подсунул в оба ReAVR.
Результат прилагаеться:
Не буду утомлять листингом он прокомментирован. Мы имеем функцию main() и вызываемые из нее LEDon() и Delay(), кроме того имеем начальную инициализацию(Cstartup) и таблицу векторов прерываний.
Итак функция main() сделанная gcc в лоб - 41 команда. IAR который вынес пролог и два фрагмента в подпрограммы - 42 команды. Delay() решение одинаковое 5 команд. LEDon() - gcc 12 команд одним куском, IAR 7 + 5 подпрограмма. Инициализация стека - оба по 12 хотя IAR без RCALL не может. Ну с векторами вопросов нет - одинаково.
Итак в чем же разница - а вот в чем - GCC включает код для инициализации глобальных переменных.
В простом тесте их нет и соответственно IAR идет на обгон, там где они появляются и IAR включает подобный код. В принципе это дело можно в gcc и поскипать, о какая в том надобность.
Если отбросить стартап - на исполняемой части gcс выигрывает одну команду без бесконечных прыжков по коду. Ассемблерный код красивый ясный и быстрый.
Правда надо отдать должное IARу - красивая замена rcall на rjmp хорошо экономит стек, так же вызов пролога сделан намного лучше чем в gcc


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение May 25 2006, 23:49
Сообщение #78


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Листинги
Прикрепленные файлы
Прикрепленный файл  TEST1.ZIP ( 2.16 килобайт ) Кол-во скачиваний: 66
 


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
733259
сообщение May 26 2006, 03:03
Сообщение #79


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



А вот что у меня получилось
Цитата
avr-gcc -g -Wall -Os -mmcu=atmega16 -c -o test.o test.c

text data bss dec hex filename
130 0 0 130 82 test.o
Однако gcc не идеален, потому сделаем так
Цитата
void main(void) __attribute__ ((naked));
тогда
Цитата
text data bss dec hex filename
122 0 0 122 7a test.o
- нет двойной установки стека
Цитата
ldi r28, 0x5f ; 95
ldi r29, 0x04 ; 4
out SPH, r29
out SPL, r28
Вывод ИМХО: iar и gcc - достойные компиляторы, в отличии от CodeVisionAVR.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 26 2006, 03:58
Сообщение #80


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(beer_warrior @ May 25 2006, 20:57) *
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)[

So generally, it seems -Os -mcall-prologues is the most universal "best" optimization level. Only applications that need to get the last few percent of speed benefit from using -O3.

С этими ключами результат ровно тот же.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
dxp
сообщение May 26 2006, 04:23
Сообщение #81


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(733259 @ May 26 2006, 10:03) *
А вот что у меня получилось
Цитата
avr-gcc -g -Wall -Os -mmcu=atmega16 -c -o test.o test.c

text data bss dec hex filename
130 0 0 130 82 test.o
Однако gcc не идеален, потому сделаем так
Цитата
void main(void) __attribute__ ((naked));
тогда
Цитата
text data bss dec hex filename
122 0 0 122 7a test.o
- нет двойной установки стека

Если в IAR'е main квалифицировать словом __task, которое именно для этой функции в первую очередь и предназначено, то результат будет 114 и 106 байт соответственно.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
733259
сообщение May 26 2006, 05:46
Сообщение #82


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



В avr-gcc 4.0.3 - 118 байт, выше был 3.4.6
Go to the top of the page
 
+Quote Post
vesago
сообщение Jul 24 2006, 07:05
Сообщение #83


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Цитата(SasaVitebsk @ Feb 8 2006, 01:55) *
Цитата(haker_fox @ Feb 2 2006, 04:18) *

В прекрасном будущем smile.gif хочу забодать JTAG...

А потом прога у меня есть, - просматриваю типа осцил. запоминающего. Очень помогает! Прогой могу поделится, она моя.


Будьте так любезны vesago(собачка)rambler.ru smile.gif

С AVR знаком с пару месяцев - пришлось использовать как сопроцессор. Сначала попробовал IAR. После Кейла крайне не понравился. Дискомфортно. Поставил CVAVR. Игрушка какая-то. Вобщем вернулся в IAR. Сейчас уже пообвыкся, даже стал получать удовольствие. Чувствуется - вещь! Отлаживать пробовал в симуляторе студии. Но какая-то убогая она. Если надо алгоритм, то отлично и в яре можно. В студии, допустим, мне не представляется возможным отладить протокол усарта полноценно. TWI не прошел. Из яра когда инициализирую регистры сфр, фигню какую-то грузит, хотя работает првильно. В общем надо поскорее жтаг собирать. Протеус странная прога. Устройство на меге 128 в железе работает. В Протеусе вообще не дышит. Вроде и питание завел и прошивку подкрузил - не работает хоть тресни. А вообще из сред Кейл вне конкуренции имхо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 03:49
Рейтинг@Mail.ru


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