Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

U8glib и WinAVR ругается на размер

Ср май 30, 2018 12:43:14

Приветствую всех!

Использую компилятор WinAvr. Пытаюсь подключить в проект библиотеку LCD дисплеев U8gLib. Компилятор ругается на недопустимый размер кода. Выкидываю шрифты (уменьшаю размер кода) компилирует, но HEX файл на выходе аж 155 Кb! В контроллер Mega328 естественно это не лезет.
На буржуйских форумах пишут. что нужно поставить определенные флаги https://code.google.com/archive/p/u8glib/wikis/avr.wiki, но это для AtmelStudio.
Блин, почему вообще компилятор выдает такой космический размер файла? Он же должен выбрасывать неиспользуемый код...
Подскажите, кто сталкивался с u8glib, как не залезая в саму библиотеку получить скомпилированный WinAvr компилятором HEX файл до 32 Kb?

Re: U8glib и WinAVR ругается на размер

Ср май 30, 2018 12:51:47

Вместо Debug поставить Relisе не помогает?

Re: U8glib и WinAVR ругается на размер

Ср май 30, 2018 13:04:47

кроме того хекс файл в несколько раз больше реального размера прошивки (данные в нём прорежены чтобы можно было блокнотом открыть и не испортить и ещё добавлена служебная инфа - контрольные суммы для каждой строки...)

Re: U8glib и WinAVR ругается на размер

Ср май 30, 2018 13:09:08

Вместо Debug поставить Relisе не помогает?

Нет - точно такой же размер...156Kb...

Добавлено after 3 minutes 5 seconds:
кроме того хекс файл в несколько раз больше реального размера прошивки (данные в нём прорежены чтобы можно было блокнотом открыть и не испортить и ещё добавлена служебная инфа - контрольные суммы для каждой строки...)

И че делать? Ругаетсо веддь компиль: Program file is too big for the microcontroller: flash size = 32768, load address = 0, number of bytes = 54414.
Точнее даже не компиль уже а симулятор.

Re: U8glib и WinAVR ругается на размер

Ср май 30, 2018 13:14:03

а что там с уровнем оптимизации?
может она тупо отключена, так там такое можно получить, что и WOT будет меньше...

ЗЫ. на бесплатных или условно-платных версиях после 30 дней так и происходит.
Последний раз редактировалось pasha_zv Ср май 30, 2018 13:18:46, всего редактировалось 1 раз.

Re: U8glib и WinAVR ругается на размер

Ср май 30, 2018 13:31:56

а что там с уровнем оптимизации?
может она тупо отключена, так там такое можно получить, что и WOT будет меньше...

Стоит 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 ругается на размер

Ср май 30, 2018 14:40:26

winavr, насколько помню, просто собранный для винды avr-gcc плюс либы. Как и где вы сейчас компиляете код?
Там есть какой-то дефолтный makefile вроде. Флаги в них традиционно зовутся CFLAGS и LDFLAGS для компилятора и линкера соответственно.

Re: U8glib и WinAVR ругается на размер

Ср май 30, 2018 20:03:36

во-первых, на размер hex-файла смотреть смысла нет вообще: в тулчейне есть avr-size, которая показывает настоящие значения размеров задействованной памяти. кстати, почти всегда в makefile есть соответствующий вызов этой утилиты.
во-вторых, настоятельно рекомендую использовать при компиляции опцию -ffunction-sections -fdata-sections, а при линковке -Wl,-gc-sections (опции указывать символ-в-символ так, как я написал, без пробелов и т.п. вольностей).
в-третьих, рекомендую перейти на более свежую версию avr-gcc, так как WinAVR уже сильно-сильно устарела. в последних версиях можно добавить опцию -flto, и в итоге размер еще заметно уменьшится.

Re: U8glib и WinAVR ругается на размер

Чт май 31, 2018 09:25:40

Спасибо откликнувшимся. Господа! Я знаю про эти флаги в 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: За изврат с Протеусом просьба не пинать :oops:
Вложения
Screen.png
Флаги
(213.17 KiB) Скачиваний: 598
Screen 2.png
Флаги, которые можно добавить
(221.9 KiB) Скачиваний: 585

Re: U8glib и WinAVR ругается на размер

Чт май 31, 2018 09:35:28

dds7sdd писал(а):не могу понять как скормить компилятору
у вас же есть галочка "Advanced" на опциях компиляции, где все должно быть можно исправить вручную, есть и кнопка Add - добавьте указанные мной опции и всех делов.

Добавлено after 1 minute 25 seconds:
dds7sdd писал(а):WinAVR-20100110 - на сколько я понимаю это последняя его версия.
В нем же AVR-GCC - v4.3.3
вроде как там avr-gcc версии 3.3.2

Re: U8glib и WinAVR ругается на размер

Чт май 31, 2018 10:14:51

О греческие боги протеуса и мои занозы в голове!
Я добавлял флаги в компилятор CC но не в линкер LD! :facepalm:
Все гуд, теперь HEX из 156 Кb превратился в 20Kb! :)
Правда это все равно многовато, но колупать U8glib как то вообще муторно.
Спасибо тебе ARV за то, что еще раз ткнул носом! :beer:

Re: U8glib и WinAVR ругается на размер

Чт май 31, 2018 10:29:12

dds7sdd писал(а):теперь HEX из 156 Кb превратился в 20Kb!
ткну носом еще раз: размер HEX не имеет значения, смотрите, что покажет avr-size
Ответить