Amitől a mikrovezérlő Arduino lesz – toljuk fel a bootloadert!

2021. szeptember 03. péntek

Könnyű azt mondani, hogy mikrovezérlőt leginkább Arduinoval érdemes programozni, ám a kivitelezés kicsit összetettebb folyamat. Ugyanis ha az új ATmegát bedugod a kiüresített UNO foglalatába, az semmit sem fog csinálni, nem lehet rátölteni semmit.

Ha perifériáinkat vezéreljük, kétségtelenül a legegyszerűbb megoldás az Arduino: nem kell különböző programokkal és programozókkal szenvedni, ráadásul ha elfogy, az alaplappal könnyedén és olcsón csinálhatunk magunknak új mikrovezérlőt bele anélkül, hogy újabb és újabb Arduinokat kellene vásárolni.

A Kínából rendelt ötös vagy tízes csomagolású Atmellel semmi baj nincs, ám Arduinoként alkalmazva mégsem működik olyan simán. Ennek oka a bootloader, az a programrész, ami a vezérlő bekapcsolása után az alapvető funkciókkal látja el azt, magyarán szólva az a firmware, amitől Arduinoként viselkedik.

Az μSDX adóvevők sokszorosításánál először jelentkező problémát is az úgynevezett bootloader adja, ami a hardver alapvető tulajdonságait, funkcióit meghatározó alapvető firmware.

A bootloader feltöltésének ötletét legtöbben az USB ISP (In-System Programming) eszközök ASP firmware-rel való frissítésekor vetik el. Pedig erre a leginkább Linux használatával egyszerű mozzanatra nincs is szükség, az Arduino klónozót ráadásul elég egyszer megcsinálni. Mutatom.

A mikrovezérlők ISP portján is van lehetőség felprogramozni az IC-t, de most az általános hasznossága miatt ismertetném az alábbi megoldást. Az ISP programozásról és az ASP szoftverrészről a Triband transceiver bemutatásánál olvashattok majd bővebben. Leegyszerűsítve itt most arról lesz szó, hogy programozd fel a teljesen nyers 328P mikrovezérlőt egy USB-n keresztül két alaplap használatával.

Egyébként bootloadert már programoztunk, az mcHF frissen beforrasztott processzora kapott egyet, ami jóval bonyolultabb az alábbiakban bemutatott eljárásnál. A pár éve épített hotspotnál is volt hasonló rész, de azt a Raspberry parancssorával oldottam meg, úgyhogy az most más tészta.

Az Arduino UNO-ban alkalmazott ATmega 328P mikrovezérlő gyárilag nem tartalmaz semmilyen bootloadert, az ugyanis teljesen általános célra, nem pedig kimondottan arduinos felhasználásra készült. Nekünk kell hát feltolni rá ezt az alapvető operációs rendszert, a művelethez pedig szükség van egy másik, működő Arduinora, amit valójában az alábbiak szerint egy AVR ISP eszközzé alakítunk. A célszerűség és átláthatóság kedvéért ezt egy másik UNO-val oldottam meg, melyen TQFP tokozású a mellékesen azonos típusú vezérlő.

aurdino bootloader másolása klónnal1.ábra

Az 1. ábra bébiknek szóló kapcsolási rajzán látszik, hogy míg a mindkét alaplapon a tápfeszültséget adó +5V és a GND (föld) valamint a D13, D12 és D11 lábait párhuzamosan összekötöttük, addig a számítógéphez csatlakozó Master panel (alsó) D10-es lába az üres IC-t fogadó, programozó Slave egységünk (felső) \Reset lábához van húzva.

Az ISP program alkalmaz néhány – gyakorlatilag felesleges – ellenőrző ledet (7-progamozás, 8-hiba, 9-heartbeat) is, ezért a lábakat ne nagyon kezdjük el átszervezni.

tippA két UNO panel összekötése akár tüskesorral is megoldható, ekkor célszerű a tápfeszültséghez egy kapcsolót iktatni. Ez jó szolgálatot tehet, ha a slave panelben megfőzött, újdonsült Arduinot az USB átdugásával rögtön programozni is akarjuk.

A bootloader feltöltéséhez az Arduino saját programozó szoftverére van szükség, melynek gyárilag telepített gyorselérésű példarutinjai között van minden, amire szükségünk lesz. Az Arduino IDE aktuális verzióját innen tudod letölteni.

A szükséges port és alaplap beállítások után fel kell tolni az ISP rutint a programozó alaplapra. Ezt az Arduino saját, gyári mintái között találjuk, mindössze a menüből kell kiválasztani. A Fájl -> Példák -> 11.ArduinoISP -> ArduinoISP megnyitása után betöltött programot kell feltölteni a szokásos módon. Ezzel elkészült a Masterünk.

arduino-isp-pelda

Ha a Master feltöltése sikerült és a nyers mikrovezérlő a Slave foglalatában van, nincs más dolgunk, mint megmondani a programozó típusát, valamint elindítani az égetésnek nevezett folyamatot.

Az Eszközök menü Programozó: pontjában kell kiválasztani az Arduino as ISP lehetőséget.

ispkivalasztasa

A bootloader égetéséhez nincs szükség minta megnyitására, az előbb használt menüpont alatt található egyetlen Bootloader égetése paranccsal indul a művelet, ami néhány másodpercet vesz csak igénybe.

A sikeres programozás után a kódrészek és az üzenetek fekete felülete közötti zöld felületen egy rövid értesítést kapunk a sikerről, de önmagunk megnyugtatása kedvéért segítségül hívhatunk egy újabb mintát is: az USB átdugása és a szükséges konfigurációk elvégzése után (figyelj, valószínűleg új portot kell beállítanod) a 01.Basic -> Blink feltöltése után a  felprogramozott vezérlő villogtatni fogja az egyik ledjét. Ez esetünkben a teljes sikert jelenti, hiszen arduinos programot feltolni csak arduinora lehet.