|
Какую среду разработки Вы используете? |
|
|
|
Feb 1 2006, 21:33
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Давно мечтал услушать все "за" и "против", о популярных средах программирования для AVR uC. Всех сред разработки я знать не могу  поэтому если в списке Вы не нашли того с чем работаете, указывайте ее в сообщениях  Сам я использую в основном AVR-Studio в комбинации с gcc, из-за наиболее, на мой взляд, удобного отладчика, который отображает значения переменных/регистров в всплывающих подсказках прямо в тексте отлаживаемых модулей, а также из-за эмулятора, предоставляемого разработчиком uC, доверее к которому много выше чем к эмуляторам сторонних разработчиков. В IAR-е помоему отсутствует такая возможность, сколько не ковырялся в настройках так и не нашел где можно включить отображение значений переменных в режиме отладки, или я не прав? Хотя код сгенерированный IAR'ом и получается меньшего объема, но удобная отладка как для меня важнее..
Сообщение отредактировал defunct - Feb 1 2006, 21:56
|
|
|
|
|
 |
Ответов
Guest_Serg79_*
|
May 24 2006, 08:42
|
Guests

|
О чем разговор!!! Для сборки прошивки лучше чем WinAvr(gcc) вы не найдете. Для написания кода и отладки, связка AVR-Studio + gcc-plugins да плюс JTAG это все что нужно. А кто знает что такое Linux, так ему и объяснять не надо что такое 'gcc' и как он может код оптемизировать хоть по размеру, хоть по быстродействию.
CodeVision просто отстой, то что он делает с указателями не поддается описанию, один ужас. Он даже не знает, что такая каманда у AVR есть как ( ICALL ). А как он код раздувает, просто ужас, и быстродействие его просто ужасное.
IAR-EWAVR на счет того что он быстрее и компактнее тоже заблуждение.
У 'gcc' один минус, он тяжелый для новичков, особенно когда надо вставку на 'asm' сделать, их это вводит просто в ступор :-). Но что либо гибче чем gcc просто не сушествует.
Кто мне не верит, пускай посмотрит как каждый компилятор пишет на 'asm' тогда убедиться, что лучше 'gcc' ему ни чего не найти.
|
|
|
|
Guest_Serg79_*
|
May 24 2006, 11:00
|
Guests

|
Цитата(dxp @ May 24 2006, 13:50)  Цитата(Serg79 @ May 24 2006, 15:42)  IAR-EWAVR на счет того что он быстрее и компактнее тоже заблуждение.
IAR EWAVR дает более компактный и быстрый код! Спорить не надо, это проверено неоднократно. Для компактности кода AVR-GCC должен для начала научиться почаще пользоваться косвенной адресацией, а не лепить везде lds/sts, а для скорости - ввести все же раздельные стеки для данных и адресов возвратов, чтобы не геморроиться с подготовкой стекового кадра в каждой функции. Этот же момент напрямую влияет и на размер кода. Если и еще вопросы, но эти два - основные. О чем Ты говоришь: // используем 'lds' lds r18,$01FF ( 2-такта, 4-байта ) // используем косвенное чтение ldi r26,$FF ( 1-такт, 2-байта ) ldi r27,$01 ( 1-такт, 2-байта ) // подготавливаем Х ld r18,X ( 2-такта, 2-байта ) //Вот и смотри что быстрее и компактнее. На счет использования стека: параметры в функцию передаются через регистры r25-r8, если не хватает передается через стек (исключение: функции с переменным количеством аргументов (printf()) всегда через стек). Возврашает значение: 8-бит в r24 (не r25!), 16-бит в r25:r24, 32-бита в r22-r25, 64-бита в r18-r25. Регистры которые можно свободно использовать (r18-r27, r30-r31), которые следует сохранять (r2-r17, r28-r29) если их используешь. А уж с указателями 'gcc' работать сам кого хочешь научит, и не использует для этого вызовы сервисных функций. А что ты называешь стековым кадром, наверное только тебе известно. На счет отдельного стека для данных это полный маразм. Выделять отдельный указательный регистр (X, Y или Z) для ведения стека данных (в CodeVision используется для этих целей Y) это полное расточительство и дополнительный код и время на его обслуживание. Если есть что возразить, Я слущаю.
|
|
|
|
|
May 24 2006, 13:23
|

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

|
Цитата(Serg79 @ May 24 2006, 18:00)  О чем Ты говоришь: // используем 'lds' lds r18,$01FF ( 2-такта, 4-байта )
// используем косвенное чтение ldi r26,$FF ( 1-такт, 2-байта ) ldi r27,$01 ( 1-такт, 2-байта ) // подготавливаем Х ld r18,X ( 2-такта, 2-байта ) //Вот и смотри что быстрее и компактнее. Ок, теперь напишем аналогичный код обращения к памяти для int, long, float, int* и т.д. и т.п. - для типов, у которых sizeof(type) >= 2. И посмотрим, к каким объектам в реальной программе идет обращение. К 8-битным или более? Вы с IAR'ом-то работали реально? Возьмите какую-нить программку и скомпилите в том и другом. Результат сравните. Я в свое время сравнивал, AVR-GCC был 2.95 и какой-то из 3.хх, поведение в них одинаково. У IAR с версий 2.хх появилась весьма неплохая оптимизация Clustering variables, когда компилятор складывает переменные, к которым идет смежное обращение, рядом, что позволяет только ОДИН раз загрузить БАЗОВЫЙ (для всех них) адрес и обращаться к ним со смещением ldd/std. Экономия выходит весьма ничего себе! В общем, я в свое время сравнение проводил, причины исследовал, имею основания так считать. Другие люди тоже сравнивали - пришли к такому же выводу. Даже в этом форуме приводили примеры по размеру кода - IAR всегда выигрывал с заметным отрывом. Цитата(Serg79 @ May 24 2006, 18:00)  На счет использования стека: ... А что ты называешь стековым кадром, наверное только тебе известно. На счет отдельного стека для данных это полный маразм. Выделять отдельный указательный регистр (X, Y или Z) для ведения стека данных (в CodeVision используется для этих целей Y) это полное расточительство и дополнительный код и время на его обслуживание.
Если есть что возразить, Я слущаю. Если Вы не знаете, что такое стековый кадр у avr-gcc, то я Вам сочувствую. Хорошо, объясню: у AVR совершенно убогий указатель стека (SP), он не позволяет эффективно работать с данными в стеке, он не умеет адресоваться со смещением, он не поддерживает эффективных операций адресной арифметики. Поэтому эффективным решением проблемы было выделение под указатель стека данных одного из аппаратных указателей - например, Y. Что и сделала IAR. Конечно, укзателя жаль, тем более, что нормальных их там всего два. В этом состоит еще один кривой момент AVR. Наличие нормального указателя стека позволяет эффективно работать с данными в стеке - локальными объектами и аргументами, которые не влезли в регистр и переданы через стек. В AVR-GCC пошли по традиционному пути и получают весь геморрой от этого - при входе в функцию, если надо эффективно поработать с данными в стеке, значение указателя стека копируется в тот же самый Y-pointer и работа происходит уже с ним. При копировании SP в Y еще и надо прерывания запрещать (а после копирования восстаноавливать значение бита глобального разрешения прерываний, т.е. помещать этот код в критическую секцию), чтобы эта неатомарная операция не была прервана каким-нибудь прерыванием и не нарушилась целостность работы программы. Это дополнительные накладные расходы и по коду, и по быстродействию... Как же Вы работаете с AVR-GCC, если всего этого не знаете? Я вот не работаю, а только исследовал причины проигрыша AVR-GCC IAR'у, и то об этом знаю! Будете дальше спорить?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
defunct Какую среду разработки Вы используете? Feb 1 2006, 21:33 haker_fox Использую IAR EWAVR 4.11A + AVRStudio: код, как вы... Feb 2 2006, 00:18 defunct Цитата(haker_fox @ Feb 2 2006, 02:18) Исп... Feb 2 2006, 04:44  haker_fox Цитата(defunct @ Feb 2 2006, 12:44) Цитат... Feb 2 2006, 05:00 Proton Счмтаю что нужно добавить IAR EWAVR + AVRStudio та... Feb 2 2006, 04:52 Георгий IAR EWAVR + AVRStudio Feb 2 2006, 05:29 dxp Проекты смешанные C++/Asm с подавляющей по объему ... Feb 2 2006, 07:17 BVU Однозначно IAR-EWAVR ( C ), но для полноты списка ... Feb 2 2006, 07:36 unichorn WinAVR + AVR-Studio + Cpp Builder Feb 2 2006, 07:41 muravei Использую Алгоритм билдер, устраивает симулятор. Feb 2 2006, 07:54 IgorKossak Поскольку использую IAR EWAVR + JTAG эмулятор, то ... Feb 2 2006, 08:08 defunct Цитата(IgorKossak @ Feb 2 2006, 10:08) По... Feb 2 2006, 09:21  IgorKossak Цитата(defunct @ Feb 2 2006, 11:21) ... в... Feb 2 2006, 09:30 Polaris Использую CodeVision + AVRStudio.
Да, есть глюки в... Feb 2 2006, 08:27 Rash Использую IAR EWAVR + JTAG mk2 эмулятор, а AVR Stu... Feb 2 2006, 08:32 ALexx Изначально пошел по пути CodeVision+VMLab, о чем е... Feb 2 2006, 13:10 MakSV Использую IAR EWAVR 4.11A + AVRStudio, удобно и на... Feb 2 2006, 15:02 zltigo Цитата(dxp @ Feb 2 2006, 09:17) В качеств... Feb 2 2006, 15:16 artStinger Для написания использую MED - programmer's tex... Feb 2 2006, 16:37 beer_warrior gcc адназначна.
1.полный тулчейн под avr msp arm w... Feb 2 2006, 17:49 Old1 Использую EWAVR 4.12 (evaluation) от IAR (компилят... Feb 3 2006, 08:29 defunct Цитата(Old1 @ Feb 3 2006, 10:29) Пример т... Feb 3 2006, 18:36  Old1 Цитата(defunct @ Feb 3 2006, 22:36) Цитат... Feb 4 2006, 13:24   dxp Цитата(Old1 @ Feb 4 2006, 19:24) Представ... Feb 6 2006, 11:04    Old1 Цитата(dxp @ Feb 6 2006, 14:04) Зачем это... Feb 6 2006, 18:14 sseett Начинал с AVR-Studio (atmel-avr-asm), но случайно... Feb 7 2006, 08:52 IgorKossak Цитата(sseett @ Feb 7 2006, 10:52) ... К... Feb 7 2006, 17:15 SasaVitebsk Цитата(haker_fox @ Feb 2 2006, 04:18) В п... Feb 7 2006, 22:55 vesago Цитата(SasaVitebsk @ Feb 8 2006, 01:55) Ц... Jul 24 2006, 07:05 NightCat Можно глупый вопрос?
Есть какие-то еще "ну оч... Feb 18 2006, 18:17 defunct Цитата(NightCat @ Feb 18 2006, 20:17) Ест... Feb 18 2006, 18:41 ArtemK После опробывания в качестве компилятора win-avr, ... Feb 20 2006, 07:05 гигипотамм Code Vision Feb 25 2006, 13:51 Proton zltigo
Это точно он([banned]). После того как две... May 23 2006, 15:12 Andy Great Crossworks from Rowley May 23 2006, 16:22 Сергей Борщ ИАР через JTAG, еслои JTAG нет - мигание светодиод... May 23 2006, 16:49 defunct Цитата(Сергей Борщ @ May 23 2006, 19:49) ... May 23 2006, 17:06  ilya514 Цитата(defunct @ May 23 2006, 20:06) Цита... May 23 2006, 17:16   defunct Цитата(ilya514 @ May 23 2006, 20:16) Прос... May 23 2006, 17:33    Сергей Борщ Цитата(defunct @ May 23 2006, 20:33) Цита... May 23 2006, 18:11    ilya514 [quote name='defunct' date='May 23 200... May 23 2006, 18:19  Сергей Борщ Цитата(defunct @ May 23 2006, 20:06) Цита... May 23 2006, 17:27 bodja74 А я AVR-Studio из за дизасемблера люблю,можно ... May 23 2006, 17:44 Proton ЦитатаA_Bolshev Дата Сегодня, 07:49
все тоже + ... May 24 2006, 03:57 BigBolt Опрос показывает, что наиболее популярными являютс... May 24 2006, 08:22   Rst7 Цитата(Serg79 @ May 24 2006, 14:00) О чем... May 24 2006, 12:28    bodja74 Цитата(Rst7 @ May 24 2006, 15:28) Только ... May 24 2006, 12:51   _Bill Цитата(Serg79 @ May 24 2006, 14:00) А что... May 24 2006, 13:03 VladimirZ В основном CrossWorks+Jtag, симуляторам предпочита... May 24 2006, 10:11 beer_warrior Тут как говориться дело вкуса и привычки. я наприм... May 24 2006, 12:38 _Bill Цитата(beer_warrior @ May 24 2006, 15:38)... May 24 2006, 12:44 beer_warrior 2 DXP
Все верно, однако...
Не вижу я большой в это... May 24 2006, 13:51 defunct Цитата(beer_warrior @ May 24 2006, 16:51)... May 24 2006, 14:44 dxp Цитата(beer_warrior @ May 24 2006, 20:51)... May 25 2006, 04:33 beer_warrior ЦитатаНа мой взгляд, единственное неоспоримое преи... May 24 2006, 16:12 beer_warrior ЦитатаЯ лишь спорил с утверждением, что AVR-GCC ге... May 25 2006, 05:53 dxp Цитата(beer_warrior @ May 25 2006, 12:53)... May 25 2006, 07:23  zltigo Цитата(dxp @ May 25 2006, 10:23) ...любой... May 25 2006, 08:07 Старый Бабай Пользую GCC в связке с AVRStudio May 25 2006, 12:48 beer_warrior quote]Совсем плохо. Вывод - работать, видимо, надо... May 25 2006, 13:57 dxp Цитата(beer_warrior @ May 25 2006, 20:57)... May 26 2006, 03:58 Nanobyte Большинство проектов выполнял на ASM, из плюсов - ... May 25 2006, 14:32 beer_warrior Цитата(SasaVitebsk @ May 25 2006, 21:41) *
А каки... May 25 2006, 21:07 beer_warrior Итак наш ответ Чемб... простите DXP
IAR и WinAVR у... May 25 2006, 21:55 beer_warrior Листинги May 25 2006, 23:49 733259 А вот что у меня получилосьЦитатаavr-gcc -g -Wall ... May 26 2006, 03:03 dxp Цитата(733259 @ May 26 2006, 10:03) А вот... May 26 2006, 04:23 733259 В avr-gcc 4.0.3 - 118 байт, выше был 3.4.6 May 26 2006, 05:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|