Страница 1 из 1

Копмиляция исходника

Добавлено: Пт июл 22, 2016 09:02:06
kioka
Здравствуйте, подскажите пожалуйста есть ли простой способ, без изучения языков программирования, как из исходника iar скомпилировать файл для прошивки тини 13

Re: Копмиляция исходника

Добавлено: Пт июл 22, 2016 09:14:21
ARV
думаю, что такой способ есть.
надо просить кого-то из форумчан скомпилировать ваш исходник.
добрых людей много...

Re: Копмиляция исходника

Добавлено: Пт июл 22, 2016 10:14:10
bob1
Исходник то где?

Re: Копмиляция исходника

Добавлено: Сб июл 23, 2016 10:50:38
kioka
вот он

Re: Копмиляция исходника

Добавлено: Сб июл 23, 2016 12:26:44
COKPOWEHEU
Перевел на avr-gcc и собрал там.
Заняло 408 байт флеша.

Re: Копмиляция исходника

Добавлено: Сб июл 23, 2016 14:05:31
kioka
COKPOWEHEU писал(а):Перевел на avr-gcc и собрал там.
Заняло 408 байт флеша.
Огромное спасибо! А можно полюбопытствовать, что для этого нужно (для компиляции например моего исходника) и что это вообще за процесс такой

Re: Копмиляция исходника

Добавлено: Сб июл 23, 2016 16:03:13
COKPOWEHEU
Компилятор avr-gcc (он обычно идет со всеми стандартными библиотеками) и, по желанию, среда разработки. Лично мне хватает блокнота и консоли, но хорошо отзовусь об AVRStudio, разве что компилятор с ней может идти старый, хуже оптимизировать. С более новой - Atmel Studio дела не имел, кто-то хвалит, кто-то ругает. Впрочем, собрать файл из исходника она тоже в состоянии.
Ну и мне пришлось переводить с одного диалекта на другой - не зря я приложил свой *.c файл:
- стандартные библиотеки. В avr-gcc контроллер задается напрямую компилятору, а не в файле исходника, то есть можно пользоваться универсальным <avr/io.h> ; стандартных библиотек куча, но они относительно специализированные, так что пришлось подключать <avr/interrupt.h>, <avr/pgmspace.h>
- макросы и ключевые слова для тонкого управления расположением переменных. PROGMEM вместо __flash ; модификатор register вместо __regvar и т.п.
- обработчики прерываний. ISR(vect) вместо #pragma vector=vect \ __interrupt void...
- ну и разрешение / запрет прерываний cli()/sei() вместо __enable_interrupt();/ __disable_interrupt();