Și banc de lucru încorporat pentru avr

IAR este unul dintre cei mai buni compilatori C / C ++ pentru o varietate de microcontrolere, variind de la 8051 la ARM avansate. Despre crearea de proiecte pentru ARM deja scrise în cursul de instruire numit după același controlor, voi scrie despre crearea unui proiect pentru AVR, caracteristici de lucru și depanare în el.






Și banc de lucru încorporat pentru avr

Pentru avr, există 2 versiuni - gratuite, cu o limită de cod de până la 4kB și o versiune completă cu un proces de 30 de zile. De asemenea, nu este dificil să găsiți un remediu. Pe cine să alegeți fiecare decide singur, voi spune doar că pentru munca obișnuită vindecată este necesar să interziceți accesul programului online. Cea mai recentă versiune în acest moment este 5.51. O voi folosi.
Configurarea mediului.
După instalare, merită să faceți setările inițiale ale mediului.
1. Instrumente-> Opțiuni. În Mesajele din Mesaje de afișare, selectați Toate. După aceea, la compilare, vor fi afișate informații despre dimensiunea programului și datele.
2. Deoarece Mediul nu suportă programatori precum AVR ISP, atunci este necesar să se atașeze un programator extern, de exemplu SinaProg. Pentru aceasta, faceți clic pe Instrumente-> Configurare instrumente.
Și banc de lucru încorporat pentru avr

Setările sunt clare și fără explicații. Directorul inițial poate fi lăsat gol sau puteți specifica calea către fișierele de ieșire ale proiectului curent. Apoi, după lansare, dosarul cu firmware-ul va fi selectat imediat. În principiu, fereastra Redark către ieșire este destinată în acest scop. cu care calea ar trebui înlocuită automat cu proiectul curent. Dar, din anumite motive, nu a mers pentru mine.

Creați un proiect.
Rulați bancul de lucru embedded IAR și vedeți fereastra principală a programului:

Și banc de lucru încorporat pentru avr

Alegeți din meniu - Project-> Create New Project. . În fereastra care apare, puteți selecta limba (ASM, C, C ++) și tipul de proiect. Compatibilitatea cu AVR Studio nu are nimic de a face cu ea, așa că vom crea o aplicație pe un C.
Și banc de lucru încorporat pentru avr

Programul vă solicită imediat să salvați proiectul primit. Salvați și obțineți rezultatul următorului cod generat:

Da, încă o dată știe cu siguranță că scurta este sora talentului :) Nu este încă posibil să folosiți acest lucru, astfel încât să puteți trece la setările proiectului.

Ca rezultat, obținem 3 fișiere la ieșire:
  • * .d90 pentru depanare
  • * .eeprom.hex - pentru firmware-ul eeprom
  • * .flash.hex - firmware-ul însuși
În acest sens, setarea proiectului poate fi considerată completă și continuați să scrieți programul.

Să scriu Hello World.
De fapt, nu voi scrie un program care să intercepteze ceva;) Dar voi descrie numai caracteristicile implementării lui C, aplicate la iar. Deci, vom include imediat următoarele la începutul programului:

Fără definiție * 1, câmpurile de biți ale registrelor nu vor fi disponibile. De ce mi se face acest lucru nu este clar? În * 2 este doar o descriere a registrelor. Fără * 3 vor exista unele macrocomenzi.







Întârzierile în timpul sunt făcute prin numărul de măsuri, dar în 99% din cazuri este mult mai convenabil să specificați timpul de întârziere în micro sau milisecunde. Prin urmare, adăugăm următoarele definiții:

Acum întârzierea se poate face astfel:

Pentru a plasa constantele în bliț, se folosește modificatorul __flash:

Pentru variabilele din eeprom, respectiv, modificatorul __eeprom.

Întreruperile sunt declarate după cum urmează:

În cazul în care TIMER2_OVF_vect este tipul de întrerupere, numele întreruperilor pot fi găsite în fișierul descriptiv al procesorului respectiv. Pentru mega16, acesta este C: \\ Program Files (x86) \\ IAR Systems \\ Embedded Workbench 5.4 \\ avr \\ inc \\ iom16.h
TIMER2_interrupt este doar numele întreruperii, puteți scrie orice.
În rest, există același C ca și în orice alt mediu.

Depanarea în IAR
Puteți depana programul în hardware, prin orice debugger hardware. JtagIce și Dragon sunt cele mai celebre și mai accesibile. Aceasta arată conținutul registrelor, variabilelor, elimină / instalează steagurile hardware și întrerupe declanșatoarele. Și spre deosebire de variabilele gcc + studio sunt afișate indiferent de tipul și locația lor. În general, depanarea hardware-ului în iarbă este simplă și plăcută. Tipul de depanator este selectat în proprietățile proiectului. Acolo el este, de asemenea, ajustat.
La cine nu este posibil să utilizați depanare, este posibil să utilizați simulatorul. Nu este atât de fericit. IAR, spre deosebire de studio, nu emulează procesorul. Acest lucru înseamnă că timerele din simulator nu sunt luate în considerare, fișierul pregătit pentru hardware i2c nu este instalat și așa mai departe. Și setarea manuală a pavilionului de întrerupere nu va cauza această întrerupere. Dar variabilele sunt încă afișate corect. Dupa gcc acest lucru ofera incredibil.
Deci, depanarea în iar. Pentru a porni programul de depanare, faceți clic pe triunghiul verde de pe panoul din dreapta.

Și banc de lucru încorporat pentru avr

Ferestre suplimentare sunt deschise prin meniul Vizualizare.
Variabilele (fereastra 4) pot fi afișate în ferestrele Watch, Auto, Statics și Locale. Fereastra de vizionare afișează numai variabilele selectate, toate statice în Statică, iar în Locale numai variabilele locale. Fereastra Auto va conține numai variabile care au schimbat recent valoarea. Ca variabile, puteți specifica numele registrelor. De exemplu, variabila PORTB va afișa starea curentă a acestui port.
Dacă doriți, puteți face fiecare fereastră separat sau puteți selecta marcajul dorit din partea de jos a ferestrei. Metoda de ieșire este modificată tragând ferestrele necesare.
Fereastra Registre (fereastra 3) diferă de variabile prin faptul că afișează nu numai valoarea registrului selectat, ci și registrele asociate cu acesta. De exemplu, portul A va afișa, de asemenea, DDRA și PINA. De asemenea, valoarea fiecărui registru poate fi extinsă pentru a afișa câmpurile de biți.
În fereastra de dezasamblare (fereastra 2) și în programul în sine (fereastra 1), fragmentul de cod executabil curent va fi executat. Dacă selectați o fereastră de asamblare, atunci când urmăriți, fiecare comandă de asamblare va fi executată la rândul său. De asemenea, puteți seta puncte de întrerupere în orice fereastră.
Deci, puteți depana întreaga logică a programului, cu excepția lucrărilor de fier și întreruperi. Și dacă nu puteți face nimic cu simularea fierului, cu excepția modului de setare manuală a biților potriviți, puteți continua să întrerupeți automat. Deși nu este convenabil, dar este posibil. Pentru a face acest lucru, alegeți Simulator-> Interfoane.
Și banc de lucru încorporat pentru avr

În această fereastră este selectat tipul de întrerupere, după ce va începe să funcționeze și intervalele de funcționare. După setarea întreruperii, va începe să funcționeze regulat. Înainte de a simula munca profesionistului, este cu siguranță departe, dar tot mai mult decât nimic.

$ PROJ_DIR $ este calea către fișierul dvs. de proiect (.ewp)
Cântecul este că, declarând căi relative, puteți rula proiectul de oriunde, fără a schimba setările. Aproximativ ca în atașament.

În fereastra de instrumente, directorul de start specifică locația de la care va fi lansat instrumentul.
Lasă această comandă să fie necesară aici
"C: \ IAR \ JLinkARM_V358c \ JLinkGDBServer.exe"
Puteți face acest lucru


în primul caz, directorul de lucru $ PROJ_DIR $ (unde se află .ewp), în al doilea C: \ IAR \ JLinkARM_V358c

Din anumite motive, legăturile nu sunt inserate. (

$ PROJ_DIR $ este calea către fișierul dvs. de proiect (.ewp)
Cântecul este că, declarând căi relative, puteți rula proiectul de oriunde, fără a schimba setările. Aproximativ ca în atașament.
dl.dropbox.com/u/12253020/path.gif

În fereastra de instrumente, directorul de start specifică locația de la care va fi lansat instrumentul.
Lasă această comandă să fie necesară aici
"C: \ IAR \ JLinkARM_V358c \ JLinkGDBServer.exe"
Puteți face acest lucru
dl.dropbox.com/u/12253020/rel.gif
sau așa
dl.dropbox.com/u/12253020/abs.gif

în primul caz, directorul de lucru $ PROJ_DIR $ (unde se află .ewp), în al doilea C: \ IAR \ JLinkARM_V358c

Am depanat simultan în: ISIS, IAR și AVR Studio (prin ubrof8, care este generat de IAR în dosarul exe special pentru acest lucru).

Nu este necesar să inserați această macrocomandă. În meniul OPȚIUNI GENERALE din fila Sistem, bifați caseta de selectare "Activarea definițiilor de biți în I / O-include fișiere", iar câmpurile de biți ale registrelor vor fi disponibile.







Articole similare

Trimiteți-le prietenilor: