Pokyny na používanie programátora jtag. Programátori AVR. Všetky univerzálne programátory série ChipProg s rozhraním USB podporujú programovanie JTAG spolu s podporou mnohých ďalších protokolov

  • 04.11.2019

Neviem ako vy, ale ja považujem programátor pri vývoji zariadení za spotrebný materiál. Za 1,5 roka celkovo vyhoreli 3 programátori. Na naše veľké prekvapenie sú ladiace programy JTAG pre AVR drahé. A nie je úplne jasné, za čo chce výrobca takmer 100 dolárov. Výsledkom bolo, že som vyrobil niekoľko domácich debuggerov, objednal ich do priemyselnej výroby a teraz ich používam.

Schému som osadil sám podľa šablón zo siete, ktorých je veľa. Ale obvod sa nezmestil do jednej vrstvy, takže má zmysel ho znova zriediť, ak to urobíte LUT v jednej vrstve, budete potrebovať 4 vodiče.

Teraz k otázke firmvéru, AVR Studio obsahuje možnosť flashovania cez bootloader. Značkoví programátori majú na palube bootloader pre možnosť aktualizácie firmvéru. Kontrolér však hneď flashneme firmvérom bez použitia bootloadera, takže najskôr potrebujete obvodový programátor alebo iný debugger. Zároveň je potrebné mikrokontrolér flashovať na inej doske, keďže táto nemá ISP konektor, no v tomto prípade nie je nijak zvlášť drahá. Súbor firmvéru MiniIce.hex v projekte.

Schematický diagram:

Mikrokontroléry ATmega možno zhruba rozdeliť do dvoch kategórií: tie, ktoré sú programované iba cez ISP (zbernica z vodičov MISO, MOSI, SCK + reset control) a tie, ktoré majú okrem toho rozhranie JTAG.

Zo zostavy „milovaných“ Arduino ovládačov patrí ATmega do prvej kategórie. 8 , ATmega 168 , ATmega 328P... Ale v druhej kategórii je tiež jeden prípad: ATmega2560 používané v Arduino / Freeduino MEGA 2560.

JTAG- Ide o mechanizmus, ktorý umožňuje automaticky kontrolovať kvalitu dosiek plošných spojov: či niečo neskratovalo, alebo naopak zle spájkovalo. V priemyselnom meradle veľmi užitočná vec, najmä keď na jednej doske „šťastne“ koexistujú čipy rôznych firiem (otvorený je štandard IEEE 1149.1, na ktorom je JTAG založený). Je o to logickejšie, že mnohí výrobcovia čipov pridali možnosť programovať a ladiť svoje čipy cez rovnaký JTAG.

Prečo by ste mohli potrebovať JTAG vo svojom každodennom živote?

Značkové zariadenie od ATMEL stojí veľa (a už som si ho kúpil, potom zostalo nulové záporné množstvo peňazí):

Čo robiť? Už som povedal, že štandard je otvorený a proces programovania cez JTAG je dobre zdokumentovaný - stačí otvoriť ľubovoľný datasheet na mikrokontroléri ATMEL s rozhraním JTAG.

Mimochodom, raz, na úsvite vzniku mikrokontrolérov ATMEL, konkurenčný Microchip škádlil ATMEL demonštratívne rozobrať akési inštrumentálne zariadenie pre vývojára programov mikrokontrolérov ATMEL a demonštroval, že je zostavené na mikrokontroléroch jeho výroby - tj. na PICs. Bolo to však neskutočne dávno, svet je teraz úplne iný (c).

Na internete je veľa možností pre domáce kópie značkového AVR JTAG ICE. Jeden taký zjednodušený na úplnú hanbu nájdete napr. Čo je najzábavnejšie - Tvorba, hoci ho tvorí takmer jeden MK: ATmega16. Pôvodný programátor používa čip, ktorý je plne kompatibilný s ATmega16, čo umožňuje nahrať firmvér z proprietárneho programátora do vlastného programátora (nie je však pravdepodobné, že sa objavia nové, pretože AVR JTAG ICE bol ukončený).

Najprv musíte získať hlavný komponent - mikrokontrolér ATmega16-16PU a quartz 7,3728 MHz a potom zostavte minimálny programovací obvod na doske:

schéma - klasický potrebné na spustenie ATmega. Dovoľte mi pripomenúť, čo sa zvyčajne robí v tomto prípade:

  • pripojte napájanie - všetky GND a VCC (zvyčajne aspoň dva kolíky GND);
  • umiestnite kondenzátor na filtrovanie šumu 100 nF medzi GND a VCC bližšie k nohám ATmega (alebo 0,1 μF - podľa toho, čo uprednostňujete);
  • pripojte medzi XTAL1 a XTAL2 kremeň a pripojte ich cez dva rovnaký kondenzátor proti zemi (rozsah menovitého výkonu je uvedený v dokumentácii, nie je potrebné použiť 22 pF, môžete napríklad a 33 pF);
  • vytiahnite resetovacie vedenie na VCC cez odpor 10 tis a zaveste kondenzátor 100 nF k zemi, aby sa zabezpečilo mierne oneskorenie na resetovacom vedení po pripojení napájania.
Bude to vyzerať asi takto (všetko sa bezpečne zmestí do rozloženia 300 + 100):

Pripojíme obvod cez konektor ISP s programátorom a napájame ho z neho, potom šijeme firmvér a nastavíme poistkové bity:

avrdude -C avrdude.conf -c usbasp -p m16 -U hpoistka: š: 0x1f: m -U poistka: š: 0xcf: m

avrdude -C avrdude.conf -c usbasp -p m16 -U flash: w: miniICE.hex

Ak bola operácia úspešná, polovica bitky je hotová. Môže byť úhľadný vymazať ISP konektor a preveďte obvod na nasledujúci:

Na rozložení to vyzerá takto:

Pravdepodobne ste si všimli, že v obvode som použil čip sériového portu USB - FT232RL. Je to oveľa pohodlnejšie ako COM port z mnohých dôvodov. Ale nemôžete nalepiť SSOP do doštičky, takže používam adaptér vyrobený sami:

V klasickej verzii je o niečo viac riadkov JTAG ako v diagrame:

Povinné signály sú TCK, TDO, TDI a TMS (hodiny, výstup dát, vstup dát a ovládanie testovacieho režimu).

NSRST a NTRST sú ovládače resetovania zbernice JTAG. V našom prípade nie sú potrebné, pretože reset MC môže byť iniciovaný príkazovou sekvenciou na riadkoch povinných signálov.

Teraz sa poďme zaoberať výživou. Je žiaduce, aby bol obvodový programátor napájaný programovateľným obvodom. Tým je okamžite vyriešený problém spojenia úrovní programovateľného obvodu a programátora. Na druhej strane, ak má programátor prevodník úrovne signálu, rozdiel medzi VCC programátora a cieľa už nie je problém (okrem komplikácií obvodu programátora).

Z povinného riadku VTref musí byť privedené napájacie napätie zariadenia. Teoreticky to potrebuje čip prevodníka vyššie uvedenej úrovne vo vnútri programátora. Ale ak sa JTAG ICE plánuje napájať z cieľa, potom sa použije linka Vzásobovanie... Pre jednoduchosť sa dajú kombinovať, nie je to však nutné.

V závislosti od polohy prepojky SV2 na schéme bude ATmega16 napájaný buď z USB alebo z cieľa. Bol som lenivý dať prepínací jumper na dosku, pretože mal byť napájaný len z terča. Ale pred zapnutím som to trikrát skontroloval USB napájanie nie je súčasťou dodávky ... Pre spoľahlivosť zabudovaný USB-TTL otvoril prepojku napájacieho zdroja.Ďalší kontakt M8RX spája sa s nohou MK RX, M8TX- s TX.

K programátorovi sa pripojíme cez AVR Studio a ak je všetko správne zapojené, bude možné čítať podpis a firmvér.

(Zariadenie vpravo určite zvážim neskôr, zatiaľ len zopakujem, že má vo vnútri ATmega128)

Jedinou nevýhodou klonu AVR JTAG ICE je relatívne malý zoznam podporovaných MCU:

  • ATmega128
  • ATmega128A
  • ATmega16
  • ATmega162
  • ATmega165
  • ATmega169
  • ATmega16A
  • ATmega32
  • ATmega323
  • ATmega32A
  • ATmega64
  • ATmega64A
Tiež hovoria, že je podporovaný AT90CAN128, ale neexistuje spôsob, ako to skontrolovať :(

JTAG programátor (jarg.) - programátor pracujúci s mikroobvodom cez rozhranie JTAG.
JTAG (Joint Test Action Group) je špecializované ladiace rozhranie, štandard IEEE 1149.1.
Doslova programátor JTAG je zariadenie, ktoré možno pripísať jednému z nasledujúcich typov:

  • Špecializované JTAG programátory určené na programovanie a testovanie v sériovej výrobe. Takéto programátory JTAG sú vhodné v tom, že v 1 prechode vám umožňujú naprogramovať mikroobvod priamo v zariadení používateľa av prípade potreby otestovať výkon zariadenia;
  • Špecializované debuggery, ktoré kombinujú funkcie JTAG emulátora a JTAG programátora. Zároveň emulátor aj programátor využívajú port JTAG servisovaného mikroobvodu. Napríklad JEM-ARM (programátor emulátora JTAG), využíva všetky možnosti protokolu JTAG a poskytuje nielen programovanie, ale aj úplné ladenie mikrokontrolérov rodiny ARM, Cortex. ;
  • Univerzálne programátory, ktoré spolu s podporou paralelného programovacieho režimu podporujú aj sériový režim cez rozhranie JTAG;
  • Početné amatérske rádiové obvody určené na programovanie 1 alebo viacerých typov mikroobvodov cez port JTAG. (analogicky s tzv. PIC programátormi).

Všetky univerzálne programátory série ChipProg s rozhraním USB podporujú programovanie JTAG spolu s podporou mnohých ďalších protokolov.

Univerzálny USB programátor optimalizovaný pre vysokorýchlostné programovanie NAND Flash, mikrokontrolérov, FLASH, E (E) PROM, NVRAM, FPGA, PLD. Popis programátora

Univerzálny USB programátor. Rýchle programovanie mikrokontrolérov, FLASH, NAND, EEPROM, EPROM, NVRAM, FPGA, PLD. Charakteristika programátora

Cenovo dostupný, univerzálny programátor s rozhraním USB. Programovanie mikrokontrolérov, FLASH, EPROM, EEPROM, NVRAM. Popis programátora

In-circuit ISP programátor. Programovanie mikrokontrolérov a pamäťových čipov v zariadení užívateľa. Popis programátora

ChipProg-G41 Priemyselná programátorská kopírka. Najrýchlejšie programovanie, replikácia mikrokontrolérov, FLASH, NAND, E (E) PROM, NVRAM, FPGA, PLD.

Ďalším výrobne nekomplikovaným programátorom je COM programátor. Ak použijete alternatívny režim COM portu Bitbang, nie je potrebné konvertovať rozhranie COM portu RS232 na SPI, čo je potrebné pre programovanie. Zostáva len uviesť úrovne signálu COM portu (-12V, + 12V) na požadovanú úroveň (0, + 5V). Toto áno
Obvod programátora COM pre mikrokontroléry AVR:

Tento obvod programátora je celkom bežný a je známy ako Gromov programátor. Názov pochádza od autora programu Gennadija Gromova, ktorý navrhol takúto schému.

Na zostavenie Gromovho programátora potrebujeme nasledovné:

Diódy KD522, KD510, 1N4148 alebo podobne. Môžete použiť akékoľvek rezistory, ktoré nájdete. Slučka IDE môže byť použitá ako slučka. Pri pripájaní slučky sa pre stabilnejšiu prevádzku programátora musí každý "signálny" vodič striedať s "uzemňovacím" vodičom. Tým sa zníži hladina hluku indukovaného vo vedení a tým sa zvýši dĺžka programovacieho kábla. Dĺžka slučky by mala byť do 50 cm Potrebujete tiež konektor na pripojenie k programovateľnému zariadeniu.
Na programovanie v obvode spoločnosť Atmel odporúča štandardné konektory:


Ak to s mikrokontrolérmi plánujete myslieť vážne, urobte z konektorov štandardné. Na jednorazové naprogramovanie zariadenia odporúčam použiť na programátore (takýmito konektormi sú pripojené tlačidlá a LED skrinky počítača k základnej doske - tak som to zobral) a PLS piny na doske. To vám umožní maximálne zjednodušiť rozloženie dosky zariadenia, pretože piny pre programátor sú inštalované v bezprostrednej blízkosti nôh mikrokontroléra. Piny MOSI, MISO, SCK mikrokontrolérov AVR sú umiestnené vždy spolu, takže je možné pre ne použiť trojitý konektor. Robíme samostatné pripojenie pre "zem" -GND a "reset" -Reset.

Nie je ťažké zostaviť programátor COM:

K tomuto programátoru zámerne nedávam plošný spoj, keďže obvod je jednoduchý a hranie sa s rozložením a leptaním dosky sa jednoducho neospravedlňuje.

Aby náš COM programátor fungoval je potrebný, ku ktorému pripojíme programátor a pre mikrokontrolér.

- Keďže režim Bitbang je neštandardný pre port COM počítača, sú možné poruchy (hoci som to nemal). To platí najmä pre notebooky. Ako riešenie tohto problému môžete odporučiť pohrať sa s nastaveniami COM portu (rýchlosť, dátové bity, možnosti riadenia toku, hodnoty vyrovnávacej pamäte...).
- Najprv je vhodné pripojiť samostatný konektor pre „zem“, aby sa vyrovnali potenciály „zeme“ programovateľného zariadenia a počítača. Pre tých, ktorí nevedia, ak je váš počítač zapojený do bežnej zásuvky, bez uzemňovacieho kontaktu, potom vzhľadom na zvláštnosti filtra napájacieho zdroja počítača je na skrini počítača vždy potenciál 110 V.

záver:

- Gromovov programátor COM je jednoduchý a spoľahlivý. Neprestal som ho používať ani po zložení USB programátora (ak nejaký mikrokontrolér prestane programovať USB programátor, určite si to dvakrát preverím na Gromovom programátore).
- Keďže Gromovov programátor je zostavený na pasívnych prvkoch, nepotrebuje pre seba napájanie. Navyše, vďaka parazitnému napájaniu je možné mikrokontrolér programovať bez toho, aby bol k nemu pripojený zdroj energie! Aj keď neodporúčam programovať týmto spôsobom, samotná skutočnosť je zaujímavá.
- Pre používateľov Algorithm Builder je tu pekný bonus! Tento programátor je možné použiť na ladenie obvodov čipu (softvér JTAG).