Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 29.12.2008, 00:42  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Оптимизация в AVR GCC

Товарищи!
Кто знает что-нибудь про оптимизацию в AVR GCC, её особенности (какие именно части кода она гробит, как отключать её для конкретных кусков кода, etc.)
Подскажите пожалуйста, а то есть код, рабочий без оптимизации, и никуда не годящийся с.
А оптимизировать надо...
Реклама:
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Непрочитано 29.12.2008, 03:24  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

Отключать ее для участков кода нельзя, только для файла целиком. Гробит она участки кода, которые написаны "кривыми" ручками. Вы бы примерчик выложили, который перестает работать, тогда будет о чем поговорить Ну и версию компилятора сообщите.
Кстати - обычно программы с отключенной оптимизацией в кристалле не работают. Связано с жесткими времянками в некоторых местах - запись в EEPROM, работа с WDT и т.д. Так что разобраться с оптимизатором придется.
kison вне форума  
Непрочитано 29.12.2008, 13:58  
_kp
Прохожий
 
Регистрация: 08.10.2007
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
_kp на пути к лучшему
По умолчанию

У начинающих работать с gcc(да и с любым другим тоже), самая распространенная проблема с оптимизацией заключается в том, что какая то переменная изменяется в прерывании, а читается в фоновой части.
Вот ту переменную и надо объявить volatile .
_kp вне форума  
Непрочитано 29.12.2008, 17:16  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию

На ручки попрошу не наезжать! Они хоть у меня и не идеальные, но радиус кривизны в соответствии с ГОСТом...
Я не совсем новичок, и подобные штуки насчет прерываний учитываю.
Код вобще без переменных и прерываний - святая простота - драйвер к LCD. Думаю, все дело в гцц-шных задержках (файл delay.h). Но в том и странность, ведь именно из этого файла настоятельно рекомендуют оптимизацию включить...
Юзаю GCC 4.3.0 (из пакета WinAVR b20080610).
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Непрочитано 30.12.2008, 10:56  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

Сообщение от alberio
На ручки попрошу не наезжать! Они хоть у меня и не идеальные, но радиус кривизны в соответствии с ГОСТом...
Я не совсем новичок, и подобные штуки насчет прерываний учитываю.
Ну так пример в студию. Как обычно - телепатов нет.
Сообщение от alberio
Код вобще без переменных и прерываний - святая простота - драйвер к LCD. Думаю, все дело в гцц-шных задержках (файл delay.h). Но в том и странность, ведь именно из этого файла настоятельно рекомендуют оптимизацию включить...
Юзаю GCC 4.3.0 (из пакета WinAVR b20080610).
Код без переменных трудно представить. А для задержек оптимизация необходима, иначе константы будут рассчитываться прямо в функции задержки. А там плавучка. Вместо 10 микросекунд запросто получить 10 миллисекунд.
kison вне форума  
Непрочитано 30.12.2008, 11:39  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию

Вуеля.

Прикрепленный файл: 8446624.rar
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Непрочитано 30.12.2008, 22:21  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

Вы бы еще заголовочные файлы приложили. Иначе неясности остаются - что такое Enabler() и где ее искать. Вообще загадочный у Вас lcd.h Там содержится много такого, без чего компиляция невозможна. Кстати, что за индикатор? Уж больно простая инициализация, ни разу такой не видел.
kison вне форума  
Непрочитано 01.01.2009, 20:33  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию

Сообщение от kison
Вы бы еще заголовочные файлы приложили. Иначе неясности остаются - что такое Enabler() и где ее искать. Вообще загадочный у Вас lcd.h Там содержится много такого, без чего компиляция невозможна. Кстати, что за индикатор? Уж больно простая инициализация, ни разу такой не видел.
Индикатор FDCC2004, но всё это не имеет отношения к вопросу об оптимизации...

Прикрепленный файл: 8297469.rar
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Непрочитано 01.01.2009, 23:14  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

К вопросу об оптимизации не имеет. Просто интересно было, что за индикатор сразу без инициализации готов к работе.
Кстати, Вы сами пробовали собрать то, что выкладываете? В Вашем примере ни инклюдов с задержками не включено, ни структуры не определены, которые Вы потом в макросах используете.
А от того КАК они определены очень многое зависит.
Откомпилировал я Вашу программу. Никаких проблем с задержками не обнаружено. Пример - оптимизация Os, 16МГц
Код:
17:        Enabler();
+00000044:   9AAA        SBI     0x15,2           Set bit in I/O register
---- f:WinAVRavrincludeutildelay_basic.h -----------------------------------------------------
83:       	__asm__ volatile (
+00000045:   E09A        LDI     R25,0x0A         Load immediate
+00000046:   2F89        MOV     R24,R25          Copy register
+00000047:   958A        DEC     R24              Decrement
+00000048:   F7F1        BRNE    PC-0x01          Branch if not equal
+00000049:   98AA        CBI     0x15,2           Clear bit in I/O register
Вы проблему поподробней опишите. Неужели с отключенной оптимизацией работает?
Я не просто так о индикаторе спрашивал - у Вас в инициализации LCD_DATA=0b0010; идет как команда.
А LCD_putchar(0b00101000); уже как данные.
kison вне форума  
Непрочитано 02.01.2009, 01:10  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию

Прошу прощения, не тот архив присойденил.

Прикрепленный файл: 3095810.rar
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация программы - бортовой компьютер на PIC16F73 Hellka Микроконтроллеры, АЦП, память и т.д 6 06.09.2010 17:04
gcc, iar, code vision AVR ? schotki Микроконтроллеры, АЦП, память и т.д 48 26.05.2009 20:15
AVR+GCC+jacOS DenisLeonidovich Микроконтроллеры, АЦП, память и т.д 3 24.07.2007 14:24
GCC AVR не работает printf("Hello word") Kabron Proteus, KiCAD и другие ECAD 8 03.03.2007 14:33
GNU GCC AVR вопрос по переменным.. Mozart Микроконтроллеры, АЦП, память и т.д 3 09.02.2007 20:00


Часовой пояс GMT +4, время: 00:51.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot