HCS08 – Depanare serială

by donpedro

Familia de microcontrolere de 8 biţi HCS08 a fost lansată pe piaţă în iunie 2003. Primul şi cel mai mare atribut al acestei familii este
abilitatea de a extinde durata de viaţă a bateriilor cu ajutorul unui număr de regimuri de funcţionare de mică putere optimizate. A doua
caracteristică importantă este capabilitatea de a-şi mări viteza ceasului intern până la 20Mhz pentru a executa rapid algoritmi complecşi. Datorită acestor două caracteristici remarcabile, este probabil uşor să se scape din vedere altă însuşire semnificativă: modulul integrat de depanare serială. Acesta reprezintă cel mai avansat modul hardware de depanare integrat într-un microcontroler de 8 biţi.
Articolul de faţă va prezenta sistemul de depanare integrat microcontrolerului HCS08
.

Depanarea “In-Circuit”
Dezvoltarea şi testarea software a devenit cea mai importantă componentă a bugetului în realizarea multor sisteme embedded. De aceea, nu trebuie să ne surprindă progresele făcute în acest domeniu; acestea s-au făcut prin integrarea unor sisteme de depanare sofisticate foarte puternice. Înainte de a intra şi mai mult în detaliu în această nouă direcţie, merită să discutăm mai întâi câte ceva despre uneltele de dezvoltare convenţionale folosite de inginerul proiectant.
O metodă convenţională de depanare a microcontrolerelor este folosirea unui program monitor. Un circuit “bootstrap” va descărca o porţiune a codului în memoria RAM pentru execuţie şi depanare. Un dezavantaj al acestei metode îl reprezintă erorile generate ce pot altera zone ale memoriei şi unele funcţii I/O. Emulatoarele “in-circuit” au fost dezvoltate pentru a permite accesul uşor la regiştrii unităţii centrale şi la memorie facilitând implemetarea unor caracterisitici precum întreruperile hardware şi urmărirea evoluţiei rezultatelor parţiale. Emulatoarele “in-circuit” permit conectarea printr-un cablu (cu ajutorul unei interfeţe header/socket) la placa de circuit. Header-ul este în fapt, reprezentarea exactă a configuraţiei terminalelor capsulei microcontrolerului.
Sunt câteva probleme cu uneltele convenţionale de depanare “in-circuit”. Prin integrarea pe scară tot mai largă a microcontrolerelor, creşterea semnificativă a vitezelor de operare şi utilizarea unui număr din ce în ce mai mare de pini impun alte abordări în ceea ce priveşte noile emulatoare “in-circuit”. Cablurile şi conectorii de legătură devin tot mai complecşi, scumpi şi fragili în timp ce restricţiile de spaţiu ale plăcii target (destinaţie) vor exclude adesea aplicarea acestor noi tipuri de conexiuni.
Soluţia la aceste probleme a fost alocarea unui spaţiu în circuitele interne ale microcontrolerului destinat software-ului de dezvoltare şi depanare. Aceasta reprezintă o alternativă la programele monitor sau la emulatoarele “in-circuit”. Depanarea serială este o configuraţie hardware şi software ce permite sistemului gazdă (de exemplu unui PC) să comunice cu un chip embedded. Există multe metodologii de depanare serială (serial debugging), dar toate utilizează un număr limitat de pini pentru a comunica de pe calculatorul gazdă cu microcontrolerul destinaţie (target microcontroller). O nouă şi puternică generaţie de depanatoare seriale a fost implementată pe noua familie de microcontrolere HCS08. Merită să amintim că sistemele de depanare serială devin acum mai populare decât microcontrolerele tipice “high end” (precum circuitele de 32 biţi) având o funcţionalitate avansată şi prezentând avantajul că o asemenea implementare nu a mai fost făcută în alte microcontrolere de 8 biţi.

Figura 1 HCS08 Sistemul de conexiune pentru depanare serială

HCS08 Sistemul de depanare serială “On-Chip”
Figura 1 ilustrează o diagramă a unui sistem tipic HCS08 prevăzut cu acces de depanare. Calculatorul gazdă este conectat la sistemul destinaţie (target system) printr-o interfaţă BDM – Background Debug Mode. Controlerul “on chip” BDC (Background Debug Controller) este un circuit cablat astfel că nu mai este necesară existenţa unui program monitor în interiorul microcontrolerului. Acest lucru înseamnă că acum este posibil să depanezi un program utilizator în sistemul destinaţie fără folosirea unitaţii centrale sau instrucţiunilor ei. Prin urmare, controlerul BDC permite utilizatorului accesul intern la memoria microcontrolerului de pe calculatorul gazdă în timpul rulării programului utilizator.
Calculatorul gazdă este conectat la sistemul destinaţie prin interfaţa BDM. Interfaţa se “leagă” de calculator folosind un cablu paralel sau USB. Interfaţa BDM controlează protocolul de comunicaţie serială care comunică cu sistemul destinaţie. Conexiunea la sistemul target se realizează printr-un conector BDM cu 6 pini. Acesta corespunde standardului de conectori BDM dezvoltaţi pentru populara familie de microcontrolere pe 16 biţi, HCS12. Această interfaţă comună înseamnă că poate fi folosită aceeaşi interfaţă BDM pentru toată seria de microcontrolere HCS08 şi HCS12. Interfaţa BDM este numită unealtă “Multilink” şi este disponibilă la preţul de 199 USD. Pe placa sistemului destinaţie există o interfaţă cu 6 pini prin care se conectează pinii “background”, “reset”, “power” şi “ground”. Conectarea la pinul “reset” este opţională, dar este utilă pentru că permite plăcii de circuit destinaţie să fie iniţializată de o tastă de la calculatorul gazdă. Conexiunea “power” este de asemenea opţională şi permite interfeţei BDM de a se alimenta de asemenea de la calculatorul gazdă.

Figura 2 Interfaţa BDM “Multilink”: Versiunea Paralelă (stânga) şi versiunea USB (dreapta)

Figura 2 ilustrează unealta Multilink ce serveşte drept interfaţă BDM. În partea dreaptă a figurii este prezentată versiunea nouă USB.
Când sistemul este configurat cu interfaţă de depanare serială, pinul “background” este utilizat pentru iniţializarea modului depanare serială. Acesta este singurul pin cerut şi este de asemenea folosit pentru comunicaţii seriale bi-direcţionale. Avantajul singurului pin de intrare “mod background” este acela că toţi ceilalţi pini ai microcontrolerului sunt utilizaţi pentru funcţiile lor “in-circuit” pentru care au fost proiectaţi fără nici o limitare. Un protocol serial utilizator folosit pentru comunicarea cu calculatorul este gestionat de interfaţa Multilink. Când microcontrolerul a fost plasat în modul “background”, există un număr 30 de comenzi ce pot fi executate. Există două categorii de comenzi. Prima categorie de comenzi “active background”. Aceste comenzi sunt utilizate pentru citirea sau scrierea regiştrilor CPU şi să iniţieze comenzile de depanare GO şi TRACE. A doua categorie de comenzi o reprezintă comenzile “non-intrusive”. Acestea sunt folosite pentru citire sau scriere în memoria utilizator sau în regiştrii de control ai periferiei. Ele pot de asemenea modifica regiştrii de control background care nu fac parte din harta memoriei. Comenzile “non-intrusive” pot accesa memoria când unitatea centrală lucrează în modul normal “Run Mode”.
Există un total de 30 de comenzi, 17 comenzi în modul “active background” şi 13 comenzi “non-intrusive”. Comenzile “active background” pot accesa regiştrii CPU direct – comenzi precum Read, Write şi Trace. Instrucţiunea Trace va executa o singură instrucţiune şi apoi instrucţiunea Stop. Aceasta înseamnă că după ce a fost executată o instrucţiune suspectă, utilizatorul poate examina conţinutul CPU şi al regiştrilor şi să observe efectele instrucţiunii. Comenzile “non-intrusive” pot accesa memoria când unitatea centrală execută programul utilizator. Aceste comenzi folosesc o tehnică foarte inteligentă pentru a obţine accesul la magistrală “furând” un ciclu de bus. Când un ciclu este furat, unitatea centrală nu va folosi adresele şi datele magistralei, astfel controlerul BDC poate accesa locaţiile de memorie pentru citirea sau scrierea datelor în ea.
Există doi comparatori incluşi în HCS08. Aceşti comparatori pot fi utilizaţi să lanseze o întrerupere în cod (sau să genereze o întrerupere software) dacă comparatoarele găsesc o condiţie pre-existentă pe magistrala de adrese. Asociat cu comparatoarele mai există un “buffer trace” – buffer de urmărire. Acesta poate captura până la 8 cuvinte din fluxul de date. Dacă este suspectată o eroare (un “bug”) într-o anumită zonă de cod, comparatoarele sunt pregătite să declanşeze urmărirea. În acest moment bufferele “trace” înregistrează datele ce trebuie urmărite. Pentru înregistrarea unor informaţii cât mai utile, sunt înregistrate doar schimbările fluxurilor de date. Nu este necesar să se înregistreze orice operaţie sub-secvenţială ce poate fi uşor reconstruită. Pe scurt, combinaţia comparatoare / bufferele de urmărire / program de depanare a recreat o analiză logică simplificată “on-chip”.
În sumar, familia de microcontrolere HCS08 oferă capabilităţi de depanare unice folosind o interfaţă ieftină şi uşor de utilizat de la un PC. Nivelul capabilităţilor de depanare este mult mai mare decât sistemul tradiţional de depanare bazat pe programul monitor ce poate avea erori. În plus, odată ce header-ul cu 6 pini a fost implantat pe un sistem destinaţie, este posibilă folosirea acestuia pentru reprogramare Flash dacă este cerut un software actualizat sau un “bug fix”. Poate fi de asemenea folosit pentru diagnosticare. Beneficiile aduse de acest sistem sunt micşorarea costurilor şi a timpului de dezvoltare.

Figura 3 Derivatele familiei de microcontrolere HCS08

Există în mod curent patru derivate ale familiei 9S08 cu încă alte 12 planificate să apară către finele anului 2003. Caracteristicile primelor patru sunt prezentate în figura 3. În afară de capabilitatea unică de depanare serială, principalul beneficiu al acestor produse îl reprezintă abilitatea de a opera în “stop mode” la un curent mic de 20nA, dar furnizând o performanţă de până la 20 MIPS. Într-o recentă conferinţă de presă producătorul de baterii Duracell a anunţat că introducerea pe piaţă a familiei de produse HCS08 a însemnat un mare “pas-înainte” ce vine în ajutorul producătorilor/consumatorilor de echipamente portabile în care durata de viaţă a bateriilor este semnificativă.

de Ross Bannatyne, Motorola Semiconductor Products Sector
rbannatyne@austin.rr.com

S-ar putea să vă placă și