6.10. rauta jtag ja avr

10
1 JTAG testiliitäntä Pentti Vahtera 5.8.2006 10.11.2006 + 24.12.2007 + 26.08.2008 ”Elämä on kaunis ja hyvä elää sille, jolla on aikaa ja tilaa unelmille. Ja mielen vapaus. On vapautta valvoa kesäisiä öitä ja kuunnella hiljaisen haavan värinöitä. Ja elää elämäänsä. Ja elää elämäänsä.” - Vexi Salmi ”On vapautta opetella Ceellä koodaamista ja rakennella laitteita mikro-ohjaimista. Ja elää elämäänsä. Ja elää elämäänsä.” - Mr Mable Sisältö Mikä on JTAG? Boundary Scan Mikä on AVR-JTAG? memory programming on-chip debug JTAG ja PV-M32 Yleistä Piirikorttien ja itse IC-piirien monimutkaistuessa myös niiden testaus tulee samalla entistä monimutkaisemmaksi. Miten testaat piirin jonka liitäntänastat ovat kotelon alla (BGA, Ball Grid Array), tai jos (rekisterin) signaaleja ei ole lainkaan tuotu piirin ulkoisiin nastoihin, tai piiri ne on upotettu piirilevyyn? 1980-luvulla perustettiin työryhmä Joint Test Action Group eli JTAG. Se kehitti testausmenetelmän Boundary Scan (boundary = rajapinta). Siitä tuli myöhemmin (1990) IEEE:n standardit 1149.1 ja 1149.4 (IEEE153). Boundary Scan = JTAG Testiliitäntä joka on joko piirikortilla ja/tai IC-piirissä. Sen kautta voidaan hallita testaus, emulointi, ohjelmointi, yms. Boundary = rajapinta, testisolut ovat piirin reunoilla JTAG, Joint Test Action Group, on boundary scanin kehittänyt yhteisö. Tämä loi yhteiset pelisäännöt mikropiiritasolla tapahtuvalle testaukselle. Esim. mikro-ohjain voidaan testata ilman että siitä aiheutuu haittaa piirin normaalille toiminnalle. Se on tänä päivänä laajalti käytössä, erikoisesti ohjelmoitavissa logiikkapiireissä, mm. ASIC-piirit ja mikro-ohjaimet. Testauksen (protot, tuotanto, huolto) lisäksi se soveltuu mainiosti myös esim. mikro-ohjaimen (AVR) sisäisen rakenteen ja toiminnan opetukseen/opiskeluun.

Upload: digindom

Post on 08-Apr-2015

241 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 6.10. rauta Jtag Ja Avr

1

JTAG testiliitäntä Pentti Vahtera 5.8.2006 10.11.2006 + 24.12.2007 + 26.08.2008 ”Elämä on kaunis ja hyvä elää sille, jolla on aikaa ja tilaa unelmille. Ja mielen vapaus. On vapautta valvoa kesäisiä öitä ja kuunnella hiljaisen haavan värinöitä. Ja elää elämäänsä. Ja elää elämäänsä.”

- Vexi Salmi ”On vapautta opetella Ceellä koodaamista ja rakennella laitteita mikro-ohjaimista. Ja elää elämäänsä. Ja elää elämäänsä.”

- Mr Mable Sisältö Mikä on JTAG? Boundary Scan Mikä on AVR-JTAG? memory programming on-chip debug JTAG ja PV-M32 Yleistä Piirikorttien ja itse IC-piirien monimutkaistuessa myös niiden testaus tulee samalla entistä monimutkaisemmaksi. Miten testaat piirin jonka liitäntänastat ovat kotelon alla (BGA, Ball Grid Array), tai jos (rekisterin) signaaleja ei ole lainkaan tuotu piirin ulkoisiin nastoihin, tai piiri ne on upotettu piirilevyyn? 1980-luvulla perustettiin työryhmä Joint Test Action Group eli JTAG. Se kehitti testausmenetelmän Boundary Scan (boundary = rajapinta). Siitä tuli myöhemmin (1990) IEEE:n standardit 1149.1 ja 1149.4 (IEEE153).

Boundary Scan = JTAG Testiliitäntä joka on joko piirikortilla ja/tai IC-piirissä. Sen kautta voidaan hallita testaus, emulointi, ohjelmointi, yms. Boundary = rajapinta, testisolut ovat piirin reunoilla JTAG, Joint Test Action Group, on boundary scanin kehittänyt yhteisö.

Tämä loi yhteiset pelisäännöt mikropiiritasolla tapahtuvalle testaukselle. Esim. mikro-ohjain voidaan testata ilman että siitä aiheutuu haittaa piirin normaalille toiminnalle. Se on tänä päivänä laajalti käytössä, erikoisesti ohjelmoitavissa logiikkapiireissä, mm. ASIC-piirit ja mikro-ohjaimet. Testauksen (protot, tuotanto, huolto) lisäksi se soveltuu mainiosti myös esim. mikro-ohjaimen (AVR) sisäisen rakenteen ja toiminnan opetukseen/opiskeluun.

Page 2: 6.10. rauta Jtag Ja Avr

2

Kaikissa ”vakavasti otettavissa ” mikropiireissä boundary scan-JTAG-liitäntä on valmiina. Tai se voidaan itse rakentaa käsittämään kortin kaikki piirit ja kytkennät. JTAG-liitäntää voidaan hyödyntää mikro-piirien testauksen lisäksi myös itse komponenttilevyn (piirikortti) ja useasta piirikortista koostuvan järjestelmän tehokkaaseen tutkimiseen. Testaus voidaan tehdä jopa silloin kun piiri on norm. toiminnassa. Käyttö mm.

- ladonta-, asennus- ja juotosvirheiden tunnistamiseen (oikosulut, katkokset) - monimutkaisten komponenttien toiminnan = sisäisen logiikan tutkiminen - muistien sisällön lukeminen - signaalien kaappaamisen - logiikkapiirien ja mikro-ohjaimien ohjelmointi ja emulointi (mm. AVR)

JTAG-testilaitteiston lisäksi tarvitaan luonnollisesti myös testikone, yleensä PC-kone (halpa) jossa Centronics-portissa on adapteri tai erillinen liitäntäkortti ja siihen testausohjelmisto (yleensä se on kallis). 1. Boundary Scan Nykyään suurimpiin piireihin (mikro-ohjaimet) valmistaja integroi erillisen BS-solurakenteen piirin tuloihin ja lähtöihin. Sen avulla hallitaan JTAG-liitäntäisten piirien testausta, eli voidaan joko lukea tietyn piirin tulon tila, tai ajaa jokin piirin lähtö haluttuun tilaan. Liitännän kautta piiriin voidaan syöttää niin synkronista ohjaus- kuin testidataa ja lukea ulos piirin toiminnan tuloksena syntyvää (tai ulkopuolelta tulevaa) dataa.

Kuva. Boundary-Scan liitännän periaate. Kuvassa on logiikka-piiri (Application Logic) jonka inputissa ja outputissa on BSC, Boundary-Scan Cell. Varsinainen piirin työstämä data tulee piiriin NDI, Normal Data Input-liitännästä ja lähtee ulos NDO, Normal data out-pinneistä. Testisignaali ajetaan sisään TDI, Test Data Input-pinneistä BSC:n läpi ja luetaan logiikan inputin ja outputin tilat TDO, Test Data Output-pinneistä ja johdetaan lopulta analysoitavaksi PC:n testiohjelmaan.

Page 3: 6.10. rauta Jtag Ja Avr

3

Boundary Scan = JTAG Testiliitäntä joka on joko piirikortilla ja/tai IC-piirissä. Sen kautta voidaan hallita testaus, emulointi, ohjelmointi, yms. Boundary = rajapinta, testisolut ovat piirin reunoilla JTAG, Joint Test Action Group, on boundary scanin kehittänyt yhteisö.

Kuten ed. kuvasta näkyy BS-liitäntä on sarjamuotoinen. Kaikki BS-solut ovat samanlaisia sekä piirin tuloissa että lähdöissä, eli kaikkia piirin I/O-linjoja voidaan ohjata samalla tavalla. Kaikkien korttien ja niissä olevien piirien BS-solut ketjutetaan neljällä johtimella, jolloin saadaan ikäänkuin pitkä siirtorekisteri. Testidata kulkee piirin jokaisen liitäntänastan kautta. Boundary-scanin avulla saadaan piirikortin testista kattava ja samalla edullinen. Perinteiset neulapeti-systeemit voidaan unohtaa. TAP Controller, TAP, Test Access Port Jokaisessa boundary-scan piirissä on TAP-ohjain jolla liitytään itse sisäiseen BS-verkkoon. Se ohjaa koko JTAG-liitäntää käskyrekisterin (Instruction Register) kanssa. TAP on tilakone joka ohjaa testiliitynnän toimintaa TMS-signaalin ja sarjaliitännän kautta syötettyjen komentojen avulla. Testausliitännän kautta voidaan lukea ja ohjata kunkin liitäntänastan tilaa muista nastoista riippumatta.

Kuva 1. JTAGin rakenne (Intel) Käskyrekisteri, Instruction Register Sillä valitaan JTAG-liitännän eri toiminnot (standardin mukaiset ja piirinvalmistajan omat). Eli se määrää ”mitä tehdään”.

Page 4: 6.10. rauta Jtag Ja Avr

4

2. Piirin ulkopuolella testausliitäntä näkyy neljänä signaalina: TCK, Test Clock Input JTAG-logiikan kellosignaali testien sisään- ja ulos- kellottamiseksi. Mikro-ohjaimen sisäinen kello ja tämä TCK-kello ovat erillään toisistaan, siis asynkroninen toiminta. Kellottaa testit sisään ja ulos. TMS, Test Mode Select TAP-controller ohjaus. Testimoodin valintasignaali, mm. valinnat käsky- ja muiden rekisterien välillä. TDI, Test Data Input Sillä siirretään dataa ja käskyjä sarjamuodossa BS-rekisterien läpi TDO, Test Data Output Rekisterien sisällön lukeminen, testin lähtödata TRST, The Test Reset Signal Testin asynkroninen nollaus (ylimääräinen, ei käytössä kaikissa systeemeissä, nollaus voidaan hoitaa myös TMS ja TCK signaaleilla), Tällä nollataan testauslogiikka.

Katso C-portin pinnien selitys JTAG:n osalta.

JTAG on ”Piirin sisäinen internet”. Sen avulla voidaan lukea/kirjoittaa sisäiset rekisterit ja portit. Sarjamuotoinen testidata ajetaan ketjun läpi.

Page 5: 6.10. rauta Jtag Ja Avr

5

3. JTAGICE ja AVR Kaikissa Atmelin AVR ATmega-ohjaimissa, joissa on vähintään 16 kB flash-muistia, on on IEEE 1149.1 mukainen JTAG-liitäntä. JTAG ICE ja AVRStudio yhdessä mahdollistavat pääsyn mikro-ohjaimen sisäisiin resursseihin samalla kun ohjelmaa ajetaan oikeassa ympäristössä. Tämä tekee ohjelman debuggaamisen (virheiden jäljitys) helpoksi. Samalla ohjelman kehitystyö nopeutuu ja tulee mielekkäämmäksi. Ja mikä parasta: opetuksellisesti hienon yhdistelmän. Alkuperäinen JTAG ICE tai sen klooni

- tyyppinimi Mark I or mkI ICE - yksinkertainen, perustuu mega16 ohjaimeen, Atmel ei enää tue - osaa vain m16, m32, m162, m169, m323, m64, m128, ei osaa uusia ohjaimia - tämä on sisäänrakennettuna PV-M322-kortille.

JTAG ICE mkII

- keskustelee kaikkien AVR kanssa, joissa on JTAG - uudempi on mark II mkII, se on paljon monimutkaisempi (2 kpl mega128-

ohjainta) ja siksi kallis, - ei vielä kloonattu. osaa myös debugWire.

Page 6: 6.10. rauta Jtag Ja Avr

6

JTAG signaalit Atmel on normioinut JTAG-liitännän pinnijärjestyksen. Liitin on 10-pinninen.

Pin Signal I/O Description 1 TCK Output Test Clock, testien sisään ja ulos kellotukseen

from JTAG ICE to target JTAG port 2 GND - Ground, maa 3 TDO Test Data Output, testin lähtödata, testidata ulos

data from target JTAG port to JTAG ICE 4 VTref Input Target Voltage. VDD 5 TMS out Test Mode Select, testimoodin valinta

from JTAG ICE to target JTAG port tesinvalintasignaali

6 nSRST out/in open collector out, from adapter to the target system reset. 7 Vsupply input Adapterin käyttöjännite. 8 nTRST NC Not connected, varattu, testin asynkroninen nollaus (ei

pakollinen, nollaus voidaan hoitaa myös TMS ja TCK signaaleilla) Test Reset = Testin nollaus

9 TDI Test Data Input, testin sisäänmenodata, testidata sisään data from JTAG ICE to target JTAG port

10 GND - Ground, maa JTAG ICE JTAG ICE on liitäntä AVR:n sisällä olevaan OCD-systeemiin, On-chip Debugging. Se sisältää liitännän ja metodit joilla monitoroidaan ja ohjataan fyysisen AVR-ohjaimen toimintaa JTAG IEEE1149.1 yhteensopivan laitteen kautta. Atmel on laajentanut AVR:n JTAG-liitännän BS-ominaisuuksia lisäämällä ISP, In-System Programming, eli ohjelmointi- ja debuggausominaisuudet.

Kuva xx. AVRStudio on ohjelma jota ajetaan PC:ssä (Windows), JTAGICE on erillinen laite, tai se voi olla integroutuna kuten PV-M322-kortilla.

Page 7: 6.10. rauta Jtag Ja Avr

7

Toiminta: Kaikissa AVR-ohjaimissa joissa on JTAG, on sisäinen OCD, On-chip Debug- logiikka, jonka liitäntänä JTAG ICE toimii. OCD-logiikalla ohjataan AVR:n toimintaa. Kun perinteinen emulaattori emuloi laitetta, JTAG ICE ohjaa ja ajaa koodia toimivassa laitteessa. Sähköiset ja aikaan sidotut ominaisuudet ovat reaaliaikaisia. Kun JTAG ICE on run-modessa, koodin ajo ei ole ICEn hallinnassa. JTAG ICE pollaa = kyselee jatkuvasti kohdetta (target) ja etsii koodista break-riviä. Kun se havaitsee breakin, OCD lukee JTAG-liitännän kautta kohdeohjaimen datat ja ”imee” saman tiedon kuin oikea emulaattori tekisi. Koska järjestelmässä ei ole bufferia käytössä, luetaan vain break-hetken tilanne rekisterien ja muuttujien suhteen. Kun break-point kohdataan, tai ajetaan käsky kerrallaan, koodin ajo keskeytetään, luetaan tilanne (päivitetään auki olevat ikkunat) ja koodi voidaan uudelleen käynnistää ja ohjelman ajo jatkuu seuraavaan breakpointiin. JTAG ICE ja AVRStudio yhdessä antavat hyvän kuvan mitä AVR:n sisällä oikeasti tapahtuu. Ja tuloksen vahvistaa vielä liitäntäkortin ledit tai lcd tai muu I/O. On-Chip Debugging OCD, On-chip Debugging, ei ole “oikean” emulaattorin veroinen, vaan se on protokolla-muunnin/liitäntä, jolla AVRStudio keskustelee AVR:n OCD-liitännän kanssa. Ehdottomasti sillä kuitenkin on paikkansa ohjelmoijan työkaluna ja varsinkin opiskelijalle tärkeä oppimistyökalu. Parasta on, että ajat debugattavaa koodia oikeassa ympäristössä jossa sähköiset ja aikaan sidotut ominaisuudet ovat REAL Käyttäjä voi ajaa koko ohjelman kerralla, ajaa sitä käsky kerrallaan, myös aliohjelmafunktion käskyt yksitellen, mahdollisuus ajaa kutsutut funktiot vauhdilla, asettaa kursorin tietylle riville ja ohjelman ajo stoppaa siihen (breakpoints), pysäyttää ohjelman ajo ja resetoida sen, jne.

Kuva. xx. AVR ja JTAG-BS-liitäntä. Mittasignaali kulkee Data In-pinnistä Data Out-pinniin kellon ohjaamana. Se kulkee BS-, Boundary Scan, rekisterien kautta, tutkaillen ”kaiken tarvittavan AVR:n tilasta”.

Page 8: 6.10. rauta Jtag Ja Avr

8

Debugger pääsee kaikkiin AVR:n sisäisiin oheislaitteisiin, sisäiseen ja ulkoiseen SRAM-muistiin, EEPROM- ja flash-muistiin, rekistereihin (mm. PC, Program Counter = ohjelmalaskuri, SP = Stack Pointer). Tämän lisäksi voit ohjelmoida flash- ja EEPROM-muistin, voit muuttaa fuse- ja lock-bitit, jne. Kun koodia ajetaan, JTAG ICE pollaa prosessoria etsien break tilaa. Kun se havaitsee breakin, OCD tekee kuten mikä tahansa emulaattori. Kaikki mitä se saa selville tapahtuu vain break-tilassa, siis vain lopputuloksen kun stopataan.

Tässä on netistä ”lainattu” kuva, jossa pelkistettynä kerrotaan miten JTAG AVR:ssä toimii.

Page 9: 6.10. rauta Jtag Ja Avr

9

JTAG Programming JTAG-ohjelmointiliitäntä toimii kuten mikä tahansa muukin ISP. Jos aioit käyttää JTAGia ohjelmointiin, on fuse-bitit asetettava oikein. JTAGEN ei riitä, myös Lock bits.

Seuraava taulukko kertoo miten bitit tulee asettaa. P on programmed ja u on un-programmed.

LB

mode LB2 LB1 KUVAUS

1 U U Muistin suojausbittejä enabloitu.

2 U P

Flash- ja EEPROM-muistien ohjelmointi estetty in Parallel and SPI/JTAG Serial

Programming mode. Fuse-bitit lukittu sekä Serial and Parallel Programming mode. Lukeminen mahdollista.

- P U Invalid Mode

3 P P

Flash- ja EEÅROM-muistine ohjelmointi ja verifiointi on estetty in Parallel and SPI/JTAG Serial Programming mode. Fuse-bitit on lukittu sekä Serial että Parallel Programming mode.

3. JTAG ja PV-M322 Ilman JTAG-liitäntääkin voidaan tutkia mitä AVR-ohjaimen sisällä tapahtuu. Vaikkapa laittamalla ohjelmaan sopiviin kohtiin ylimääräisiä tulostus-komentoja portissa olevaan LED-moduuliin. Tai hoitamalla muuttujan tulostus LCD-näyttöön tai USARTin kautta PC:n monitoriin. Mutta JTAG-liitäntä tuo paljon enemmän sisäistä infoa, paljon tehokkaammin ja paljon mukavammin. Se nostaa ohjelmien kehitystyön ja debuggauksen, aivan uudelle tasolle, työskentelystä tulee ”real professional”.

Page 10: 6.10. rauta Jtag Ja Avr

10

JTAG-unit voidaan ajatella olevan suuri siirtorekisteri, joka on asennettu AVR:n sisään ja se kulkee kaikkien olennaisten pinnien kautta (muistit, rekisterit, portit, timer, jne).. Se on kuin lentoaseman laukkukuljetin, joka tuo laukut = bitit jokaisesta AVR:n rekisteristä. Tämän solurakenteen avulla voidaan joko lukea tietyn piirin tulon tila, tai ajaa jokin piirin lähtö haluttuun tilaan.

Tähän on varattu ATmega32-ohjaimessa C-portin 4 sisintä pinniä. Kun käytetään yhdessä AVRStudio-ohjelmaa ja JTAG-liitäntään kytkettyä JTAGICE-moduulia tai PV-M32-korttia (jossa tuo moduuli on valmiina), AVRStudio ikäänkuin keskustelee tulkkina toimivan JTAG-liitännän kautta suoraan AVR:n rekisterien ja muistien kanssa. Pakettia voidaan käyttää ohjelmavirheiden jäljitykseen = debuggamiseen, koodin toiminnan reaaliaikaiseen testaukseen ja ohjelmointiin = ajokelpoisen koodin lataamiseen PC:stä AVR:n flash-muistiin. Samalla paketti on mainio työkalu mikro-ohjaimen toiminnan opiskeluun, AVR:n sisäiseen bittitason tarkkailuun ja vielä ”reaaliajassa”. Hämäläisetkin ehtivät mukaan, koska koodia (myös C-koodia) voidaan ajaa käsky kerrallaan ja sen jälkeen tutkia rauhassa mitä missäkin rekisterissä, muuttujassa ja muistiosoitteessa tapahtui.

AVRStudion käytöstä debuggaamiseen on oma Microsalon ohje. Se löytyy sähköisestä kirjasta ”Mikro-ohjaimen ohjlemointi C-kielellä 2”