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.
- 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.
- Instalirati Keil uVision5 razvojno okruženje na računalo.
- 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):
- 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, podDevices
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 samoKeil::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. 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 kategorijomKEIL->NXP LPC1700 Series Device Support, Drivers and Examples for MCB1700
. - 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.
- 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...
.
- 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 naExport
te će se Vaš program preuzeti na računalo u obliku datoteke s ekstenzijom.zip
.
- 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
.
- 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 odabratiProject: 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 umain.cpp
datoteci. Iz kôda možete prepoznati da je riječ o osnovnomBlinky
programu kojeg smo koristili u uvodnoj vježbi.
- 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. - Opcionalno: Odabirom taba
Output
možete odrediti želite li za Vaš projekt generirati .hex datoteku označavanjem checkbox-a pokraj opcijeCreate 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. - Opicionalno: Ako za Vaš projekt iz generirane .hex želite generirati .bin datoteku, potrebno je odabrati tab
User
te pod kategorijomAfter Build/Rebuild
označiti checkbox pokraj opcijeRun #1
i zatim u polje za unos teksta zalijepiti sljedeći tekst:$K\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin !L
. - 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 opcijuCMSIS-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 naSettings
te nakon otvaranja novog prozora, pod tabomDebug
u kategorijiDebug -> Connect & Reset Options -> Reset
u padajućem izborniku odabrati opcijuVECTRESET
. Nakon što ste podesili postavke, potrebno je dvaput potvrditi odabir klikom naOK
.
- 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 ikoneBuild
te na kraju prebaciti izgrađeni program na Vaš mikroupravljač odabirom ikoneDownload
. Program možete brže prevesti i izgraditi koristeći tipkuF7
. 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-icaLED1
.
- 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 tipkuCtrl+F5
. Udebug
načinu rada, osim osnovnog prozora s Vašim programom, otvaraju se dva nova prozora. Prvi je prozorRegisters
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.
- 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.
- 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.
Vaš sljedeći zadatak je:
- Proučiti shemu mikroupravljača LPC1768 (3. str.) te odrediti na koje pinove su spojene LED-ice
LED1, LED2, LED3 i LED4
. - Zatim proučiti 9. poglavlje korisničkog priručnika za LPC1768 (130. str.) te obratiti pozornost na registre SET, CLR i PIN.
- 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 prozoruGPIO
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-iceLED1
(LED-ica će biti upaljena ili ugašena ovisno o trenutku kada ste ušli udebug
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. - U programu deklarirajte preostale tri LED-ice kao objekte digitalnih izlaza te mjenjajte stanja tih izlaza koristeći registre SET1 i CLR1.
- Proučiti shemu mikroupravljača LPC1768 (3. str.) te odrediti na koje pinove su spojene LED-ice
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.
- 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 odabratiNew uVision Project
te će vam se zatim otvoriti novi prozor u kojem je potrebno definirati naziv i putanju gdje će projekt biti spremljen.
- 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 upisatilpc1768
te odabrati navedeni mikroupravljač s liste. Konačno potrebno je potvrditi odabir klikom naOK
.
- Zatim se otvara
Manage Run-Time Environment
prozor na kojem je potrebno označiti biblioteku (engl. library)CORE
pod kategorijomCMSIS
i bibliotekuStartup
pod kategorijomDevice
. 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 bibliotekeStartup
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. - 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 tabomTarget
potrebno je provjeriti jesu li vrijednosti u Vašem projektu jednake ovima koje su naznačene na slici.
- Opcionalno: Odabirom taba
Output
možete odrediti želite li za Vaš projekt generirati .hex datoteku označavanjem checkbox-a pokraj opcijeCreate HEX File
kao što je prikazano na slici. - U tabu
Linker
potrebno je označiti checkbox pokraj opcijeUse Memory Layout from Target Dialog
. - 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 opcijuCMSIS-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 naSettings
te nakon otvaranja novog prozora, pod tabomDebug
u kategorijiDebug -> Connect & Reset Options -> Reset
u padajućem izborniku odabrati opcijuVECTRESET
. Nakon što ste podesili postavke, potrebno je dvaput potvrditi odabir klikom naOK
.
- 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 mapuSource Group 1
te odabrati opcijuAdd New Item to Group ‘Source Group 1
kao što je prikazano na sljedećoj slici. - 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) iliC
(.c) tipa datoteke. Za potrebe ove vježbe odaberiteC++
tip datoteke te zatim unesite naziv datoteke (main) pokraj opcijeName:
i kliknite naAdd
. - 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 ikoneBuild
ili kraće, pritiskom tipkeF7
. Na sljedećoj slici označena su dva prozora razvojnog okruženja. Prvi je prozorProject
u kojem se nalazi prije navedeno stablo direktorija u kojem su prikazane sve datoteke koje se nalaze u Vašem projektu. Drugi prozor jeBuild Output
prozor, na kojem se ispisuju informacije o upozorenjima i/ili greškama prilikom prevođenja programa.
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.
- Modificirajte program tako da blinka samo jedna od 3 preostale LED-ice (samo jedna LED-ica može blinkati).
- 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.