TVZ Mechatronics Team


Zagreb University of Applied Sciences, Professional Study in Mechatronics

Koristenje ARM Keil razvojnog okruzenja

U ovoj vježbi prikazn je postupak instalacije Keil uVision5 razvojnog okruženja i LPC1700 paketa programske podrške, uvoza programa s Mbed Online Compiler-a u Keil uVision5 razvojno okruženje te korištenje njegovog debugger-a i na kraju je prikazan postupak kreiranja novog projekta u istom razvojnom okruženju.

Instaliranje Keil uVision5 razvojnog okruženja i LPC1700 paketa programske podrške

Napomena

Pri radu na laboratorijskim vježbama cijeli ovaj korak preskačete, budući da su sve predradnje unaprijed odrađene. Vježba počinje na zadatku Uvoz programa s Mbed Online Compiler-a u Keil uVision5 razvojno okruženje.

  1. Potrebno je preuzeti najnoviju inačicu Keil razvojnog okruženja s Keil službene internet stranice. Besplatna inačica razvojnog okruženja (MDK-Lite), koju ćete preuzeti nakon što obavite besplatnu registraciju (na prije navedenom linku), ima ograničenje na maksimalnu veličinu programskog kôda do 32 KB.
  2. Instalirati Keil uVision5 razvojno okruženje na računalo.
  3. Otvoriti Keil uVision5 i kliknuti na ikonu Pack Installer kao što je prikazano ispod (u nekim slučajevim navedeni prozor se automatski sam pokrene prilikom prvog pokretanja Keil uVision5 razvojnog okruženja):
    /media/uploads/dfraj/keil5_pack_installer.png
  4. Otvorit će Vam se Pack Installer prozor prikazan na sljedećoj slici. Primijetite da je prozor podijeljen na dva dijela: lijevi i desni. Na lijevoj polovici, pod Devices u tražilicu upišite lpc1768 te odaberite željeni mikroupravljač s popisa. Sada bi Vam se na desnoj polovici prozora trebali prikazati svi paketi programske podrške dostupni za odabrani mikroupravljač. Za potrebe ovog primjera instalirat ćemo samo Keil::LPC1700_DFP (engl. Device Family Pack - DFP) paket, a ostale pakete možete instalirati po istom principu kasnije. Kako bi mogli instalirati navedeni paket potrebno je, pokraj njega, s njegove desne strane kliknuti na tipku install (na slici je na tom mjestu ispisano Up to date ). Nakon toga, primijetit ćete u donjem informacijskom prozoru da se odabrani paket najprije preuzima s interneta te zatim instalira na računalo. /media/uploads/dfraj/keil_5_install_lpc1768_pack.jpg Alternativno, moguće je ručno preuzeti i instalirati pakete programske podrške direktno sa stranice MDK5 Software Packs. Potrebno ih je pronaći pod kategorijom KEIL->NXP LPC1700 Series Device Support, Drivers and Examples for MCB1700.
  5. Nakon završene instalacije paketa pojavit će Vam se prozor s potvrdom za ponovno učitavanje paketa. Kliknite na Yes i time ste završili postupak instalacije.

Informacija

Na računalima koje koristite na laboratorijskim vježbama instalirana je inačica 2.2.0. Keil::LPC1700_DFP paketa. Na novijim inačicama (2.3.0. i 2.4.0.) pojavljivale su se greške prilikom prevođenja i prebacivanja programa na mikroupravljač. To je ispravljeno u najnovijoj inačici 2.5.0.

Uvoz programa s Mbed Online Compiler-a u Keil uVision5 razvojno okruženje

U ovom zadatku bit će prikazano kako izvesti program iz Mbed Online Compiler-a te uvesti tj. otvoriti isti program u razvojnom okruženju Keil uVision5. Također, biti će prikazana dodatna mogućnost koju ovo razvojno okruženje nudi, a to je debugger.

  1. Nakon otvaranja Vašeg Mbed Online Compiler-a, potrebno je kliknuti desni klik na program koji želite izvesti te će Vam se pritom pojaviti izbornik prikazan na sljedećoj slici. Potrebno je odabrati opciju Export Program....
    /media/uploads/dfraj/1_export.jpg
  2. Zatim će Vam se prikazati prozor Export program na kojem se prikazuju podaci za koji mikroupravljač (engl. Target) izvozite Vaš program, a druga opcija koju morate odabrati je razvojno okruženje za koje izvozite program. U padajućem izborniku potrebno je odabrati, kao što je prikazano na slici, uvision5-armc5. Nakon toga potrebno je kliknuti na Export te će se Vaš program preuzeti na računalo u obliku datoteke s ekstenzijom .zip.
    /media/uploads/dfraj/1_export2.jpg
  3. Preuzetu datoteku potrebno je raspakirati te nakon njenog otvaranja, u njoj bi Vam se trebale pojaviti datoteke prikazane na sljedećoj slici. Spojite Vaš mikroupravljač LPC1768 s računalom te otvorite označenu datoteku s ekstenzijom .uvprojx.
    /media/uploads/dfraj/1_uvprojx.jpg
  4. Nakon otvaranja programa tj. projekta u razvojnom okruženju Keil, pojavit će Vam se raspored prozora prikazan na sljedećoj slici. S lijeve strane nalazi se prozor Project u kojem se je prikazano stablo direktorija u kojem je potrebno odabrati Project: 1718_PURS_1_Digital -> 1718_PURS_1_Digital -> 1718_PURS_1_Digital -> main.cpp te će Vam se zatim u desnom prozoru prikazati Vaš programski kôd koji se nalazi u main.cpp datoteci. Iz kôda možete prepoznati da je riječ o osnovnom Blinky programu kojeg smo koristili u uvodnoj vježbi.
    /media/uploads/dfraj/2_main.jpg
  5. Prije prevođenja i prebacivanja programa na mikroupravljač LPC1768, potrebno je podesiti postavke projekta. Stoga je u Keil-u potrebno odabrati ikonu Options for Target kao što je prikazano na slici. /media/uploads/dfraj/5_target_options.png
  6. Opcionalno: Odabirom taba Output možete odrediti želite li za Vaš projekt generirati .hex datoteku označavanjem checkbox-a pokraj opcije Create HEX File kao što je prikazano na slici. Za ovaj zadatak to nije potrebno označavati, ali za neke druge projekte možda će Vam biti potrebno. /media/uploads/dfraj/7_output_hex_file.jpg
  7. Opicionalno: Ako za Vaš projekt iz generirane .hex želite generirati .bin datoteku, potrebno je odabrati tab User te pod kategorijom After Build/Rebuild označiti checkbox pokraj opcije Run #1 i zatim u polje za unos teksta zalijepiti sljedeći tekst: $K\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin !L. /media/uploads/dfraj/3_debug_user.jpg
  8. Pod tabom Debug moguće je odabrati hoćemo li otklanjati greške i testirati program (engl. debugging) koristeći simulator ili sklopovski (engl. hardware) debugger. U Vašem slučaju odabrat ćete sklopovski debugger te je pritom u padajućem izborniku potrebno odabrati opciju CMSIS-DAP Debugger (engl. CMSIS-DAP - Cortex Microcontroller Software Interface Standard-Debug Access Port), budući da je to debugger koji koristi Vaš mikroupravljač LPC1768. Dodatno, potrebno je kliknuti na Settings te nakon otvaranja novog prozora, pod tabom Debug u kategoriji Debug -> Connect & Reset Options -> Reset u padajućem izborniku odabrati opciju VECTRESET. Nakon što ste podesili postavke, potrebno je dvaput potvrditi odabir klikom na OK.
    /media/uploads/dfraj/8_debug_options.jpg /media/uploads/dfraj/9_additional_debug_options.jpg
  9. Vratili ste se u glavni prozor razvojnog okruženja te sada možete najprije prevesti kôd odabirom ikone Translate, zatim je potrebno prevedeni kôd izgraditi odabirom ikone Build te na kraju prebaciti izgrađeni program na Vaš mikroupravljač odabirom ikone Download. Program možete brže prevesti i izgraditi koristeći tipku F7. Prevedite i prebcite Vaš program na mbed te bi nakon resetiranja mbed-a (kratkim pritiskom tipkala na mbed-u) na njemu trebala početi treperiti LED-ica LED1.
    /media/uploads/dfraj/2_main_2.jpg
  10. U sljedećem koraku prikazano je da u debug način rada razvojnog okruženja možete ući, a i izaći, odabirom sljedećih opcija: Debug -> Start/Stop Debug Session ili pritiskom na tipku Ctrl+F5. U debug načinu rada, osim osnovnog prozora s Vašim programom, otvaraju se dva nova prozora. Prvi je prozor Registers u kojem su prikazani određeni registri u koje zapisujemo podatke ovisno o našem programu. Na drugom prozoru, Disassembly, prikazan je asemblerski kôd Vašeg programa. Ulaskom u ovaj način rada, program koji se izvodi na Vašem mbed-u biti će stopiran.
    /media/uploads/dfraj/keil5_start_debug_session.png /media/uploads/dfraj/13_debugging_window_2.jpg
  11. Kako bi mogli vidjeti promjene, koje se zapravo događaju u pojedinim registrima prilikom paljenja i gašenja LED-ice LED1, potrebno je odabrati tab Peripherals -> System Viewer -> GPIO kao što je prikazano na slici.
    /media/uploads/dfraj/14_debugging_window_2.jpg
  12. Otvorit će Vam se novi prozor GPIO (engl. General Purpose Input/Output), s prikazom registara koji spadaju pod tu kategoriju te stanja tj. vrijednosti koje se zapisuju ili brišu iz njih, ovisno o tome želimo li pin na određenom portu postaviti u visoko ili nisko stanje.
    /media/uploads/dfraj/15_debugging_window_2.jpg Vaš sljedeći zadatak je:
    1. Proučiti shemu mikroupravljača LPC1768 (3. str.) te odrediti na koje pinove su spojene LED-ice LED1, LED2, LED3 i LED4.
    2. Zatim proučiti 9. poglavlje korisničkog priručnika za LPC1768 (130. str.) te obratiti pozornost na registre SET, CLR i PIN.
    3. Proučavanjem gore navedenih dokumenata trebali bi primjetiti da je LED-ica LED1 spojena na 18. pin prvog port-a mikroupravljača te se tim pinom može upravljati tako da 18. bit u registrima SET1 i CLR1 postavite naizmjenično u visoko stanje. U prozoru GPIO je stoga potrebno odabrati registar SET1 ili CLR1 i u njima odabrati opciju PINSET18 ili PINCLR18 tj. označiti checkbox pokraj tih opcija. Naime odabrati ćete jednu od tih opcija ovisno o trenutnom stanju LED-ice LED1 (LED-ica će biti upaljena ili ugašena ovisno o trenutku kada ste ušli u debug način rada). Ako je Vaša LED-ica ugašena potrebno je označiti PINSET18 kako bi je upaliti tj. postavili pin (digitalni izlaz) na koji je ona spojena u visoko stanje, a ako je upaljena označiti ćete PINCLR18 te ćete time ugasiti LED-icu.
    4. U programu deklarirajte preostale tri LED-ice kao objekte digitalnih izlaza te mjenjajte stanja tih izlaza koristeći registre SET1 i CLR1.

Napomena

Za modificiranje programa potrebno je izaći iz debug načina rada, modificirati program, prevesti ga i prebaciti na mbed te ponovno ući u debug načina rada.

Kreiranje novog projekta u Keil razvojnom okruženju

U ovom zadataku potrebno je stvoriti novi projekt u Keil uVision5 razvojnom okruženju za mikroupravljač LPC1768.

  1. Kako bi kreirali novi projekt, potrebno je otvoriti Keil razvojno okruženje te odabrati tab Project, prikazat će Vam se padajući izbornik na kojem je potrebno odabrati New uVision Project te će vam se zatim otvoriti novi prozor u kojem je potrebno definirati naziv i putanju gdje će projekt biti spremljen.
    /media/uploads/dfraj/keil5_new_project.png /media/uploads/dfraj/2_save_project.jpg
  2. Nakon što ste odabrali lokaciju na kojoj će Vaš projekt biti spremljen, pojavljuje Vam se dolje prikazani prozor u kojem je potrebno definirati za koji mikroupravljač izrađujete projekt. Najprije je potrebno u padajućem izborniku odabrati Software Packs te zatim u tražilicu upisati lpc1768 te odabrati navedeni mikroupravljač s liste. Konačno potrebno je potvrditi odabir klikom na OK.
    /media/uploads/dfraj/3_select_mcu.jpg
  3. Zatim se otvara Manage Run-Time Environment prozor na kojem je potrebno označiti biblioteku (engl. library) CORE pod kategorijom CMSIS i biblioteku Startup pod kategorijom Device. Ako je za Vaš projekt potrebna još neka određena kategorija, nju je, kao i prethodne dvije, moguće dodati označavanjem određenih checkbox-eova pokraj njih. Odabirom tj. uvoženjem biblioteke Startup automatski se u projekt dodaju datoteke potrebne za pokretanje (engl. startup/boot) našeg odabranog mikroupravljača LPC1768, koje bi inače morali dodavati iz drugih vanjskih izvora. Naknadno dodavanje i brisanje biblioteka može se obaviti u bilo kojem trenutku razvoja projekta. /media/uploads/dfraj/4_cmsis_startup.jpg
  4. Sljedeće što je potrebno definirati pri izradi projekta su postavke za naš odabrani mikroupravljač. Stoga je u Keil-u potrebno odabrati Options for Target ikonu kao što je prikazano na slici. Pod prvim tabom Target potrebno je provjeriti jesu li vrijednosti u Vašem projektu jednake ovima koje su naznačene na slici.
    /media/uploads/dfraj/5_target_options.png /media/uploads/dfraj/6_settings.jpg
  5. Opcionalno: Odabirom taba Output možete odrediti želite li za Vaš projekt generirati .hex datoteku označavanjem checkbox-a pokraj opcije Create HEX File kao što je prikazano na slici. /media/uploads/dfraj/7_output_hex_file.jpg
  6. U tabu Linker potrebno je označiti checkbox pokraj opcije Use Memory Layout from Target Dialog. /media/uploads/dfraj/keil5_linker_options.jpg
  7. Pod tabom Debug moguće je odabrati hoćemo li otklanjati greške i testirati program (engl. debugging) koristeći simulator ili sklopovski (engl. hardware) debugger. U Vašem slučaju odabrat ćete sklopovski debugger te je pritom u padajućem izborniku potrebno odabrati opciju CMSIS-DAP Debugger (engl. CMSIS-DAP - Cortex Microcontroller Software Interface Standard-Debug Access Port), budući da je to debugger koji koristi Vaš mikroupravljač LPC1768. Dodatno, potrebno je kliknuti na Settings te nakon otvaranja novog prozora, pod tabom Debug u kategoriji Debug -> Connect & Reset Options -> Reset u padajućem izborniku odabrati opciju VECTRESET. Nakon što ste podesili postavke, potrebno je dvaput potvrditi odabir klikom na OK.
    /media/uploads/dfraj/8_debug_options.jpg /media/uploads/dfraj/9_additional_debug_options.jpg
  8. U glavnom prozoru Keil razvojnog okruženja, s lijeve strane u stablu direktorija (engl. Directory tree) u prozoru Project potrebno je kliknuti desnim klikom miša na mapu Source Group 1 te odabrati opciju Add New Item to Group ‘Source Group 1 kao što je prikazano na sljedećoj slici. /media/uploads/dfraj/10.png
  9. Otvorit će Vam se novi prozor u kojem je potrebno definirati tip datoteke u koju ćemo upisati kôd. Možemo odabrati između C++ (.cpp) ili C (.c) tipa datoteke. Za potrebe ove vježbe odaberite C++ tip datoteke te zatim unesite naziv datoteke (main) pokraj opcije Name: i kliknite na Add. /media/uploads/dfraj/keil5_create_new_source.jpg
  10. Sada možete započeti pisati kôd ili u Vašem zadatku, u editor zalijepite programski kôd koji se nalazi na kraju ovog zadatka. Program možete prevesti odabirom ikone Translate i zatim ikone Build ili kraće, pritiskom tipke F7. Na sljedećoj slici označena su dva prozora razvojnog okruženja. Prvi je prozor Project u kojem se nalazi prije navedeno stablo direktorija u kojem su prikazane sve datoteke koje se nalaze u Vašem projektu. Drugi prozor je Build Output prozor, na kojem se ispisuju informacije o upozorenjima i/ili greškama prilikom prevođenja programa. /media/uploads/dfraj/11_compile.jpg

U nastavku je prikazan kôd koji trebate kopirati u svoj projekt. Prikazani programski kôd ima istu funkcionalnost kao i program iz uvodne vježbe, uz jedinu razliku da vrijeme čekanja između paljenja i gašenja LED1 iznosi 1 sekundu.

Informacija

U nastavku se nalazi poveznica s koje možete preuzeti projekt izrađen u Keil uVision5 i koji bi trebao raditi u slučaju da projekt koji ste napravili ne radi. Projekt za LPC1768 - Keil uVision5.

#include <lpc17xx.h>

void delay_ms(unsigned int ms);

int main(){
    LPC_PINCON->PINSEL3 = 0x00000000; // Linija kôda u kojoj definiramo pinove prvog PORT-a (PORT1) kao GPIO
    LPC_GPIO1->FIODIR = 1<<18;  // Linija kôda u kojoj konfiguriramo pin, na koji je spojena LED-ica 1, kao izlaz

    while(1){
        LPC_GPIO1->FIOSET = 1<<18;     // Postavi pin u visoko stanje, tj. upali LED1
	delay_ms(1000);                // funkcija za kasnjenje, umjesto funkcije (wait())
	LPC_GPIO1->FIOCLR = 0x40000;   // Postavi pin u nisko stanje, tj. ugasi LED1
	delay_ms(1000);
    }
}

void delay_ms(unsigned int ms){
    unsigned int i,j;
    for(i=0;i<ms;i++)
        for(j=0;j<20000;j++);
}

Nakon što ste testirali gore prikazani programski kôd, potrebno je proučiti shemu mikroupravljača LPC1768 (3. str.) i 9. poglavlje korisničkog priručnika za LPC1768 (130. str.), kako bi odredili princip po kojem je napisan gore prikazan programski kôd, tj. čemu služe registri DIR, SET i CLR.

  1. Modificirajte program tako da blinka samo jedna od 3 preostale LED-ice (samo jedna LED-ica može blinkati).
  2. Modificirajte program tako da blinkaju 2 ili više LED-ica (gotovo) istovremeno.

Čestitke!

Završili ste sve vježbe iz teme Korištenje ARM Keil razvojnog okruženja.

Povratak na naslovnu stranicu TVZ Mechatronics Team-a.


All wikipages