Использую компилятор WinAvr. Пытаюсь подключить в проект библиотеку LCD дисплеев U8gLib. Компилятор ругается на недопустимый размер кода. Выкидываю шрифты (уменьшаю размер кода) компилирует, но HEX файл на выходе аж 155 Кb! В контроллер Mega328 естественно это не лезет. На буржуйских форумах пишут. что нужно поставить определенные флаги https://code.google.com/archive/p/u8glib/wikis/avr.wiki, но это для AtmelStudio. Блин, почему вообще компилятор выдает такой космический размер файла? Он же должен выбрасывать неиспользуемый код... Подскажите, кто сталкивался с u8glib, как не залезая в саму библиотеку получить скомпилированный WinAvr компилятором HEX файл до 32 Kb?
кроме того хекс файл в несколько раз больше реального размера прошивки (данные в нём прорежены чтобы можно было блокнотом открыть и не испортить и ещё добавлена служебная инфа - контрольные суммы для каждой строки...)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
кроме того хекс файл в несколько раз больше реального размера прошивки (данные в нём прорежены чтобы можно было блокнотом открыть и не испортить и ещё добавлена служебная инфа - контрольные суммы для каждой строки...)
И че делать? Ругаетсо веддь компиль: Program file is too big for the microcontroller: flash size = 32768, load address = 0, number of bytes = 54414. Точнее даже не компиль уже а симулятор.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
а что там с уровнем оптимизации? может она тупо отключена, так там такое можно получить, что и 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
Друг Кота
Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53 Сообщений: 3092 Откуда: москва, уфа
Рейтинг сообщения:0
winavr, насколько помню, просто собранный для винды avr-gcc плюс либы. Как и где вы сейчас компиляете код? Там есть какой-то дефолтный makefile вроде. Флаги в них традиционно зовутся CFLAGS и LDFLAGS для компилятора и линкера соответственно.
во-первых, на размер hex-файла смотреть смысла нет вообще: в тулчейне есть avr-size, которая показывает настоящие значения размеров задействованной памяти. кстати, почти всегда в makefile есть соответствующий вызов этой утилиты. во-вторых, настоятельно рекомендую использовать при компиляции опцию -ffunction-sections -fdata-sections, а при линковке -Wl,-gc-sections (опции указывать символ-в-символ так, как я написал, без пробелов и т.п. вольностей). в-третьих, рекомендую перейти на более свежую версию avr-gcc, так как WinAVR уже сильно-сильно устарела. в последних версиях можно добавить опцию -flto, и в итоге размер еще заметно уменьшится.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Спасибо откликнувшимся. Господа! Я знаю про эти флаги в 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: За изврат с Протеусом просьба не пинать
Вложения:
Комментарий к файлу: Флаги Screen.png [213.17 KiB]
Скачиваний: 599
Комментарий к файлу: Флаги, которые можно добавить Screen 2.png [221.9 KiB]
Скачиваний: 585
у вас же есть галочка "Advanced" на опциях компиляции, где все должно быть можно исправить вручную, есть и кнопка Add - добавьте указанные мной опции и всех делов.
Добавлено after 1 minute 25 seconds:
dds7sdd писал(а):
WinAVR-20100110 - на сколько я понимаю это последняя его версия. В нем же AVR-GCC - v4.3.3
вроде как там avr-gcc версии 3.3.2
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
О греческие боги протеуса и мои занозы в голове! Я добавлял флаги в компилятор CC но не в линкер LD! Все гуд, теперь HEX из 156 Кb превратился в 20Kb! Правда это все равно многовато, но колупать U8glib как то вообще муторно. Спасибо тебе ARV за то, что еще раз ткнул носом!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения