Ce sunt si cum functioneaza ICE (In Circuit Emulators)?

Ce sunt si cum functioneaza ICE (In Circuit Emulators)?

Timp de citit: 5 minute

Emulatorarele sunt echipamente electronice foarte complexe care ne dau posibilitatea sa vedem ce se intampla in structura interna a microcontrolerului sau procesorului.

Se poate face analogia cu un osciloscop sau un analizor logic, dar care analizeaza ce se intampla in interiorul microcontrolerelor la nivel de semnale, registri, memorie si instructiuni de program.

Cum ne ajuta ICE (In Circuit Emulators)?

Cu ajutorul lor putem parcurge programele pas cu pas atat la nivel de cod masina cat si la nivel de linie de program C.

Putem sa parcurgem programele pana in punctele dorite (asa zisele breakpoint-uri), pot fi vizualizati registri si portiuni din memoria microcontrolerului (deci inclusiv variabilele de program), poate fi vazut modul in care au aparut anumite evenimente (secventa de instructiuni care a dus la aparitia evenimentelor similar cu lupa de timp a unui osciloscop, dar aplicata software-ului).

Toate acestea se intampla in timp ce prototipul hardware al aplicatiei functioneaza cu ajutorul emulatorului.

Din ce este compus un emulator?

Partea cea mai sensibila este asa zisa proba sau capul de emulare. Este un dispozitiv electromecanic care are exact aceeasi forma constructiva ca si microcontrolerul si care se aseaza pe prototipul hardware al aplicatiei in locul microcontrolerului.

Prin acest cap de emulare se aduc in emulatorul propriu-zis toate semnalele corespunzatoare microcontrolerului. Emulatorul sau capul de emulare contine fie un microcontroler special (numit bondout chip) fie microcontrolerul din aplicatie astfel ca software-ul aplicatie ruleaza in mod real, nesimulat.

Ce este si cum functioneaza Bondout chip-ul?

Bondout chip-ul este un microcontroler produs special pentru fabricantii de emulatore si are cam de 3 ori mai multi pini decat microcontrolerul de baza, pinii suplimentari sunt conectati la BUS-ul si la structurile interne ale microcontrolerului pentru a ne permite sa vedem ce se petrece in structura interna a microcontrolerului.

Emulatorul este in permanenta conectat cu un software de emulare care ruleaza pe PC prin intermediul caruia incarcam aplicatia in microcontroler si o parcurgem asa cum dorim.

Pentru fiecare familie de microcontrolere se construieste de regula un emulator, ceea ce difera este capul de emulare: un emulator poate lucra cu mai multe capete de emulare, in plus se ofera o gama larga de adaptoare pentru diferitele tipuri de capsule.

O alta caracteristica importanta este frecventa maxima de lucru a microcontrolerului din aplicatie, un emulator ca si un osciloscop are o frecventa maxima pana la care poate urmari procesul.

Care sunt avantajele folosirii emulatoarelor?

Timpul castigat

Software-ul de emulare permite vizualizarea (chiar si in timp ce aplicatia de pe microcontroler ruleaza) a variabilelor, registrilor si memoriei de lucru. Efectul oricarei modificari in corpul sursa al programului poate fi vazut imediat, in mod direct.

Controlul aplicatiei

Alt avantaj este controlul aplicatiei. Programul poate fi rulat linie cu linie atat in cod masina cat si in C.

Programul poate fi parcurs pana in orice punct, pot fi setate un numar foarte mare de opriri in program (breakpoint-uri). Pot fi setate evenimente care sa cauzeze oprirea aplicatiei cu posibilitatea analizarii in urma a instructiunilor care au dus la aparitia evenimentului.

Spre exemplu, emulatorul poate fi setat astfel incat atunci cand o anumita variabila ajunge la valoarea „0” sa opreasca aplicatia si sa arate ultimele instructiuni facute de microcontroler pana sa se intample acest eveniment.

Un alt aspect al dezvoltarii aplicatiilor folosind emulatoarele tine de analiza programului. Emulatoarele pot analiza si raporta gradul de folosire al unei functii intr-o aplicatie.

Aceasta inseamna ca putem avea informatia de cate ori a fost apelata o anumita functie, cat la suta din timpul de calcul al microcontrolerului a fost folosit de aceste apelari si chiar mai mult. Putem afla in microsecunde timpii minimi, medii si maximi de executie a functiilor.

Analiza parcurgerii codului

O alta facilitate oferita de emulatoare este analiza parcurgerii codului. In functie de parametrii de intrare si de starile anterioare calea software-ului de aplicatie se schimba, o portiune de cod ruleaza doar atunci cand sunt indeplinite anumite conditii.

Spre exemplu, o alarma suna doar cand este activata si unul din senzori da un anumit semnal. Atunci cand se considera un produs gata este bine de stiut daca toate instructiunile au fost macar o data executate, trimiterea in productie a aplicatiilor cu cod care nu a fost executat macar o data poate crea surprize, de regula neplacute. Emulatoarele au aceasta facilitate de a arata daca o instructiune a fost sau nu parcursa.

Toate acestea se petrec in timp real pe microcontroler si placa pe care acesta trebuie montat, pe monitorul calculatorului avand in permanenta informatiile din interiorul microcontrolerului fie ca acestea tin de starea programului, registrii interni sau restul memoriei.

Astfel, emulatorul este o solutie performanta de dezvoltare a aplicatiilor cu microcontrolere. Daca in electronica fara microcontrolere se foloseste osciloscopul, in aplicatiile cu microcontrolere se folosesc si emulatoarele in circuit.

Este cel mai eficient mod de a vedea ce se intampla in interiorul microcontrolerului. Mai toate firmele care isi doresc realizarea de aplicatii performante in timp scurt folosesc emulatoare.

Ce probleme mai pot aparea?

Acestea tin de testarea software-ului. Pentru unele produse, partea de testare poate ajunge la 80% din efortul de dezvoltare al software-ului. Problemele de testare apar si la aplicatiile de PC.

Am putea defini testarea astfel: pentru anumite intrari sa verificam daca obtinem de la blocul de software supus testarii iesirile dorite. Lucru destul de greu de realizat pentru aplicatii de PC si cu atat mai mult pentru microcontrolere.

Totusi, acest lucru este posibil folosind un emulator. Acest software de testare prin emulator genereaza valori de intrare si compara rezultatul scos de aplicatia cu microcontroler cu rezultatele asteptate putand avea astfel certitudinea ca software-ul lucreaza corect pentru valorile testate.

Toate aceste perechi valoare de intrare – valoare asteptata pot fi salvate intr-un fisier, testarea putandu-se repeta la fiecare modificare de software.

Cu toate ca emulatoarele nu sunt solutii deloc ieftine de testare a programului, sunt extrem de eficiente. Trecerea de la un produs la altul, de la o platforma la alta se face foarte usor. Certitudinea obtinerii unui produs viabil este foarte mare.

Emulatorul MetaICE XF

Pentru dezvoltarea de aplicatii cu microcontrolere din familia INTEL 8051 sau derivate ale acestuia (Atmel, Dallas, Philips, etc.) firma MetaLink produce seria de emulatoare MetaICE. Emulatorul este compus din trei module.

Partile componente ale emulatorului prezentate si in figura de mai sus sunt: capul de proba tip PDIP 40 ce asigura conexiunea dintre emulator si sistemul testat, circuitul de emulare ce indeplineste si functiile de comunicatie cu PC si verificare conditii de executie a programului precum si un modul de personalizare a microcontrolerului emulat.

Bibliografie:

https://semiengineering.com/
https://www.evilmadscientist.com/

Adauga un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *