Arduino a vázlat összeszerelési folyamat leírása, avr, programozás

Mielőtt az Arduino (vázlat) program bejutna a tábla mikrokontroller memóriájába, és elkezdi működését, a felhasználó szeme elől rejtett több folyamatot kell előidéznie. Először Arduino IDE fejlesztői környezet végez kis vázlat konverziós kódot, hogy ez a szöveg, teljesen kompatibilis a C vagy C ++ nyelven szabvány (a két legismertebb nyelv a világon mikrokontrollerek). Ezután a kapott szöveg van továbbadva programot AVR-GCC fordító, amely lefordítja ember által olvasható programkód be objektum műveleti kódokat alkalmas (további átalakítás után - összekötő) ellátja a mikrokontroller mag használt (általában Atmel AVR atmega328). Ezután az objektumot gépi kód vázlat kombináljuk (ezt a folyamatot nevezik linket hibák) a kód funkciót a Arduino szabványos könyvtárakat (említett könyvtár a különböző funkciók, mint például a bázis digitalWrite () vagy Serial.print ()). Az eredmény egy fájl Intel HEX [2] formátumban, amelyet fel kell jegyezni a memóriában a mikrokontroller prototípus tábla Arduino. Jellemzően a kód programozási funkcióból a memóriában a mikrokontroller feltételez szabványos UART-bootloader Arduino: küld kódot a rakodó az USB-kapcsolat a számítógéphez (USB-UART chip, általában a cég FTDI). UART-bootloader Arduino eredetileg rögzített mikrokontroller memóriakártya speciális ISP-programozó (by the way, sok olcsó kínai Ardiuno-kompatibilis kártya, hogy lehet kapni az eBay-en, hiányától szenvednek varrott boot loader).

[A fő vázlatfájl előkészítése]

[Átalakítások fő vázlatfájl]

Amint már említettük, az Arduino IDE néhány átalakítást hajt végre a fő vázlatfájl fölött (lehet, hogy egy fájl egyetlen lapon, és a fájlok kombinálva vannak a kiterjesztések nélkül több lapon), mielőtt átadná a kódot az avr-gcc fordítónak.

Először a fő vázlatfájl hozzáadódik a #include "Arduino.h" vagy a régebbi verziókhoz (kevesebb, mint 1.0) #include "WProgram.h". Ez a fejlécfájl (a% ARDUINO% -ban található / hardver / magok //, ahol a CORE a használt mikrokontroller rendszermag neve) összekapcsolja a szabványos Arduino kernel által szükséges fogalommeghatározásokat.

Az előfeldolgozó az első lépés a forráskód (vázlat), a fordító feldolgozásának folyamatában. A fordító előfeldolgozó speciális kódokat keres a kódban, amely a # jelrel kezdődik, ami a fordítói irányelv kezdetét jelzi.

Valószínűleg találkozott a #include kulcsszavakkal a könyvtárak használatakor. A #include irányelv azt mondja a fordító előfeldolgozónak, hogy a kódot a könyvtár fejlécfájljából helyére helyezze.

Vannak más preprocesszoros irányelvek (#define, #if, #else, #error, #pragma stb.), Ezekről a fordítói kézikönyv [5] megtalálható. Előfordulhat, hogy az előfeldolgozó az egyetlen módja annak, hogy megoldja a problémát, de az előfeldolgozó szintaxisa eltér a C és a C ++ típusoktól, és a preprocesszoros irányelvek figyelmetlen használata kemény fogási hibákat eredményezhet.

A fájlhoz hozzáadásra kerülnek a különböző állandók (amelyeket a táblák leírása a board.txt és a kiválasztott fórumhoz kapcsolódik). Ezek a konstansok a használt mikrokontroller típusához kapcsolódnak. Végül a jelenlegi main.cxx target (target) fájl tartalma hozzáadódik a vázlat végéhez. Az összes konverzió után a fájlt az AVR-GCC fordító készítette.

A célpont alatt itt az Arduino tábla, amelyre bináris gép kódot állít össze. Az Arduino fejlesztési környezet számos, különböző mikrokontrollel rendelkező táblát támogat (jelenleg csak egyazon család különböző mikrokontrollerei (AVR), órajelsebességek (CPU sebesség) vagy rakodók. A platformok ezen beállításait a beállításfájl (preferences.txt) adja meg.

Egyes beállítások a Beállítások párbeszédablakban közvetlenül módosíthatók az Arduino fejlesztői környezetből. Windows vagy Linux platformokon ez a Fájl menü, a Mac platformon pedig az Arduino menü. Az egyéb beállításokat a preferences.txt fájl szerkesztésével kell módosítani. A fájl helye a Beállítások párbeszédpanelen jelenik meg. Ez a hely legyen:

Szerkessze ezt a fájlt csak akkor, ha az Arduino fejlesztői környezet nem fut, különben minden változás felülíródik és elvész, amikor kilép az Arduino IDE-ból.

Definíciók, amelyek meghatározzák Board menü tartalma megtalálható boards.txt fájl alkönyvtárban hardver / Arduino IDE alkalmazás könyvtárába. A Burn Bootloader menü definíciói ugyanabban a könyvtár programozók.txt fájljában találhatók. Ahhoz, hogy hozzon létre egy új kártyát, vagy a meghatározása a programozás, hogy egy másolatot egy meglévő, és a változás az előtag használt kulcs tulajdonság (preferencia kulcsok, például a „diecimila.” Vagy: „avrisp.”), És módosítsa az értékeket, hogy megfeleljen a hardver. Ne feledje, hogy csak bizonyos kártya konfigurációk támogatottak.

A beállításokhoz tartozó megfelelő változók a következők:

.nevét. A táblák neve, amelyek a táblák menüjében jelennek meg.
.build.mcu. mikrokontroller a táblán ("atmega8" vagy "atmega168", gyakrabban "atmega328").
.f_cpu. A mikrokontroller működési ideje (általában "16000000L", vagy abban az esetben, amikor az ATmega168 a belső óráján működik, majd "8000000L").
.mag. a hardver / magok / könyvtár alkönyvtárát a vázlatok összekapcsolásához (általában "arduino").

A következő beállítás a fő beállításoknál is hasznos: txt:

build.verbose. hogy a vázlat (pl. "hamis") összeállításának folyamatát leíró hibakeresési (részletes) üzeneteket küldenek-e vagy sem. Ha igaz, akkor minden egyes végrehajtható külső parancs parancssora a build folyamat részeként teljes egészében és a parancssorban fog megjelenni.

Megjegyzés: ha a fordítási folyamat hamis, részletes üzenetei nem jelennek meg, de a következő összeállításra vagy kirakodásra vonatkozó eljárást megszakíthatja, ha a Shift billentyűt lenyomva tartja, amikor rákattint az Összeállítás vagy feltöltés parancsra.

Megjegyzés: az Arduino 0004 és későbbi verziókban a build.extension nem használható - a fő vázlatfájl mindig .cpp fájlként kezelendő.

A vázlatokat az avr-gcc és avr-g ++ fordítók készítik el a kiválasztott platformon levő boards.txt fájlváltozóknak megfelelően (a kiválasztott Arduino tábla).

A bekötési útvonal összekapcsolásának keresési útvonalai közé tartozik a vázlatkönyvtár, a célkönyvtár (% ARDUINO% / hardver / mag //) Directory variáns tábla (alkönyvtár hardver / Arduino / változatok, meghatározott board.txt file) tartalmazzák a fájlok közvetlen AVR (% ARDUINO% / hardver / tools / avr / avr / include /), valamint az összes olyan könyvtári katalógusok ( a% ARDUINO könyvtárban% / könyvtárak /), amelyek a fő vázlatfájlhoz csatolt fejlécfájlokat tartalmazzák.

Ha ellenőrzi (ellenőrizheti), vagy töltse fel (upload) egy vázlatot, hogy össze egy ideiglenes rendszer könyvtár (például egy Mac vagy Linux a / tmp). Ha nem feltölteni (feltölteni a) az összeszerelés zajlik az alkönyvtár applet / könyvtárban a vázlat (amely elérheti kattintva a „Show Vázlat mappa”, t. E. „Show vázlat mappa” menü „vázlat”, „vázlat”) .

Célfájlokat .c és .cpp össze a kimeneti kiterjesztésű fájlok .o, és ebbe a mappába, amelyben a fő fájl a vázlatot, és egyéb fájlokat .c vagy .cpp a vázlat, vagy bármilyen .c vagy .cpp fájlok bármilyen könyvtárból, a vázlat #include irányelvét.

Mielőtt megpróbálná összeállítani az egyes .c vagy .cpp fájlokat, kísérletet tesz a korábban összeállított fájl újrahasznosítására .o - ez a kísérlet felgyorsítja a felépítési folyamatot. Egy speciális .d fájl (a függőségi szótól függően) felsorolja a forrásfájl összes többi fájlját. Ha a .o és a .d fájlok léteznek, a gyűjtési lépés kihagyásra kerül, és egy újabb időbélyegzővel rendelkezik, mint a forrásfájl és az összes függőségi listafájl. Ha a forrásfájl vagy a függőségi lista bármely fájlja megváltozott, vagy hiba történt a fájlok ellenőrzése közben, a fordító a szokásos módon fut, és új .o és .d fájlokat ír. Miután az új lapot kiválasztotta az Eszközök menüben, az összes .c és .cpp fájl újrafordításra kerül a következő összeállításkor.

Ezután ezek a .o fájlok egymáshoz kapcsolódnak egy statikus könyvtárban, amely az alapfájlból kapott objektumfájlra mutat. A kimenet .hex fájlban csak a könyvtárak és az objektumfájlok azon részeinek kódja kapható, amelyek a rajzban valóban használatosak, mint a kimeneti fájl mérete.

A .hex fájl az összeállítás végső eredménye, amelyet letöltöznek a táblára. A Verify teszt alatt a .hex fájl a / tmp (Mac és Linux platformokon) vagy \ Documents and Settings \ felhasználónév \ Local Settings \ Temp (a Windows platformon). A letöltés során a HEX fájl a vázlatkönyvtár applet alkönyvtárába van írva.

A fordítási folyamat végrehajtásához használt segédprogramok (beleértve az AVR-GCC fordítót is) a% ARDUINO% / hardware / tools / avr könyvtárban találhatók.

A fejlett programozók számára hasznos lehet az avr-objdump segédprogram. amely szintén az eszközkönyvtárban található. Lehetővé teszi, hogy megtekinthesse, hogy a fordító a vázlatkódot olyan programgá alakította át, amelyet a tábla mikrokontrollere végrehajt. Az avr-objdump segédprogram létrehoz egy listát a vázlat szétszerelőjéhez, amely megmutatja az objektumkódot a forráskód megfelelő sorainak összekeverésével. A listában a vázlatban használt összes változó memóriatérképét is megjeleníti. Az avr-objdump használatához először fordítsd össze a vázlatot, majd menj az Arduino telepítési könyvtármappába. Ezután keresse meg azt a mappát, amely tartalmazza az összes build fájlban használt közbenső fájlokat (amint azt korábban kifejtettük). Az avr-objdump segédprogram által használt köztes fájlnak van .elf kiterjesztése. Például, ha összeállította a Blink vázlatát, a következő parancsot a parancssorból a kompromisszum kimenet (gépi kódok) láthatja:

A parancs következő verziója hozzáadja a fejlécek listáját a kimenethez (ez segít meghatározni a memóriafelhasználást):

Ön is létrehozhat egy kötegelt fájlt (egy .bat kiterjesztéssel rendelkező fájlt), amely a listát egy fájlba továbbítja. Adja hozzá az elérési utat az Arduino telepítési könyvtárához a következő sorhoz, és mentse el batch fájlként:

[Feltöltési folyamat]

A vázlat összeállított bináris kódja (amelyet az Intel HEX formátumú kimeneti fájl képvisel) általában a mikrokontroller memóriájába kerül a betöltővel és az avrdude segédprogrammal.

A kirakodási folyamatot a kártya beállításai és az alapvető beállítások változók is szabályozzák. Ezek a beállítások:

.upload.protocol. Az a protokoll, amelyet az avrdude használnia kell a tábla betöltőjével való kommunikációra (általában az "stk500" protokoll).
.upload.speed. Az átviteli sebesség, amelyet az avrdude használ a vázlatok kirakodásakor (általában "19200").
.upload.maximum_size. A rajz vázlatának maximális mérete (a chip modelltől és a bootloader kód méretétől függ).

Ezenkívül a fő beállítási fájl hatással van a kirakodási folyamatra:

upload.verbose. hogy a bootolási folyamatot leíró hibakeresési (részletes) üzeneteket küldenek-e, vagyis a kódot a táblaszámítóra küldi (alapértelmezés szerint "hamis", azaz a részletes üzenetek nem kerülnek továbbításra).

Megjegyzés: Ha nem, a részletes jelentéseket a folyamat mentesítés nem fog megjelenni, de akkor ezt felülbírálhatja viselkedés egy közelgő összeállítás eljárás vagy folyás, ha a Shift billentyűt lenyomva, ha nem kattint a Compile parancsot, vagy feltöltése.

Kapcsolódó cikkek