AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AVR studio 4 в вопросах и ответах

Сообщение Engineer_Keen »

kentik писал(а): размер HEX получаемый в CodeVision - 16,4 КБ
размер HEX получаемый в Atmel Studio 6 - 54,1 КБ !!!!!
Именно размер HEX-файла? Или все-таки размер занятой программной памяти?
Реклама
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: AVR studio 4 в вопросах и ответах

Сообщение kentik »

Engineer_Keen писал(а): Именно размер HEX-файла?
Да

Изображение
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AVR studio 4 в вопросах и ответах

Сообщение Engineer_Keen »

Размер HEX файла не совсем верный показатель, нужно смотреть на статистику по использованной программной памяти после компиляции, вот если там разница такого порядка, то нужно разбираться в директивах компилятора и разбираться с алгоритмом.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: AVR studio 4 в вопросах и ответах

Сообщение kentik »

Engineer_Keen писал(а): Размер HEX файла не совсем верный показатель
т.е. в Atmega64 может "влезть" и hex размером, скажем, 300 КБ?
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 ==========
Codevision:
Спойлерhip: ATmega64
Clock 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
я так понимаю, что это строчка "Program Memory Usage :19696 bytes 30,1 % Full" в avr studio и "Program size: 2990 words (5980 bytes), 9,1% of FLASH" в codevision.
Ну так разница все равно в ТРИ раза.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15558
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: AVR studio 4 в вопросах и ответах

Сообщение BOB51 »

6-я студия генерирует комплексный hex. Там не только программный код, но и прочие навороты
смотри внимательно описание в help! :cry:
Реклама
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: AVR studio 4 в вопросах и ответах

Сообщение kentik »

BOB51 писал(а):6-я студия генерирует комплексный hex.
Подскажите, пожалуйста, а как это отключить. мне фсякие навороты не нужны. мне б с простым сначала разобраться
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AVR studio 4 в вопросах и ответах

Сообщение Engineer_Keen »

kentik писал(а):т.е. в Atmega64 может "влезть" и hex размером, скажем, 300 КБ?
Ну 300 может и не влезть, а 150 запросто. Дело в том, что в самом HEX файле мало того, что прошивка записана 2мя байтами за каждый байт прошивки, так там еще адреса, контрольные суммы и прочая информация.
kentik писал(а): я так понимаю, что это строчка "Program Memory Usage :19696 bytes 30,1 % Full" в avr studio и "Program size: 2990 words (5980 bytes), 9,1% of FLASH" в codevision.
Ну так разница все равно в ТРИ раза.
Вот это верные числа, действительно разница более чем в 3 раза, возможно дело в оптимизации.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: AVR studio 4 в вопросах и ответах

Сообщение kentik »

Engineer_Keen писал(а):возможно дело в оптимизации.
методом тыка перепробовал все уровни оптимизации. самый экономичный - Optimize for size (-Os)
но вот он и в три раза больше, чем CodeVision
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение vitalik_1984 »

По умолчанию в шестой студии оптимизация выключена. Смотрите в опциях проекта. Там два места где можно убавить размер.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: AVR studio 4 в вопросах и ответах

Сообщение kentik »

vitalik_1984 писал(а):Там два места где можно убавить размер.
Второе место тут?
Изображение

первое AVR/GNU C Compiler - Optimization
тут я выставил параметр -Os
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: AVR studio 4 в вопросах и ответах

Сообщение kentik »

никто не подскажет в чем дело? и самое главное - как исправить?
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: AVR studio 4 в вопросах и ответах

Сообщение Kavka »

"Garbage collect..." попробуй включить.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: AVR studio 4 в вопросах и ответах

Сообщение kentik »

Kavka писал(а):"Garbage collect..." попробуй включить.
изменений ноль

а вот галочка напротив Relax Branches (-mrelax) дала уменьшение обьема на 0,4%
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: AVR studio 4 в вопросах и ответах

Сообщение Kavka »

Если файлов в проекте много, то может между файлами не совсем оптимально собирать.
Обычно это можно улучшить через компиляцию за "один раз" с ключиками -fwhole-program и --combine для GCC. Как это в студии сделать - не разбирался.
Используется-ли в проекте printf или математика с плавающей точкой?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: AVR studio 4 в вопросах и ответах

Сообщение ChipKiller »

Различие в размере скорее всего из-за библиотек. Их обильное использование по каждому случаю не только упрощает программирование, но и "раздувает" код.
kentik
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Re: AVR studio 4 в вопросах и ответах

Сообщение kentik »

мдяяя проблема осталась не решенной.
Появилась еще одна.

Атмега фьюзами поставлена на 8 МГц внутр. в протеусе так же стоит. ставлю задержку _delay_ms(1000);
мигаю светодиодом для проверки - мигает чаще чем 1 раз в секунду. куда смотреть?
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение pyzhman »

В сторону испытания на железе.
Docendo discimus
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение vitalik_1984 »

kentik писал(а): в протеусе так же стоит. ставлю задержку _delay_ms(1000);
мигаю светодиодом для проверки - мигает чаще чем 1 раз в секунду. куда смотреть?
В сторону предупреждений компилятора. Возможно просто не указали частоту камня для библиотеки delay.h и она осталась по умолчанию - 1 мгц сообщив при этом в предупреждении. Как раз в 8 раз быстрее моргать будет.
Перед подключением библиотеки пропишите

Код: Выделить всё

#define F_CPU 8000000UL 
Либо альтернативный вариант -Для четверки в опциях проекта во вкладке пользовательские параметры внести такую строку -DF_CPU=8000000UL

В шестой версии вкладка Toolchain/GNU C compiler/ simbols нажимаем + над окошком с подписьюn" Defined simbols (-D)" , пишем F_CPU=8000000UL b и жмем ОК.

Хотя мне больше нравится первый вариант.
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: AVR studio 4 в вопросах и ответах

Сообщение axillent »

мой вопрос наверно глупый, но в обучалку вроде не совсем верно помещать - относится именно к AVR Studio
и не нашел темы про 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 может влиять на дальнейшее выполнение программы?
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: AVR studio 4 в вопросах и ответах

Сообщение axillent »

сам спросил, сам отвечу
похоже я обманулся в том, что возвращает sizeof
я создал массивы так:

Код: Выделить всё

uint8_t gSensorIDs[MAXSENSORS][OW_ROMCODE_SIZE]; // содержит 64бит идентификаторы датчиков температуры в произвоьном порядке (определенном при поиске)
uint8_t sensorsMap[MAXSENSORS];					 // содержит связь номера датчика в enum sensors с номером идентификатора в массиве gSensorsID
и предполагал, что для обоих массивов sizeof вернет значение MAXSENSORS (7), а похоже, что это не так и я просто залезаю за пределы массива
Ответить

Вернуться в «AVR»