Именно размер HEX-файла? Или все-таки размер занятой программной памяти?kentik писал(а): размер HEX получаемый в CodeVision - 16,4 КБ
размер HEX получаемый в Atmel Studio 6 - 54,1 КБ !!!!!
AVR studio в вопросах и ответах
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
- Реклама
Re: AVR studio 4 в вопросах и ответах
ДаEngineer_Keen писал(а): Именно размер HEX-файла?

- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
Размер HEX файла не совсем верный показатель, нужно смотреть на статистику по использованной программной памяти после компиляции, вот если там разница такого порядка, то нужно разбираться в директивах компилятора и разбираться с алгоритмом.
Re: AVR studio 4 в вопросах и ответах
т.е. в Atmega64 может "влезть" и hex размером, скажем, 300 КБ?Engineer_Keen писал(а): Размер HEX файла не совсем верный показатель
Подскажите плиииз, что из них необходимые данные для статистики:Engineer_Keen писал(а):нужно смотреть на статистику по использованной программной памяти после компиляции
avr studio6
Спойлер
------ Build started: Project: ks0108GLCD, Configuration: Release AVR ------Build started.
Project "ks0108GLCD.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files\Atmel\Atmel Studio 6.0\Vs\Compiler.targets" from project "C:\Users\kentik\Documents\Atmel Studio\ks0108GLCD\ks0108GLCD\ks0108GLCD.cproj" (target "Build" depends on it):
Task "RunCompilerTask"
C:\Program Files\Atmel\Atmel Studio 6.0\make\make.exe all
make: Nothing to be done for `all'.
Done executing task "RunCompilerTask".
Task "RunOutputFileVerifyTask"
Program Memory Usage : 19696 bytes 30,1 % Full
Data Memory Usage : 23 bytes 0,0 % Full
Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "ks0108GLCD.cproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files\Atmel\Atmel Studio 6.0\Vs\Avr.common.targets" from project "C:\Users\kentik\Documents\Atmel Studio\ks0108GLCD\ks0108GLCD\ks0108GLCD.cproj" (entry point):
Done building target "Build" in project "ks0108GLCD.cproj".
Done building project "ks0108GLCD.cproj".
Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
Спойлер
hip: ATmega64Clock frequency: 8,000000 MHz
Program type: Application
Memory model: Small
Optimize for: Size
(s)printf features: int, width
(s)scanf features: int, width
Promote 'char' to 'int': Yes
'char' is unsigned: Yes
global 'const' stored in FLASH: No
8 bit enums: Yes
Enhanced core instructions: Yes
Automatic register allocation: Yes
Smart register allocation: Yes
Build: 49
9374 line(s) compiled
No errors
1 warning(s)
Bit variables size: 0 byte(s)
Data Stack area: 0x100 to 0x4FF
Data Stack size: 1024 byte(s)
Estimated Data Stack usage: 148 byte(s)
RAM Global variables area: 0x500 to 0x508
RAM Global variables size: 9 byte(s)
Hardware Stack area: 0x509 to 0x10FF
Hardware Stack size: 3063 byte(s)
Heap size: 0 byte(s)
EEPROM usage: 0 byte(s), 0,0% of EEPROM
Program size: 2990 words (5980 bytes), 9,1% of FLASH
Ну так разница все равно в ТРИ раза.
Re: AVR studio 4 в вопросах и ответах
6-я студия генерирует комплексный hex. Там не только программный код, но и прочие навороты
смотри внимательно описание в help!
смотри внимательно описание в help!
- Реклама
Re: AVR studio 4 в вопросах и ответах
Подскажите, пожалуйста, а как это отключить. мне фсякие навороты не нужны. мне б с простым сначала разобратьсяBOB51 писал(а):6-я студия генерирует комплексный hex.
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
Ну 300 может и не влезть, а 150 запросто. Дело в том, что в самом HEX файле мало того, что прошивка записана 2мя байтами за каждый байт прошивки, так там еще адреса, контрольные суммы и прочая информация.kentik писал(а):т.е. в Atmega64 может "влезть" и hex размером, скажем, 300 КБ?
Вот это верные числа, действительно разница более чем в 3 раза, возможно дело в оптимизации.kentik писал(а): я так понимаю, что это строчка "Program Memory Usage :19696 bytes 30,1 % Full" в avr studio и "Program size: 2990 words (5980 bytes), 9,1% of FLASH" в codevision.
Ну так разница все равно в ТРИ раза.
Re: AVR studio 4 в вопросах и ответах
методом тыка перепробовал все уровни оптимизации. самый экономичный - Optimize for size (-Os)Engineer_Keen писал(а):возможно дело в оптимизации.
но вот он и в три раза больше, чем CodeVision
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
По умолчанию в шестой студии оптимизация выключена. Смотрите в опциях проекта. Там два места где можно убавить размер.
Re: AVR studio 4 в вопросах и ответах
Второе место тут?vitalik_1984 писал(а):Там два места где можно убавить размер.

первое AVR/GNU C Compiler - Optimization
тут я выставил параметр -Os
Re: AVR studio 4 в вопросах и ответах
никто не подскажет в чем дело? и самое главное - как исправить?
Re: AVR studio 4 в вопросах и ответах
"Garbage collect..." попробуй включить.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: AVR studio 4 в вопросах и ответах
изменений нольKavka писал(а):"Garbage collect..." попробуй включить.
а вот галочка напротив Relax Branches (-mrelax) дала уменьшение обьема на 0,4%
Re: AVR studio 4 в вопросах и ответах
Если файлов в проекте много, то может между файлами не совсем оптимально собирать.
Обычно это можно улучшить через компиляцию за "один раз" с ключиками -fwhole-program и --combine для GCC. Как это в студии сделать - не разбирался.
Используется-ли в проекте printf или математика с плавающей точкой?
Обычно это можно улучшить через компиляцию за "один раз" с ключиками -fwhole-program и --combine для GCC. Как это в студии сделать - не разбирался.
Используется-ли в проекте printf или математика с плавающей точкой?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: AVR studio 4 в вопросах и ответах
Различие в размере скорее всего из-за библиотек. Их обильное использование по каждому случаю не только упрощает программирование, но и "раздувает" код.
Re: AVR studio 4 в вопросах и ответах
мдяяя проблема осталась не решенной.
Появилась еще одна.
Атмега фьюзами поставлена на 8 МГц внутр. в протеусе так же стоит. ставлю задержку _delay_ms(1000);
мигаю светодиодом для проверки - мигает чаще чем 1 раз в секунду. куда смотреть?
Появилась еще одна.
Атмега фьюзами поставлена на 8 МГц внутр. в протеусе так же стоит. ставлю задержку _delay_ms(1000);
мигаю светодиодом для проверки - мигает чаще чем 1 раз в секунду. куда смотреть?
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
В сторону предупреждений компилятора. Возможно просто не указали частоту камня для библиотеки delay.h и она осталась по умолчанию - 1 мгц сообщив при этом в предупреждении. Как раз в 8 раз быстрее моргать будет.kentik писал(а): в протеусе так же стоит. ставлю задержку _delay_ms(1000);
мигаю светодиодом для проверки - мигает чаще чем 1 раз в секунду. куда смотреть?
Перед подключением библиотеки пропишите
Код: Выделить всё
#define F_CPU 8000000UL В шестой версии вкладка Toolchain/GNU C compiler/ simbols нажимаем + над окошком с подписьюn" Defined simbols (-D)" , пишем F_CPU=8000000UL b и жмем ОК.
Хотя мне больше нравится первый вариант.
Re: AVR studio 4 в вопросах и ответах
мой вопрос наверно глупый, но в обучалку вроде не совсем верно помещать - относится именно к AVR Studio
и не нашел темы про AVR Studio 6, наверно сюда правильно будет поместить
столкнулся к непонятным мне глюком, никак не могу понять его причину
Есть такой кусок кода на Си по мапингу DS18B20 по двум массивам - в configSensorIDs прописаны 64 битные ID константами, а в gSensorIDs - теже ID но считанные при работе программы с 1-wire.
как только я снимаю комментарии под номерами 1 и 3 у меня перестает работать считывание температуры с датчиков
при этом в обоих вариантах (с закоментированными строками или нет) вызываемые аргументы теже
не понимаю как строки 1 и 2 где участвует только локальная переменная ij может влиять на дальнейшее выполнение программы?
и не нашел темы про AVR Studio 6, наверно сюда правильно будет поместить
столкнулся к непонятным мне глюком, никак не могу понять его причину
Есть такой кусок кода на Си по мапингу DS18B20 по двум массивам - в configSensorIDs прописаны 64 битные ID константами, а в gSensorIDs - теже ID но считанные при работе программы с 1-wire.
Код: Выделить всё
// мапинг сенсоров
// сначала инициализируем пустой мапинг
uint8_t i;
for(i=0; i<sizeof(sensorsMap); i++) { sensorsMap[i] = TEMP_SENSOR_UNDEF; }
// далее делаем поиск среди настроенных сенсоров
for(i=0; i<sizeof(configSensorIDs); i++) {
// делаем поиск среди обнаруженных сенсоров
for(uint8_t j=0; j<sizeof(gSensorIDs); j++) {
uint8_t ij = 0;
//1 for(ij=0; ij<8; ij++) {
//2 if(configSensorIDs[i][k] != gSensorIDs[j][k]) { break; }
//3 }
if(ij == 8) {
// сюда попадаем если все байты совпали
sensorsMap[i] = j;
break;
}
}
}как только я снимаю комментарии под номерами 1 и 3 у меня перестает работать считывание температуры с датчиков
при этом в обоих вариантах (с закоментированными строками или нет) вызываемые аргументы теже
не понимаю как строки 1 и 2 где участвует только локальная переменная ij может влиять на дальнейшее выполнение программы?
Re: AVR studio 4 в вопросах и ответах
сам спросил, сам отвечу
похоже я обманулся в том, что возвращает sizeof
я создал массивы так:
и предполагал, что для обоих массивов sizeof вернет значение MAXSENSORS (7), а похоже, что это не так и я просто залезаю за пределы массива
похоже я обманулся в том, что возвращает sizeof
я создал массивы так:
Код: Выделить всё
uint8_t gSensorIDs[MAXSENSORS][OW_ROMCODE_SIZE]; // содержит 64бит идентификаторы датчиков температуры в произвоьном порядке (определенном при поиске)
uint8_t sensorsMap[MAXSENSORS]; // содержит связь номера датчика в enum sensors с номером идентификатора в массиве gSensorsID


