ПредишенСледващото

Преди Arduino програма (скица) попадат в картата с памет микроконтролер и започва да работи, трябва да се появят няколко скрити от очите на процесите на потребителите. Първо среда за разработка Arduino IDE изпълнява малка скица преобразуване код, за да стане текст, напълно съвместима с C или C ++ език стандарт (двата най-добре познат език в света на микроконтролери). След това, полученият текст се предава програма AVR-GCC компилатор, което се превежда човешки четима програмен код в обект операционни кодове подходящи (след допълнителна трансформация - свързване) за извършване на сърцевината на микроконтролер използва (обикновено Atmel AVR ATmega328). Тогава обект машинен код скеч е комбиниран (този процес се нарича грешки линк) с кодови функции от стандартните библиотеки Ардуино (тези библиотеки предоставят разнообразни функции, като например база digitalWrite () или Serial.print ()). Резултатът е един файл в Intel HEX [2] формат, които трябва да бъдат записани в паметта на микроконтролера прототипи на Ардуино. Обикновено, функцията за програмиране на кодове в паметта на микроконтролера поема стандартна UART-буутлоудъра Arduino: код се предава на зареждане чрез USB-връзка към компютър (чрез USB-UART чип, обикновено компанията FTDI). UART-буутлоудъра Arduino първоначално е записано в микроконтролер карта с памет специален ISP-програмист (между другото, много евтини китайски Ardiuno-съвместима карта, която можете да си купите на иБей, страда от недостиг зашити зареждане на ОС).

[Получаване на основната скица файл]

[Conversion основната скица файл]

Както вече споменахме, Arduino IDE прави някои промени през основната скица файл (това може да бъде като един файл на един раздел, и все още обединени помежду си файлове без разширения на няколко раздела), преди да изпратите кода на компилатор AVR-ССЗ.

Първо, в началото на главната скица файл скрит добавя #include "Arduino.h", или за по-стари версии (по-малко от 1.0) #include "WProgram.h". Този файл заглавието (намира се в директорията% Ардуино% / хардуер / ядра // Къде име CORE използва от ядрото на микроконтролер) свързва всички определения, които са необходими стандарт ядрото Arduino.

Препроцесор - първа стъпка при обработката на изходния код (скица) компилатор. Compiler предпроцесорни търси код на конкретни ключови думи, които започват с # символ, показващ началото на директивите на компилатора.

Вероятно сте се срещна няколко пъти с ключови думи #INCLUDE използване библиотеки. #include директива предпроцесорни казва на компилатора да вмъкнете в това място кода от файла с удар с глава на библиотека.

Има и други директиви предпроцесорни (# определят, #if, #else, #error, #pragma, и така нататък. D.), информация за тях може да се намери в ръководството на компилатора [5]. Понякога предпроцесорни - единственият начин за решаване на проблема, но синтаксис предпроцесорни различава от C и C ++ език и директиви невнимателно боравене предпроцесорни може да доведе до трудно да се хване грешки.

Файлът добавя различни константи (получени от boards.txt описание файл и свързани с избраната карта). Тези константи са свързани с вида на микроконтролер. И накрая, съдържанието на текущата цел (мишена) main.cxx файл, се добавят към края на скицата. След всички тези трансформации се изготвя досие AVR-GCC компилатор.

В рамките на целевия-ти тук означава плащане на Arduino, която е компилиран двоичен код машина. Arduino среда за разработка поддържа няколко карти с различни микроконтролери (в момента тя е само различен MCUs на едно и също семейство - AVR), тактова честота (скорост на CPU) или товар. Всички тези настройки са дефинирани в конфигурационния файл платформа (preferences.txt).

Някои настройки могат да се променят в диалоговия прозорец Предпочитания (Preferences) директно от околната среда за програмиране на Ардуино. На Windows или Linux платформи е менюто File (Файл) на Mac е менюто Arduino. Други настройки трябва да се променят чрез редактиране preferences.txt на файла. Местоположението на този файл се показва в диалоговия прозорец за настройки. Това е мястото, където да бъде:

Редактиране на файла, само ако Ардуино не работи, в противен случай всички промени ще бъдат заменени с новите, когато сте готови с помощта на Ардуино.

Определения, които определят съдържанието на съвета на менюто могат да бъдат намерени в boards.txt файл, намиращ се в поддиректория хардуер / Arduino IDE указател на приложение. Определения Горя Bootloader меню във файла programmers.txt същата директория. За да създадете нова карта, или определението на програмирането, направете копие на съществуваща, и промяна на префикса, използвана в имота (ключовете за предпочитания, като например "diecimila." Или "avrisp."), Както и промяна на ценностите, подходящ за вашия хардуер. Имайте предвид, че само някои дънни платки поддържат конфигурация.

Подходящи променливи за настройки включват:

.име. Име на карта, която ще се появи в менюто табла.
.build.mcu. микроконтролер борда ( "ATmega8" или "ATmega168", често е "atmega328").
.f_cpu. тактова честота (тактова честота), се изпълнява на микроконтролер (обикновено "16000000L", или в случай, когато ATmega168 работи на на часовника си, на "8000000L").
.сърцевина. поддиректория хардуер / ядра /, за да се свържат скици (обикновено "Ардуино") директория.

Една полезна функция е следната настройка в основната preferences.txt:

build.verbose. дали да се покаже отстраняване на грешки (подробности) съобщенията за описване скица процеса на компилация (например "фалшива"). Ако това е вярно, то ще бъде показано в пълен размер и в командния ред за всяка външна команда, изпълнен като част от процеса на изграждане.

Забележка: Ако фалшиви, няма да бъдат показани подробните доклади на процеса на компилация, но можете да пренебрегнете това поведение за предстоящата процедура компилация или освобождаване от отговорност, ако се държи ключа Shift, когато не кликвайте върху командата Compile, или да качите.

Забележка: В версии на Arduino 0004 и по-късно по-късно, build.extension не се използва - основната скица файл винаги се третира като .cpp файл.

Скици се събират от компилатор AVR-ССЗ и AVR-д ++ в съответствие с променлива boards.txt файл за избрания платформа (избран Ардуино).

Търсене на начини за свързване на заглавните файлове (включва път) включва скица директория, целевата директория (% ARDUINO% / хардуер / ядро ​​//) Вариант Directory пансион (поддиректории от хардуерни / Ардуино / варианти, посочени в board.txt файл) включват файлове и директория AVR (% ARDUINO% / хардуер / инструменти / AVR / AVR / включват /), както и всички всички библиотечни каталози ( в директорията% Arduino% / библиотеки /), които съдържат заглавия, които се свързват с основния файл на скицата.

При проверка (проверка) на обекта или да качите (качване) скица, тя се събира в временна директория на системата (например, на Mac или Linux е директорията / ПТУ). Когато се качите (качите), събранието се провежда в поддиректория аплет / директория на скица (която можете да достигнете, като кликнете върху "Покажи Скица Folder", т. Е. "Show скица папка" меню "Скица", "Скица") ,

Целева файлове .c и .cpp събрани в изходните файлове с .o на разширението и да попаднат в тази папка като основен файл от скицата, както и всякакви други файлове .c или .cpp в скицата или каквито и .c или .cpp файлове от всякакъв библиотека, сменяем #include директива скица.

Преди да се опитате да съставя всеки опит .c или .cpp да се използват повторно по-рано съставен .o файла - този опит да се ускори процеса на сглобяване. специален файл .d В (от думата зависимостта, пристрастеност) предоставя списък на всички други файлове, включете на оригиналния файл. стъпка Компилация се пропуска, ако .o файлове и .d там, и да има печата времето е по-нова от файла източник и цялата списъка с файлове зависимости. Ако файлът е източник или файл в списъка на зависимостта е променено, или има някаква грешка във файла за проверка, компилаторът се управлява както обикновено, и пише нови файлове и .o .d. След като в менюто Tools е бил избран новият борд, всички файлове .c и .cpp ще бъдат прекомпилирани следващия път, когато отново започнете компилацията.

След това тези файлове са свързани в .o един с друг в статична библиотека, която след това се свързва във файла обект, основен, получена от скицата. И в .hex изходния файл единственият получите кода на онези части от библиотеките и предметни файловете, които се използват на практика в скицата от намаляване на размера на изходния файл.

.hex файл е крайният резултат от компилирането, които се заустват в борда. По време на проверка "Потвърждаване" .hex процедури файла, направен директорията / ПТУ (на платформи Mac и Linux) или \ Documents и Settings \ потребителско име \ Local Settings \ Temp (Windows-базирани). По време на HEX-файла за качване аплет е писано в поддиректория на директорията на скицата.

Инструменти, използвани за изпълнение на процеса на компилация (включително компилаторът AVR-ССЗ), са разположени в% ARDUINO% / хардуер / инструменти / AVR.

За напреднали програмисти може да се окаже полезна програма AVR-objdump. който също е в директорията на инструменти. Тя ви позволява да видите как компилаторът е направил скица код в програма, която изпълнява микроконтролер борда. AVR-objdump полезност генерира Disassembler обявата си скица, която показва код обект, смесен със съответните изходен код линии. Обява също ще се показва на картата с памет (карта с памет) за всички променливи, използвани в скица. За да използвате AVR-objdump, извършване на първата компилация на скица, а след това отидете до папка инсталационната директория на Arduino. След това намерете папката, която съдържа всички междинни файлове, използвани в процеса на сглобяване (както е обяснено по-рано). Междинният файл се използва програма AVR-objdump, има разширение .elf. Например, ако сте изготвили скица Мига, можете да видите изхода на компилация (машинен код) чрез провеждане на командния ред следната команда:

Следващата версия на командата добавя изхода на списъка на заглавки на секции (това помага да се определи използването на паметта):

Можете също да създадете команден файл (.bat файлово разширение), който ще се появи списък във файла. Добавяне на пътя към инсталационната директория Arduino в следния ред, а след това да го запазите като файл партида:

[Процес разтоварване (качване)]

Съставител двоичен код на скица (представител на изходния файл в Intel HEX формат) обикновено попада в картата с памет микроконтролер с товарач и avrdude полезността.

процес разтоварване също се контролира от променливите в инсталационния такси и на основните настройки. Тези настройки включват:

.upload.protocol. протокол, който трябва да използвате avrdude да общуват с картата товарач (обикновено "STK500" протокол).
.upload.speed. скорост (скорост на предаване), трябва да използвате avrdude когато разтоварва скици (обикновено "19200").
.upload.maximum_size. максималният размер на скицата на борда (в зависимост от модела и чип буутлоудъра размер код).

Също така на процеса на разтоварване се отразява на главния конфигурационен файл (основните предпочитания на файла):

upload.verbose. дали да се покаже отстраняване на грешки (подробности) съобщения, описващи процеса на зареждане, т.е.. д. предаване на кода на товарач карта (по подразбиране е "фалшива", т. е. многословни съобщения, не са изход).

Забележка: Ако фалшиви, няма да бъдат показани подробните доклади за процеса на освобождаване от отговорност, но можете да пренебрегнете това поведение за предстоящата процедура компилация или освобождаване от отговорност, ако се държи ключа Shift, когато не кликвайте върху командата Compile, или да качите.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!