U8glib и WinAVR ругается на размер
U8glib и WinAVR ругается на размер
Приветствую всех!
Использую компилятор WinAvr. Пытаюсь подключить в проект библиотеку LCD дисплеев U8gLib. Компилятор ругается на недопустимый размер кода. Выкидываю шрифты (уменьшаю размер кода) компилирует, но HEX файл на выходе аж 155 Кb! В контроллер Mega328 естественно это не лезет.
На буржуйских форумах пишут. что нужно поставить определенные флаги https://code.google.com/archive/p/u8glib/wikis/avr.wiki, но это для AtmelStudio.
Блин, почему вообще компилятор выдает такой космический размер файла? Он же должен выбрасывать неиспользуемый код...
Подскажите, кто сталкивался с u8glib, как не залезая в саму библиотеку получить скомпилированный WinAvr компилятором HEX файл до 32 Kb?
Использую компилятор WinAvr. Пытаюсь подключить в проект библиотеку LCD дисплеев U8gLib. Компилятор ругается на недопустимый размер кода. Выкидываю шрифты (уменьшаю размер кода) компилирует, но HEX файл на выходе аж 155 Кb! В контроллер Mega328 естественно это не лезет.
На буржуйских форумах пишут. что нужно поставить определенные флаги https://code.google.com/archive/p/u8glib/wikis/avr.wiki, но это для AtmelStudio.
Блин, почему вообще компилятор выдает такой космический размер файла? Он же должен выбрасывать неиспользуемый код...
Подскажите, кто сталкивался с u8glib, как не залезая в саму библиотеку получить скомпилированный WinAvr компилятором HEX файл до 32 Kb?
- Реклама
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: U8glib и WinAVR ругается на размер
кроме того хекс файл в несколько раз больше реального размера прошивки (данные в нём прорежены чтобы можно было блокнотом открыть и не испортить и ещё добавлена служебная инфа - контрольные суммы для каждой строки...)
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: U8glib и WinAVR ругается на размер
[uquote="pyzhman",url="/forum/viewtopic.php?p=3388832#p3388832"]Вместо Debug поставить Relisе не помогает?[/uquote]
Нет - точно такой же размер...156Kb...
Добавлено after 3 minutes 5 seconds:
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3388844#p3388844"]кроме того хекс файл в несколько раз больше реального размера прошивки (данные в нём прорежены чтобы можно было блокнотом открыть и не испортить и ещё добавлена служебная инфа - контрольные суммы для каждой строки...)[/uquote]
И че делать? Ругаетсо веддь компиль: Program file is too big for the microcontroller: flash size = 32768, load address = 0, number of bytes = 54414.
Точнее даже не компиль уже а симулятор.
Нет - точно такой же размер...156Kb...
Добавлено after 3 minutes 5 seconds:
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3388844#p3388844"]кроме того хекс файл в несколько раз больше реального размера прошивки (данные в нём прорежены чтобы можно было блокнотом открыть и не испортить и ещё добавлена служебная инфа - контрольные суммы для каждой строки...)[/uquote]
И че делать? Ругаетсо веддь компиль: Program file is too big for the microcontroller: flash size = 32768, load address = 0, number of bytes = 54414.
Точнее даже не компиль уже а симулятор.
- pasha_zv
- Мучитель микросхем
- Сообщения: 460
- Зарегистрирован: Пт фев 17, 2017 11:18:07
- Откуда: Ставрополь-Донское
Re: U8glib и WinAVR ругается на размер
а что там с уровнем оптимизации?
может она тупо отключена, так там такое можно получить, что и WOT будет меньше...
ЗЫ. на бесплатных или условно-платных версиях после 30 дней так и происходит.
может она тупо отключена, так там такое можно получить, что и WOT будет меньше...
ЗЫ. на бесплатных или условно-платных версиях после 30 дней так и происходит.
Последний раз редактировалось pasha_zv Ср май 30, 2018 13:18:46, всего редактировалось 1 раз.
LIVE - EVIL
- Реклама
Re: U8glib и WinAVR ругается на размер
[uquote="pasha_zv",url="/forum/viewtopic.php?p=3388851#p3388851"]а что там с уровнем оптимизации?
может она тупо отключена, так там такое можно получить, что и WOT будет меньше...[/uquote]
Стоит O1, Пробовал все. Os в т. ч....
Добавлено after 3 minutes 11 seconds:
С O1 - 164 кB, O3 - 244 Кb, Os - 156кB....
Добавлено after 10 minutes 41 second:
Я так понимаю проблема с Make файлом и флагами, но как его прикрутить (как внешний) к avr-gcc не понятно.
Help камрады! Задолбался я уже с этой либой и winavr. Хоть на студию или IAR переходи.
может она тупо отключена, так там такое можно получить, что и WOT будет меньше...[/uquote]
Стоит O1, Пробовал все. Os в т. ч....
Добавлено after 3 minutes 11 seconds:
С O1 - 164 кB, O3 - 244 Кb, Os - 156кB....
Добавлено after 10 minutes 41 second:
Я так понимаю проблема с Make файлом и флагами, но как его прикрутить (как внешний) к avr-gcc не понятно.
Help камрады! Задолбался я уже с этой либой и winavr. Хоть на студию или IAR переходи.
Re: U8glib и WinAVR ругается на размер
winavr, насколько помню, просто собранный для винды avr-gcc плюс либы. Как и где вы сейчас компиляете код?
Там есть какой-то дефолтный makefile вроде. Флаги в них традиционно зовутся CFLAGS и LDFLAGS для компилятора и линкера соответственно.
Там есть какой-то дефолтный makefile вроде. Флаги в них традиционно зовутся CFLAGS и LDFLAGS для компилятора и линкера соответственно.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18635
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: U8glib и WinAVR ругается на размер
во-первых, на размер hex-файла смотреть смысла нет вообще: в тулчейне есть avr-size, которая показывает настоящие значения размеров задействованной памяти. кстати, почти всегда в makefile есть соответствующий вызов этой утилиты.
во-вторых, настоятельно рекомендую использовать при компиляции опцию -ffunction-sections -fdata-sections, а при линковке -Wl,-gc-sections (опции указывать символ-в-символ так, как я написал, без пробелов и т.п. вольностей).
в-третьих, рекомендую перейти на более свежую версию avr-gcc, так как WinAVR уже сильно-сильно устарела. в последних версиях можно добавить опцию -flto, и в итоге размер еще заметно уменьшится.
во-вторых, настоятельно рекомендую использовать при компиляции опцию -ffunction-sections -fdata-sections, а при линковке -Wl,-gc-sections (опции указывать символ-в-символ так, как я написал, без пробелов и т.п. вольностей).
в-третьих, рекомендую перейти на более свежую версию avr-gcc, так как WinAVR уже сильно-сильно устарела. в последних версиях можно добавить опцию -flto, и в итоге размер еще заметно уменьшится.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: U8glib и WinAVR ругается на размер
Спасибо откликнувшимся. Господа! Я знаю про эти флаги в make file, но к сожалению, заноза сидит в моей голове и я хочу использовать чистый Си да еще в среде Proteus 8! В нем, как раз, напрямую качается WinAVR, в нем же и AVR-GCC. Протеус крякнутый v8.4.
WinAVR-20100110 - на сколько я понимаю это последняя его версия.
В нем же AVR-GCC - v4.3.3.
Вся проблема в том, что я не могу отредактировать Make file, т. к. он генерится при компиляции автоматически и все мои изменения удаляются. Шаблон Make file изменить у меня тоже не удалось, а функции "Use external make file" в чудном Протеусе нет...
Более того, я не могу понять как добавить эти флаги напрямую из опций проекта и конфигурации компилятора. Я просто не могу их добавить. Screen-ы прилагаю.
Есть в WinAVR утилита Mfile, где можно сгенерить Make file, но как я уже говорил - не могу понять как скормить компилятору внешний Make file. Сейчас думаю как отредактировать шаблон Make File по которому генерит компилятор...
P\S: За изврат с Протеусом просьба не пинать
WinAVR-20100110 - на сколько я понимаю это последняя его версия.
В нем же AVR-GCC - v4.3.3.
Вся проблема в том, что я не могу отредактировать Make file, т. к. он генерится при компиляции автоматически и все мои изменения удаляются. Шаблон Make file изменить у меня тоже не удалось, а функции "Use external make file" в чудном Протеусе нет...
Более того, я не могу понять как добавить эти флаги напрямую из опций проекта и конфигурации компилятора. Я просто не могу их добавить. Screen-ы прилагаю.
Есть в WinAVR утилита Mfile, где можно сгенерить Make file, но как я уже говорил - не могу понять как скормить компилятору внешний Make file. Сейчас думаю как отредактировать шаблон Make File по которому генерит компилятор...
P\S: За изврат с Протеусом просьба не пинать
- Вложения
-
- Screen.png
- Флаги
- (213.17 КБ) 611 скачиваний
-
- Screen 2.png
- Флаги, которые можно добавить
- (221.9 КБ) 603 скачивания
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18635
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: U8glib и WinAVR ругается на размер
у вас же есть галочка "Advanced" на опциях компиляции, где все должно быть можно исправить вручную, есть и кнопка Add - добавьте указанные мной опции и всех делов.dds7sdd писал(а):не могу понять как скормить компилятору
Добавлено after 1 minute 25 seconds:
вроде как там avr-gcc версии 3.3.2dds7sdd писал(а):WinAVR-20100110 - на сколько я понимаю это последняя его версия.
В нем же AVR-GCC - v4.3.3
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: U8glib и WinAVR ругается на размер
О греческие боги протеуса и мои занозы в голове!
Я добавлял флаги в компилятор CC но не в линкер LD!
Все гуд, теперь HEX из 156 Кb превратился в 20Kb!
Правда это все равно многовато, но колупать U8glib как то вообще муторно.
Спасибо тебе ARV за то, что еще раз ткнул носом!
Я добавлял флаги в компилятор CC но не в линкер LD!
Все гуд, теперь HEX из 156 Кb превратился в 20Kb!
Правда это все равно многовато, но колупать U8glib как то вообще муторно.
Спасибо тебе ARV за то, что еще раз ткнул носом!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18635
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: U8glib и WinAVR ругается на размер
ткну носом еще раз: размер HEX не имеет значения, смотрите, что покажет avr-sizedds7sdd писал(а):теперь HEX из 156 Кb превратился в 20Kb!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


