madame_vong 0 27 декабря, 2007 Опубликовано 27 декабря, 2007 · Жалоба Всем привет! у меня такая проблема. Есть программа для микроконтроллера atmega8, Написана на Си,файл прошивки после AVRStudio+WinAVR занимает 11 кб,а память мк-8 кб.Можно ли както по хитрому прошить, не урезая код? Спасибо заранее! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 27 декабря, 2007 Опубликовано 27 декабря, 2007 · Жалоба Всем привет! у меня такая проблема. Есть программа для микроконтроллера atmega8, Написана на Си,файл прошивки после AVRStudio+WinAVR занимает 11 кб,а память мк-8 кб.Можно ли както по хитрому прошить, не урезая код? А какое рассширение у Вашей прошивки ? Если .hex, то Ваши 11Кб легко влезут в 8 ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
madame_vong 0 27 декабря, 2007 Опубликовано 27 декабря, 2007 · Жалоба А какое рассширение у Вашей прошивки ? Если .hex, то Ваши 11Кб легко влезут в 8 ;) Да.именно *.hex не влезают. может это тогда программатор глючит?:(((тогда проверю завтра поменьше программу собссно,а почему должны влезть? ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 27 декабря, 2007 Опубликовано 27 декабря, 2007 · Жалоба Да.именно *.hex не влезают. может это тогда программатор глючит?:(((тогда проверю завтра поменьше программу собссно,а почему должны влезть? ;) Потому что в hex файле каждый байт данных представлен двумя символами, которые занимают 1 байт каждый. Значит, hex файл размером 11К байт содержит не более 5.5К байт данных. Кроме того, память программ у AVR имеет размер не байт, а больше. Значит, hex файл размером 11К байт должен уложиться примерно в 4К слов памяти программ. WinAVR - это GCC, а гнутый С всегда давал довольно "рыхлый" скомпилированный код, раза в полтора-два больше по объему чем коммерческие компиляторы. Для начала попробуйте скомпилировать на WinAVR с максимальным уровнем оптимизации -O3. Если не получится, переходите на IAR, вряд ли кто-то делает С компилятор для AVR лучше них. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
umup 0 27 декабря, 2007 Опубликовано 27 декабря, 2007 · Жалоба Для начала попробуйте скомпилировать на WinAVR с максимальным уровнем оптимизации -O3 лучше -Os Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 27 декабря, 2007 Опубликовано 27 декабря, 2007 · Жалоба Для начала попробуйте скомпилировать на WinAVR с максимальным уровнем оптимизации -O3. НИ В КОЕМ СЛУЧАЕ! Это рекомендация годится только для форисрования перехода на IAR :-) GCC с опцей -O3 как минимум - инлайнит всё что можно насколько можно, т.е. даже не объявленные как inline и довольно крупные функции с очень большой степенью вероятности будут вставлены по месту - разворачивает циклы - если цикл с известным на момнет компиляции числом проходов, то при небольшом числе проходов вообще может всё в линию вытянуть. При неизвестном - запросто сгенерирует два тела цикла подряд, проверит на чётность предел, отдельно для нечётного выполнит одно тело, а счётчик для удвоенного тела поделит на два. Т.е. девиз ключа -O3 - "быстродействие любой ценой, размер не играет значения". Для AVR, как уже было сказано, в 98% случаев оптимальный результат с ключиком -Os. Полезно дать ключик --relax линкеру (-Wl,--relax если для линковки вызывается gcc, а не ld). Линкер при этом делает анализ кода, заменяет длинные переходы/вызовы на короткие и комбинацию call/ret на jmp. При желании ещё ужать размер за счёт скорости к -Os можно добавить -mcall-prologues. p.s. IAR действительно даёт более компактный код, но не в два раза точно. И в полтора врядли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 27 декабря, 2007 Опубликовано 27 декабря, 2007 · Жалоба WinAVR - это GCC, а гнутый С всегда давал довольно "рыхлый" скомпилированный код, раза в полтора-два больше по объему чем коммерческие компиляторы. Для начала попробуйте скомпилировать на WinAVR с максимальным уровнем оптимизации -O3. Если не получится, переходите на IAR, вряд ли кто-то делает С компилятор для AVR лучше них.А посыпать голову пеплом не боитесь ? Если что, примеры перешлем... (эта я насчет рыхлости кода...) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 28 декабря, 2007 Опубликовано 28 декабря, 2007 · Жалоба Для AVR, как уже было сказано, в 98% случаев оптимальный результат с ключиком -Os. А, значит, запамятовал. Давно уже с GCC дел не имел, да и соприкасался очень бегло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться