Képzési kurzus avr

Az AVR mikrokontrollerek képesek az önprogramozásra, vagyis képesek függetlenül megváltoztatni a flash memória tartalmát. Gyakorlati értelemben ez azt jelenti, hogy egy mikrokontrollerre írva egy speciális betöltõprogramot (az úgynevezett bootloadert), frissíthetjük a firmware-t a programozó használata nélkül. És az interfész, amellyel a program kódja átkerül a mikrokontrollerre, teljesen önkényes lehet. Általában az egyik hardver által támogatott interfész használható erre a célra, például SPI. I2C vagy RS-232. Azonban vannak olyan töltők, amelyek az interfészek, például az USB és az 1-vezetékes szoftverek megvalósításán alapulnak.







Az AVR mikrovezérlők számára számtalan készenléti rendszerindító található, és a legtöbb esetben biztonságosan használhatjuk azokat a készülékeinkben anélkül, hogy megzavarnánk a saját boot-betöltőt. Ebben a cikkben megnézzük a Chip45 által kifejlesztett és szabadon elosztott bootloadereket, és kitaláljuk, hogyan kell használni.

Az AVR mikrokontrollerek programmemóriája két részre tagolódik: az alkalmazásprogram szakasz és a bootolható rész. A betöltő (vagy bootloader) egyszerűen egy program, amely ugyanabban a szakaszban van tárolva, és képes írni / olvasni a mikrokontroller mindkét memóriaterületét. Ez a funkció lehetővé teszi a betöltő számára, hogy módosítsa és akár magát is törölje! Ez azt jelenti, hogy egyfajta öngyilkosságot követ el.

Annak érdekében, hogy kihasználjuk a bootloader kényelmét, a programozó segítségével be kell írni a mikrokontroller memóriájába. A betöltő forráskódjának összeállítása előtt meg kell adni a memória területét, amelyben a betöltő íródik. Ez a téma meghaladja a jelen cikk alkalmazási körét, és itt nem vesszük figyelembe. Számunkra fontosabb, ha van egy hamis hexadecimális fájlunk, nem kell gondolkodnunk semmit, csak a legegyszerûbb programhoz hasonlóan a mikrokontrollerbe villogtatjuk.

A betöltõ rész és az alkalmazás rész mérete a BOOTSZ1, BOOTSZ0 konfigurációs bitekkel van megadva. Az ATmega16 mikrokontroller számára a memória szakaszok méretei a konfigurációs bitek értékétől függően így fognak kinézni.

Képzési kurzus avr

Az ATmega16 rendszerindító partíciójának maximális mérete 1024 16 bites szó, amely megfelel a flash memóriájának 2 KB-nak. Ha nem használja a betöltőt, akkor az alkalmazási program a mikrokontroller összes rendelkezésre álló flash memóriáját foglalhatja el.

A konfigurációs bitek értéke az adott betöltő követelményeitől függ. Például egy Chip45 boot-betöltőhöz 1024 szóbeli (2 KB) indítható részre van szükség, de kompaktabb rendszerindítót is írhat. Mindez attól függ, hogy milyen funkcionalitást fektetett be, és hogy képes-e megbirkózni.

Tegyük fel, hogy a mikrokontrollerben egy bootloadert írtunk, hogyan használjuk fel? Annak érdekében, hogy a betöltő működjön, aktiválni kell (futás). Ennek két módja van:

- mozgassa a reset vektort a rendszerindító partíció elejére,

- lépjen a rendszerindító partíció elejére.

A második módszer végrehajtása azt jelenti, hogy a mikrokontroller egy betöltőt és egy felhasználói programot is tartalmaz, amely egy esemény bekövetkezésekor végrehajtja a rendszerindítási területre való átállást.

ahol (void (*) ()) egy kifejezés az adat típusának leadására

Amikor a mikrokontroller a bootloader szakaszba költözik, akkor, ha ezt így teszik, "minden ügyét dobja", akkor is, ha még nem fejeződött be. Bizonyos alkalmazásokban ez a viselkedés nem elfogadható (a legegyszerûbb példa a fûtõelem vezérlõeszköz), így a betöltõ elindítása elõtt a mikrokontrollert vagy a készüléket semleges helyzetbe kell hoznia. Ne feledje!







Mi történik, ha a betöltő írja a firmware-t a mikrokontroller memóriájába? Ő maga elindítja az alkalmazási programot, vagy elvár egy parancsot a számítógép vezérlőprogramjából. Ez már egy adott rendszerbetöltő végrehajtásától függ.

És az utolsó pont, ha általában a programozó segítségével véletlenül átveszi a felhasználói programot a mikrokontrollerbe, a betöltő törlődik.

Menjünk tovább a Chip45 rakodóhoz. Mi a sajátossága?

1. A kész flasher firmware jelenléte az AVR mikrokontrollerek széles körének, valamint az XMEGA mikrokontrollereknek. Nincs szükség a firmware összeállítására!


2. Egyszerű és kényelmes grafikus környezet a betöltővel való együttműködéshez, valamint számos operációs rendszerhez (Windows, Linux, Mac OS X).

3. Egy egyszerű kezelőfelület terminál programokon való működéshez.

4. Használja az UART modul adatainak cseréjét, amely lehetővé teszi, hogy az USB-UART átalakító használata esetén a firmware-t a mikrokontrollerre RS-232 vagy USB-ről töltse le.

5. Az RS-485 interfész támogatása.

6. Képes olvasni / írni EEPROM memóriát.

7. Az UART átváltási árfolyam automatikus beállítása a fogadóval, függetlenül a mikrokontroller órafrekvenciájától.

8. A töltő aktiválásának további jellemzői tetszőleges karakterláncok küldésével.

9. A boot partíció megfelelő mérete 1024 szó (2 KB flash memória)

A betöltő mikrokontrollerbe történő felvétele a következő lépésekből áll:

- állítsa be a rendszerindító partíció méretét 1024 szóra,
- állítsa be a BOOTRST konfigurációs bitet,
- megtiltjuk az órajel frekvenciaosztását, ha van egy kis CLKDIV8,
- megtiltjuk az időzítőt, ha ezt egy WDTON bit engedélyezi,
- válassza ki a megfelelő firmware-t a mi mikrokontrollerünkhöz,
- írja a mikrokontrollerre bármely programozó segítségével.

A kezdők számára ez a legfontosabb nehézség a konfigurációs bitek megfelelő telepítése. Gyakran okoznak zavarokat, mert egyes programozók 1-et érzékelnek a konfigurációs bitben, mint programozatlan állapot, a 0 programozott és néhány fordítva. Az első opció megfelel az AVR mikrokontrollerek adatlapjának (lásd a fenti képet).

Az egyetlen dolog, amit tehetek, hogy megnyugtasson - az ilyen bitek helytelen telepítése nem akadályozza meg a mikrokontroller programozásának programozásának lehetőségét.

A mikrokontroller programozása a rakodó segítségével a következőképpen történik:

- csatlakoztassa a mikrokontrollert a számítógéphez RS-232 vagy USB-n keresztül USB-UART átalakító segítségével,

- futtassa a Chip45boot2 GUI programot (telepítenie kell),

- állítsa be a kívánt COM portot és a csere sebességét,

- válasszon ki egy hatalmas fájlt a mikrokontrollerbe,

- nyomjuk meg a "Connect to Bootloader" gombot,

- ha a sikeres kapcsolat jelzője világít a programban, akkor a "Program Flash" gombra kattintva írjuk le a firmware-t a mikrokontrollerre,

- futtassa az alkalmazást az "Alkalmazás indítása" gombra kattintva

A Chip45boot2 GUI program lehetővé teszi a bootloader aktiválását tetszőleges karakterláncok küldésével is. Természetesen ehhez már van egy firmware a mikrokontrollerben, amely támogatja ezt a lehetőséget.

Ez akkor lehet kényelmes, ha a mikrokontrolleren található eszköz nem rendelkezik elérhető reset gombbal, például akkor, ha szorosan lezárva van.

A többi információ megtalálható a bootloader technikai leírásában, bár legtöbbször azt mondtam.

Képzési kurzus avr

A legtöbbet is én voltam. Ennek oka az volt, hogy bekapcsolta a WDTON bitjét. A WATCHDOG megengedi. Amint levettem a problémáról, azonnal eltűnt. Általában ez a cikk íródott.

Nem, WDTON kikapcsolta (nem engedélyezett). Ezt azonnal ellenőriztem. De a probléma kissé más volt: a firmware hex file-ja egyáltalán nem nyílt meg a flash-meghajtó programjában. Hiba történt. Ie mielőtt a firmware a MC, még nem jött le.

Köszönöm a cikket. Miután elárasztottam a programomat a chip45bootGui-val, elvesztettem a képességet, hogy csatlakozhassak a rendszerbetöltőhöz és képesek legyenek kódjaimat írni. És miért cseréltem át a rakodót az MK-ben, de körülbelül 10-szer lassabb, mint amikor a gyártó előre telepítette. Mi a hiba?
Board Crumb128-Can V5.1, MK AT90CAN12
Köszönöm

Nem, a rendszerindítóval való kapcsolat nem veszik el. A flash memória flash memóriájának írása után használhatja a bootloadert.
A bootloader felülírása után miért kapcsolódik össze lassabban, nem mondhatom. Talán volt egy másik, kissé eltérő boot-betöltő, amely kezdetben magasabb árfolyamon dolgozott.

Köszönöm a cikket. Megkérdeztem atmega644p-t, hogy minden működik, ahogy kellene. Végül öt drót nélkül is lehet :-) Szépség!




Kapcsolódó cikkek