• Rezultati Niso Bili Najdeni

DIPLOMSKO DELO

N/A
N/A
Protected

Academic year: 2022

Share "DIPLOMSKO DELO"

Copied!
88
0
0

Celotno besedilo

(1)

UNIVERZA V LJUBLJANI PEDAGOˇSKA FAKULTETA

FAKULTETA ZA MATEMATIKO IN FIZIKO ˇStudijski program: Fizika in tehnika

C-PROGRAMIRANJE ARM9

MIKROKRMILNIKOV V PROSTO DOSTOPNEM RAZVOJNEM OKOLJU ZA LINUX

DIPLOMSKO DELO

Mentor: izr. prof. dr. Slavko Kocijanˇciˇc Kandidat: ˇZiga Lausegger

Ljubljana, december 2013

(2)
(3)

Zahvala

Rad bi se zahvalil materi Ani za podporo in potrpljenje; svojemu dekletu Ranji in njeni mami Romani za motivacijo; Viliju in Mini, ki sta me potolaˇzila, ko sem potreboval tolaˇzbo; bratoma Anˇzetu in Roku ter sestrici ˇSpeli za dobrodoˇslico v naˇsem domu, ko sem jo potreboval.

Posebej bi se rad zahvalil mentorju dr. Slavku Kocijanˇciˇcu za motivacijo in sredstva, ki jih je namenil za nakup potrebne opreme; poklicnemu programerju Igorju, ki mi je pokazal trnjevo pot skozi razhroˇsˇcevanje; programerjema Ediju in Borutu za usmeritev in prikaz problemov pri izbiri mikrokrmilnika; spletnemu forumu “Elektronik.si“ za potr- pljenje z menoj, ko sem spraˇseval zaˇcetniˇska vpraˇsanja; podjetju ”Embeded Artists” za dovoljenje pri objavi sheme razˇsiritvenih konektorjev; spletnemu forumu”StackOverflow”

- tako podrobne in profesionalne pomoˇci pri interpretaciji izvorne kode nisem naˇsel nikjer drugje; spletnemu forumu“TexOverflow“ za profesionalno pomoˇc pri pisanju diplomskega dela v formatu LATEX; spletnemu forumu ”Ubuntu forums” za pomoˇc z ”Linux” ukazno vrstico; celotni odprtokodni skupnosti, da omogoˇcajo tako lep vpogled v izvorno kodo, skozi katero smo se jaz in mnogo drugih veliko nauˇcili.

Hvala.

(4)
(5)

Povzetek

Trenutno so v tehniˇsko izobraˇzevanje vkljuˇceni starejˇsi mikrokrmilniki, katerim se posveˇca malo pozornosti. To je eden izmed vzrokov za slabo poznavanje mikrokrmilnikov med ˇstudenti in uˇcitelji, kar je razvidno iz rezultatov anketnega vpraˇsalnika. Da bi izboljˇsali stanje na podroˇcju izobraˇzevanja, je v prvem delu diplome teoretiˇcno razloˇzen skrbno izbrani mikrokrmilnik LPC3141 in njegov mikroprocesor ARM926ej-s. Opisani so naˇcin delovanja, kljuˇcni registri ter kljuˇcni biti. V praktiˇcnem delu je bralec seznanjen s prosto dostopnim operacijskim sistemom “Linux”, za katerega je opisana celotna namestitev.

Sledi opis namestitve in razlaga odprtokodnih programerskih orodij “GCC“, ki skupaj z operacijskim sistemom ”Linux” ne predstavljajo nobenega stroˇska. V trenutni gospo- darski krizi to pride ˇse kako prav. V nadaljevanju najprej sledijo enostavni in nato bolj zapleteni projekti, zaradi ˇcesar sta prikazani namestitev in uporaba odprtokodnega inte- griranega razvojnega okolja “Eclipse“. Slednjega uporabljamo za pisanje C-projektov vse do konca diplomskega dela. V zakljuˇcku je predstavljenih nekaj iztoˇcnic za potencialno doktorsko nalogo.

Kljuˇ cne besede:

ARM9, LPC3141, Linux, GCC, Eclipse, C-programski jezik, make, ARM zbirnik, tehniˇsko izobraˇzevanje

(6)

Abstract

At the moment, there are older microcontrollers used in technology education and they re- ceive little attention. Questionnaire results showed this could be one of the reason for bad understanding of microcontrollers among students and teachers of technology profession.

In desire to improve the current state, dissertation firstly gives theoretical explanation on carefully chosen microcontroller LPC3141 and its microprocessor ARM926ej-s. Moreover, dissertation describes ways LPC3141 can function, its key registers and key bits. Sec- ondly, practical part gives some knowledge on”Linux” open source operating system and describes its installing procedure. Theoretical explanation and installation procedures of

“GCC” open source programming tools are explained next. “GCC” used in combination with ”Linux” represents no costs at all which might come handy in the current eco- nomic crisis. Additionally, simple and advanced projects are presented because of which describing installation procedures and usefulness of “Eclipse“ open source integrated de- velopement environment is required. “Eclipse“ is being used for writing C-projects until the end of dissertation. In conclusion, some directions for future PhD thesis are presented.

Key words:

ARM9, LPC3141, Linux, GCC, Eclipse, C-programming language, make, ARM assembly, technology education

(7)

Kazalo vsebine

1 Akronimi 9

2 Uvod 12

3 Vdelani sistemi 14

3.1 Mikrokrmilniki . . . 15

3.1.1 Izkuˇsnje z mikrokrmilniki in ˇzelje . . . 15

3.1.2 Iskanje primernega mikrokrmilnika . . . 17

3.1.3 Mikrokrmilnik LPC3141 . . . 19

Zagonski postopek . . . 20

CGU . . . 22

Vhodno/izhodni konfiguracijski modul . . . 25

PWM modul . . . 26

3.2 Mikroprocesor ARM926ej-s . . . 27

3.2.1 ARM registri . . . 28

Register cpsr . . . 30

ARM kupˇcek in kazalˇcek kupˇcka sp . . . 31

Programski ˇstevec pc . . . 31

Povratni registerlr . . . 32

Koprocesorski registerp15 . . . 32

4 Linux 33 4.1 Distribucija Xubuntu 11.04 . . . 33

4.1.1 Namestitev Xubuntu 11.04 . . . 33

5 Postavitev razvojnega okolja 36 5.1 Postavitev in uporaba razvojne verige v CLI . . . 36

5.1.1 Izbira in snemavanje razvojne verige . . . 36

(8)

5.1.2 Namestitev razvojne verige . . . 38

5.1.3 Prevajanje in povezovanje enostavnega projekta . . . 42

5.1.4 Priprava in nalaganje izvrˇsljive datoteke na mikrokrmilnik preko USB 45 5.1.5 Makefile . . . 49

5.1.6 ARM zbirnik in zagonska koda . . . 53

5.1.7 Povezovalna skripta . . . 60

5.2 Postavitev in uporaba razvojne verige v IDE . . . 61

5.2.1 Izbira IDE . . . 61

5.2.2 Namestitev IDE Eclipse . . . 62

5.2.3 Makefile projekt v IDE Eclipse . . . 63

6 Pisanje C-izvornih datotek 66 6.1 Digitalni izhodi . . . 66

6.2 Digitalni vhodi . . . 67

6.3 PWM . . . 68

6.4 Delilniki . . . 69

7 Diskusija 72

8 Zakljuˇcek 73

Literatura 76

Priloga A Razporeditev pinov na LPC3141 77

Priloga B Razˇsiritveni konektorji na EA3141 ter

povezave s prototipno ploˇsˇcico 79

Priloga C Anketni vpraˇsalnik 81

Seznam slik 86

Seznam tabel 87

Seznam datotek 88

(9)

1 Akronimi

MCU Micro Controler Unit - Majhen ˇcip, ki vsebuje podobne sestavine kot PC. Zaradi svoje majhne velikosti je nenadgradljiv.

PC Personal Computer - Osebni raˇcunalnik.

IDE Integrated Development Environment - Razvojno okolje z integriranimi prevajalniki, razhroˇcevalniki, zagonskimi datotekami in funkcijami namenjenim doloˇcenemu MCU ali druˇzini MCU.

OS Operating System - Operacijski sistem oz. skupek programov, ki omogoˇca uˇcinkovito uporabo strojne opreme na uporabniku prijazen naˇcin. Predstavniki so “Linux“, “Windows”, ”MacOS“,

”Android“...

GNU GNU is Not Unix

GPL General Public Licence - Javno lastniˇska licenca, ki programsko opremo opredeli kot druˇzbeno lastnino, katero je prepovedano trˇziti. Vsakemu omogoˇca vpogled in spreminjanje programske opreme, ki ob predelavi prevzame isto licenco.

USB Universal Serial Bus - Univerzalno serijsko vodilo.

LCD Liquid Crystal Display - Zaslon na tekoˇce kristale vgrajen v novejˇse televizije, monitorje, telefone, dlanˇcnike...

MCPU Micro Central Processing Unit - Centralno procesna enota v obliki ˇcipa vgrajenega v MCU.

ADC Analog to Digital Converter - Vezje oz. ˇcip, ki na vhodih MCU pretvori elektriˇcni tok ali napetost v digitalno ˇstevilo sorazmerno elektriˇcnemu toku ali napetosti.

DAC Digital to Analog Converter - Vezje oz. ˇcip, ki na izhodih digitalnemu ˇstevilu dodeli sorazmerno elektriˇcno napetost ali tok.

PWM Pulse Width Modulation - Pulzno ˇsirinska modulacija signala, kjer je pomembno razmerje med ˇcasom trajanja visokega in nizkega stanja, medtem ko je njuna vsota oz. perioda konstantna.

GPIO General Purpose Input Output - Sploˇsno namenski vhodi izhodi izmed katerih imajo nekateri posebno vlogo.

RAM Random Acess Memmory - Delovni pomnilnik.

UART Universal Asinchronous Reciever Transmitter - Univerzalni asinhronski sprejemnik oddajnik, ki prevaja podatke med paralelnimi in serijskimi vodili .

SPI Serial Peripheral Interface - Serijski periferni vmesnik. ˇStiriˇziˇcno podatkovno vodilo, ki vsebuje enega mojstra in veˇc suˇznjev. Mojster suˇznjem doloˇci sistemsko uro, izbira tiste, ki jih potrebuje, poˇsilja ukaze in sprejema odgovore.

OTG On The Go - Novejˇsa razliˇcica USB protokola, kjer se namesto 4 noˇzic uporablja 5 noˇzic, katere najdemo v USB tipih“mini-A“,”mini-B“,”mikro-B” in”mikro-AB”. Dodatna noˇzica je povezana z MCU in omogoˇca, da naprava prikljuˇcena na USB prevzame vlogo streˇznika.

ISRAM Internal Static RAM - Notranji statiˇcni RAM.

ISROM Internal Static Read Only Memmory - Notranji statiˇcni bralni pomnilnik iz katerega lahko beremo, vanj pa ne moremo pisati.

NAND FLASH “Not AND“FLASH memmory -“Ne in“izvedba hitrega FLASH pomnilnika v katerega lahko piˇsemo ali iz njega briˇsemo s pomoˇcjo elektriˇcnega toka in napetosti.

(10)

DMA Direct Memmory Acess - Nadzorna enota, ki nadzira neposreden dostop do pomnilnika.

MPMC Multi-Port Memmory Controller - Pomnilniˇska nadzorna enota z veˇcimi vhodi.

MCI Memmory Card Interface - Vmesnik za spominske kartice.

I2C Inter-Integrated Circuit - Dvoˇziˇcno podatkovno vodilo, namenjeno komunikaciji enega mojstra z veˇcimi suˇznji pri nizki hitrosti prenosa podatkov.

I2S Integrated Interchip for Sound - Izvedba I2C namenjena prenosu zvoka.

JTAG Joint Test Action Group - Vmesnik oz. programator za direktno programiranje.

RNG Random Number Generator - Komponenta za kreiranje nakljuˇcnih ˇstevil.

CGU Clock Generation Unit - Periferija za dinamiˇcno spreminjanje velikosti sistemske ure, ki omogoˇca preusmeritev sistemske ure na periferije.

PCM Pulse Code Modulation - Pulzno kodna modulacija je metoda za digitalno predstavitev obdelanega analognega signala.

WDT Watch-Dog Timer - ˇStevec v vlogi ˇcuvaja, ki ob neprejemanju pulzov resetira in s tem ponovno vzpostavi MCU. Neprejeti pulz lahko pomeni nekontrolirano in s tem nevarno izvajanje programa.

AHB Advanced High-performance Bus - Napredna visoko zmogljiva matrika, ki predstavlja vezni ˇclen med mojstri in suˇznji.

APB Advanced Peripheral Bus - Napredna matrika, ki povezuje posamezne periferije oz. module znotraj domene oz. suˇzenjske skupine.

I-cache Instruction-cache - Hitri spomin po katerem se prenaˇsajo ukazi. Nahaja se med MCPU in glavnim pomnilnikom in s tem izboljˇsa prenos podatkov.

D-cache Data-cache - Hitri spomin po katerem se prenaˇsajo podatki. Nahaja se med MCPU in glavnim pomnilnikom in s tem izboljˇsa prenos podatkov.

USB DFU USB Device Firmware Update - Protokol za posodabljanje MCU programov preko USB vodila.

MMU Memmory Management Unit - Vmesnik med MCPU in pomnilnikom, ki od MCPU sprejema virtualne naslove, ki niso vedno znotraj pomnilnika, in jih pretvori v fiziˇcne naslove znotraj pom- nilnika.

CRC Cyclic Redundancy Check - Koda za odkrivanje nakljuˇcno nastalih napak.

TEA Tiny Encription Algorythm - Majhen a hiter enkripcijski algoritem, ki zakrije program tako, da je le ta neprepoznaven in s tem zaˇciten.

PLL Phase-Locked Loop - Vezje, ki poizkuˇsa preko povratne zanke sinhronizirati vhodno in izhodno frekvenco.

IOCONFIG In and Out CONFIGuration module - Modul namenjen konfiguraciji GPIO.

BGA Ball Grid Array - Razporeditev noˇzic MCU v obliki matrike, ki se nahaja na spodnji strani MCU.

PDM Pulse Density Modulation - Modulacija signala, kjer amplitudo doloˇca relativna gostota pulzov.

DC Direct Current - Enosmerni tok.

ISA Instruction Set Architecture - Nazaj zdruˇzljiv nabor ukazov, ki jih podpira MCU.

EDA Electronic Design Automation - Programska oprema za naˇcrtovanje elektronskih shem ali tiskanih vezij.

RISC Reduced Instruction Set Computer - Raˇcunalnik z zmanjˇsanim naborom ukazov, ki je poslediˇcno hitrejˇsi in cenejˇsi.

ALU Arithmetic Logic Unit - Aritmetiˇcno logiˇcna enota, ki izvaja aritmetiˇcno logiˇcne operacije med vrednostima shranjenima v dveh loˇcenih registrih.

MAC Multiplay ACcumulator - Mnoˇzilno priˇstevalna enota, ki zmnoˇzi vrednosti v dveh loˇcenih registrih in produkt priˇsteje poljubnemu registru.

cpsr Current Program Status Register - Trenutni programski statusni register.

(11)

pc Program Counter - Programski ˇstevec.

sp Stack Pointer - Kazalˇcek kupˇcka.

lr Link Register - Povratni register.

spsr Saved Program Status Register - Shranjevalni programski statusni register.

p15 coProcessor register 15 - Koprocesorski register 15.

TLB Translation Lookaround Buffer - Prevajalni razgledni prenosnik je hitri pomnilnik znotraj MMU, ki ureja tabelo virtualnih naslovov.

CLI Command Line Interface - Ukazni uporabniˇski vmesnik, kjer upravljanje raˇcunalnika poteka preko ukazov v tekstovni obliki.

GUI Graphical User Interface - Grafiˇcni uporabniˇski vmesnik, ki omogoˇca uporabo miˇske, manipulacijo z okni, klikanje na gumbe...

BIOS Basic In and Out System - Osnovni vhodno in izhodni sistem, ki se zaˇzene takoj po zagonu PC in pred zagonom OS.

GCC ”GNU Compiler Collection” - Zbirka razvojnih programerskih orodij za OS“Linux“, zaˇcitena z licenco GNU GPL.

EABI Embedded Application Binary Interface - Primitivni dvojiˇski vmesnik med kakrˇsnim koli pro- gramom in OS.

APCS ARM Procedural Call Standard - ARM proceduralni klicni standard.

DWARF Debugging With Attribute Record Format - Razhroˇcevanje s formatom, ki podpira shranje- vanje atributov.

ELF Executable and Linkable Format - Format izvrˇsljive datoteke, ki omogoˇca enostavno dodajanje novih objektnih datotek.

EBN Embedded Binary Numbers - Format, katerega podjetje“NXP“uporablja za posodabljanje strojne opreme.

bash Bourne-Again SHell - ”Linux” lupina, ki omogoˇca vnos CLI ukazov. Njen avtor je Steve Bourne, po katerem lupina delno nosi svoje ime.

CDL Common Driver Library - Zbirka pogosto uporabljenih gonilnikov.

DACR Domain Access Control Register - Register za nadzor dostopa do domen.

(12)

2 Uvod

Mikrokrmilniki (MCU), za programiranje katerih potrebujemo integrirano razvojno okolje (IDE), se hitro razvijajo, zaradi ˇcesar je potrebno nenehno posodabljanje IDE. Cena IDE je odvisna od licence in od podprtih MCU. IDE, ki podpira najnovejˇse MCU, lahko stane med 400 in 3000€[1], kar je v ˇcasu gospodarske krize nezanemarljiv stroˇsek. Slednjemu je zaradi teˇznje po stalnem posodabljanju tehnologije izpostavljena celotna tehniˇska stroka.

ˇCe se ˇzelimo uˇciti programirati doloˇceni MCU, je priporoˇceno kupiti vdelan sistem1. Cene teh so odvisne od starosti in zmogljivosti podprtega MCU. Novejˇsi vdelani sistemi lahko stanejo med 60 in 500 € [2, 3], kar skupaj z IDE predstavlja velik stroˇsek. ˇCe slednjega pomnoˇzimo s ˇstevilom osebnih raˇcunalnikov (PC) v uˇcilnicah, dobimo visok znesek.

Dodatni stroˇsek predstavlja operacijski sistem (OS) “Windows“. OS v desetletju zastara in ga je potrebno menjati. Omenjeno se pravkar dogaja z OS ”Windows XP”, ki je izˇsel leta 2001. Menjavo spodbuja podjetje”Microsoft“, ki po desetletju ukine celotno tehniˇcno podporo in uporabniki so prisiljeni kupiti nov OS [4]. Cena novejˇsih “Microsoftovih“ OS se giblje med 100 in 300€[5], kar je stroˇsek za ˇsolo in starˇse ˇsoloobveznih otrok. Slovenske ˇsole vztrajajo pri uporabi OS“Windows”, ki ga uˇcenci spoznajo v osnovni ˇsoli in se ga uˇcijo od tedaj naprej. ˇSola zahteva pisanje dokumentov v formatih, podprtih izkljuˇcno na OS

”Windows”. Za branje in pisanje teh formatov potrebujemo program, kot npr. “Microsoft Word“, ki je del paketa”Microsoft Office“. Cena slednjega je med 100 in 600€[6]. Zaradi visokih cen omenjene programske opreme je ta nekaterim starˇsem ˇsoloobveznih otrok ne- dosegljiva in s tem je krˇseno pravilo enakih moˇznosti [7, str. 55]. Da bi si zagotovili enake moˇznosti, nekateri posegajo po piratski programski opremi, zaradi katere lahko konˇcajo v zaporu, saj je bil sprejet predlog spremembe kazenskega zakonika [8], ki predlaga za- porno kazen za prekomerno snemavanje piratske spletne vsebine. Potrebno se je vpraˇsati, ali je ˇse moralno od uˇcencev zahtevati uporabo omenjene lastniˇske programske opreme.

Bi bilo bolje ponuditi prosto dostopno alternativo, ki bi odpravila tudi stroˇske nadgradnje?

Ponujena prosto dostopna alternativa, ki reˇsi nekaj zgoraj naˇstetih problemov, je OS

”Linux”. Prosto dostopna zasnova “Linuxa“ uporabnikom omogoˇca vpogled in spremin- janje programov, katere ˇsˇciti GNU GPL licenca. Slednja nam omogoˇci predelavo odprto- kodnih IDE za programiranje najnovejˇsih MCU, kar odpravi stroˇsek nakupa profesional- nega IDE. Ker veliko IDE ˇze podpira OS ”Linux”, ni potrebno kupovati lastniˇskega OS, s ˇcimer ˇsoloobveznim otrokom omogoˇcimo enake moˇznosti. Diplomsko delo prikazuje, kako na OS “Xubuntu 11.04“ postavimo razvojno okolje, ki nam omogoˇca programiranje najnovejˇsih ARM mikroprocesorjev (MCPU), ki se nahajajo ˇze praktiˇcno v vseh elektron- skih napravah in so po zmogljivosti konkurenˇcni nekdanjim enojedrnim izvedbam PC [9].

1Angleˇsko tudi embedded system. Predstavlja okoli MCU zgrajene elektronske komponente, ki omogoˇcajo programiranje, testiranje, povezljivost z drugimi elektronskimi napravami, pridobivanje in poˇsiljanje podatkov...

(13)

V zaˇcetnem delu diplomskega dela so predstavljene izkuˇsnje z MCU ter na podlagi teh postavljeni kriteriji, po katerih je izbran nov MCU, imenovan LPC3141. Slednji je najprej podrobno teoretiˇcno opisan, saj programiranje v praktiˇcnem delu ni mogoˇce brez pozna- vanja LPC3141. Ker zaˇcetno programiranje poteka na zelo nizkem nivoju, je potrebno znanje ARM zbirnika, ki je v grobem predstavljen skozi praktiˇcni del. ARM zbirnik je dokaj zahteven, zaradi ˇcesar je proti koncu diplomskega dela prikazan prehod na programi- ranje v visokem programskem jeziku C, ki je veˇcini laˇzje razumljiv. Prehod je opravljen postopno z izˇcrpno razlago podrobnosti.

(14)

3 Vdelani sistemi

Vdelani sistemi, slika 3.1(a), so skupek MCU, ki je osrednja komponenta, in okoli MCU zbranih elektronskih komponent imenovanih, tudi periferne naprave. To so vse elektronske komponente, ki poskrbijo za:

• ustrezno napajanje MCU in ostalih elektronskih komponent,

• komunikacijo MCU z ostalimi komponentami ali s PC preko razliˇcnih protokolov2,

• komunikacijo ene komponente z drugo,

• prikazovanje informacije v ˇcloveku razumljivi obliki, kot to poˇcne npr. LCD, slika 3.1(b), in

• shranjevanje informacije v zunanjih spominskih komponentah.

(a) (b)

Slika 3.1: (a)Vdelani sistem in (b) periferna naprava z LCD prikazovalnikom.

Majhna velikost vdelanih sistemov je prednost, ki se izkaˇze pri mobilnih napravah, kot so npr. mobilni telefoni, mobilni roboti, prenosni merilniki... Zaradi majhne velikosti imajo vdelani sistemi majhno porabo elektriˇcne energije. Slabost vdelanih sistemov je omejena zmogljivost, saj v prostorsko omejeni sistem teˇzko vgradimo dodatne komponente. Kljub temu je na podroˇcju robotike in elektronike izbira vdelanih sistemov logiˇcna reˇsitev, saj je enostavnejˇsa gradnja mobilnega robota, ki v svojem ohiˇsju nosi vdelan sistem, kot pa povezava mobilnega robota s PC. Eden izmed razlogov, ki vpliva na tako odloˇcitev, je omejen domet brezˇziˇcne povezave.

Dobro je vedeti, da je ˇze razvit MCPU z veˇcjedrno zasnovo, ki po zmogljivosti konkurira nekdanjim enojedrnim izvedbam procesorjev, v PC [9]. To dejstvo dodatno utemelji izbiro vdelanih sistemov na omenjenih podroˇcjih.

2Standardizirana zbirka pravil, ki narekuje, kako mora potovati informacija. Veˇcini poznan protokol je npr. USB.

(15)

3.1 Mikrokrmilniki

MCU, slika 3.2, je osrednji del vdelanih sistemov. Je skupek osrednje enote MCPU in obdajajoˇce periferije, ki se nahaja znotraj MCU. Pojem periferija ni enak pojmu periferna naprava, saj se slednja nahaja izven MCU. Periferija znotraj MCU opravlja iste naloge, kot periferne naprave na vdelanih sistemih, poglavje 3.

Slika 3.2: Primeri MCU.

3.1.1 Izkuˇ snje z mikrokrmilniki in ˇ zelje

Moje izkuˇsnje na podroˇcju MCU izhajajo iz programiranja 8-bitnega3 MCU ATMEGA16 podjetja “Atmel“ [10]. Hiba ATMEGA16 je v 8-bitni arhitekturi, ki je poˇcasna v primer- javi z novejˇsimi 32-bitnimi MCU. Omenjena hiba skupaj z nizko frekvenco4 MCPU, ki znaˇsa 16 MHz, ne zadoˇsˇca natanˇcnemu merjenju ultrazvoka. V robotiki je ultrazvok zelo uporaben, saj omogoˇca natanˇcno merjenje ˇcasa med oddanim in sprejetim signalom. Na podlagi izmerjenega ˇcasa raˇcunamo oddaljenost predmeta in njegovo hitrost. Frekven- ce ultrazvoka se gibljejo med 20 kHz in 200 MHz. Z uporabo viˇsje frekvence ultrazvoka doseˇzemo veˇcjo natanˇcnost meritev.

ˇCe izraˇcunamo kvocient k frekvence MCPU ATMEGA16 νM CP U = 16 MHz in frekvenc ultrazvoka νuz= [20 kHz,200 MHz], dobimo krivuljo, slika 3.3, ki prikazuje hitro padanje k z naraˇsˇcajoˇcoνuz. V najboljˇsem primeru, ko jeνuz=20 kHz, je kvocient enakk=800 in MCPU nima teˇzav s procesiranjem vhodnih podatkov. Pri frekvenci νuz = νM CP U = 16 MHz je kvocient k = 1 in MCPU sprocesira 100 % vhodnih podatkov. ˇCe se νuz zmanjˇsuje naprej, velja k < 1 in MCPU ne uspe sprocesirati vseh vhodnih podatkov.

Pri νuz = 200 MHz je k≈0 in merjenje ultrazvoka je brezpomensko. Pojavi se potreba po frekvenci MCPU, viˇsji od 200 MHz, s katero bi doseglik≥1. Tako bi MCPU tudi pri najviˇsjih frekvencah ultrazvoka sprocesiral 100 % vhodnih podatkov.

Ker moramo veliko koliˇcino vhodnih podatkov sproti shranjevati, se pojavi potreba po hitrem in velikem notranjem pomnilniku, npr. RAM. Poˇcasno shranjevanje namreˇc za- vira5 delovanje celotnega MCU.

3ˇStevilo bitov pove, koliko niti oz. vhodov lahko sprocesira MCPU v enem procesorskem ciklu. Viˇsje ˇstevilo vhodov pomeni zmogljivejˇsi MCPU.

4Ali sistemska ura pove, koliko procesorskih ciklov procesor opravi v enoti ˇcasa.

5Angleˇsko tudi bootleneck.

(16)

0 5.0×107 1.0×108 1.5×108 2.0×108 2

4 6 8 10

Slika 3.3: Krivulja kvocienta k med νM CP U inνuz.

Poleg visokih frekvenc MCPU se pojavi zahteva po visokih frekvencah ADC in DAC, ki morata biti vsaj 100 kHz. Viˇsja frekvenca ADC omogoˇca hitrejˇsi zajem podatkov, kar pomeni manj izgubljenih podatkov in s tem boljˇso meritev. ATMEGA16 ima vgrajene 10- bitne ADC, ki lahko vhodnemu signalu dodeljo eno izmedn = 210−1 = 1023 ˇstevil. ˇCe se vhodni signal, npr. napetost, giblje medUmin = 0 V in Umax = 5 V, ADC napetosti Umin dodeli najmanjˇse ˇstevilo 0 in napetosti Umax najviˇsje ˇstevilo 1023. Izraˇcunamo loˇcljivost 10-bitnega ADC l10b (3.1), ki znaˇsa l10b ≈0,005 V.

l10b = Umax

n = 5 V

1023 ≈0,005 V (3.1)

Pojavi se potreba po viˇsji loˇcljivosti, katero dosegamo z veˇc-bitnimi ADC. 12-bitni ADC vhodnemu signalu dodeli eno izmedn= 4095 ˇstevil, kar za zgornji primer prinese loˇcljivost l12b ≈0,001 V. Loˇcljivost 12-bitnega ADC je pribliˇzno ˇstirikrat veˇcja od 10-bitnega ADC, kar omogoˇca natanˇcnejˇse zajemanje podatkov in kot posledico npr. natanˇcnejˇse krmil- jenje mobilnega robota po ˇcrni sledi, kar prinese prednost na tekmovanjih, kot je npr.

”ROBOsled” [11], kjer uˇcenci osnovnih ˇsol tekmujejo tudi s samogradnimi roboti.

ATMEGA16 ne omogoˇca neposredne komunikacije preko dobro poznanega USB protokola oz. prikljuˇcka. Raˇcunalniˇska podjetja pri PC opuˇsˇcajo ostale prikljuˇcke, zaradi ˇcesar je neposredno programiranje ATMEGA16 nemogoˇce6. ˇSe vedno je mogoˇce na vdelani sistem dodati ˇcip oz. periferno napravo, ki pretvori USB protokol v enega izmed protokolov, podprtih na ATMEGA16. Slednji podpira paralelni in serijski protokol oz. RS232, ki ga lahko pretvorimo v USB protokol preko ˇcipa FTDI. Slednji stane veˇc kot 10 € [12], kar

6V primeru stacionarnega raˇcunalnika ˇse vedno lahko kupimo razˇsiritveno kartico za opuˇcene prikljuˇcke, medtem ko v primeru prenosnih raˇcunalnikov to ni mogoˇce.

(17)

je veˇc kot nov MCU s podprtim USB protokolom. To je vredno upoˇstevati pri zasnovi lastnega vdelanega sistema, ki naj bi bil v ˇsolah ˇcim cenejˇsi in s tem dostopnejˇsi. Pri izbiri MCU moramo paziti na njegovo namembnost, ki je v ˇsoli npr. programiranje robotov, kjer poleg ˇze naˇstetih zahtev potrebujemo dodatno periferijo:

• PWM periferijo za krmiljenje servo motorjev,

• LCD periferijo za krmiljenje LCD prikazovalnikov,

• periferijo za spominske kartice, ki omogoˇcajo veˇcjo prenosljivost podatkov,

• ˇcim veˇcje ˇstevilo ˇstevcev za pisanje kompleksnejˇsih programov,

• ˇcim veˇcje ˇstevilo prekinitev7, ki omogoˇcajo izvajanje veˇcih rutin8 naenkrat,

• ˇcim veˇcje ˇstevilo sploˇsno namenskih vhodov in izhodov GPIO.

Poleg omenjene periferije je zaˇzeljena ˇcim veˇcja podpora MCU v OS Linux. Pod besedo podpora si predstavljamo primere programov, gonilnike, knjiˇznice 9, elektronske sheme, knjige...

3.1.2 Iskanje primernega mikrokrmilnika

Odloˇcitev za nakup MCU ni enostavna, saj se na trˇziˇsˇcu nahaja mnogo MCU, ki so na prvi pogled podobni, a se razlikujejo v pomembnih malenkostih. Da bi kupili optimalni MCU, je potrebno zahtevane periferije in potrebe, omenjene v poglavju 3.1.1, opredeliti kot tehniˇske kriterije. Poleg tehniˇskih kriterijev so dodani tudi ekonomski kriteriji, npr.

koliˇcinska cena. Znotraj kriterijev je potrebno doloˇciti toˇckovnik in kriterije ovrednotiti z dodano teˇzou10. Teˇza omogoˇci loˇcevanje pomembnih funkcij MCU od manj pomembnih.

Naslednji korak je pregled ponudb trgovcev z elektroniko, kot je npr. trgovsko podjetje

“Farnell“ [13], kjer se izmed vseh MCU izbre nekaj kandidatov. Slednje se razvrstiti v tabelo, tabela 3.1, in opravi se postopek toˇckovanja. Toˇcketje potrebno pomnoˇziti s teˇzo uin jih na koncu seˇsteti. Pri ekonomskih kriterijih veljau≤0, ker je niˇzja cena prednost.

Optimalni MCU je tisti z najveˇcjo konˇcno vsoto toˇck. Konˇcna vsota je sestavljena iz vsote tehniˇskih in ekonomskih kriterijev. Najveˇcje ˇstevilo toˇck je po opisanem postopku zbral MCU po imenu LPC3141, ki je podrobno opisan v poglavju 3.1.3.

7Angleˇsko tudi interrupt.

8Ponavljajoˇc se postopek.

9Zbirka programskih funkcij oz. ukazov.

10ˇStevilo, s katerim je kriterij pomnoˇzen. Doloˇca pomembnost kriterija.

(18)

kandidati LPC3141LPC3130LPC1758LPC3180MCF52277MCF5275JN5139AT91PIC32MX575 tt·utt·utt·utt·utt·utt·utt·utt·utt·u kriterijtoˇckovnikukriteriji 60-1004 100-1406 140-1808kapac.RAM[kB] >180101010100440440440660440440880440 100-1202 120-1404 140-1606 160-2008frek.MCPU[MHz] >20010

88648642161080864864108086400 23 36ˇst.ADC 492918918918612/000918001020 125 loˇclj.ADC[bit]161010000055000/0005500000 100-1205 120-1406 140-1607frekv.ADC[MHz] 160-18085/0/0/0/0/000/000/0 11 22ˇst.DAC 332/0/0/0/0/000240036 11,125 loˇclj.DAC[bit]161010/0/055010100/00055000/0 100-1205 120-1406 140-1607frekv.DAC[MHz] 160-18085/0/0/0/0/000/000/0 PWM22242424242424002424 UART35315315315315315315315315315 SPI55525525525525525525525525525 USB1010101001010010100101001010010100000010100 ”Linux”podpora10101010010100/0/0/0/0/0/0/0 Σtehniˇskihkriterijev426366318376268248282188210 kriterijuekonomskikriteriji koliˇcinskacenana100kosov[]-74,50-31,503,12-21,846,48-45,3610,45-73,15/-0/-05,82-40,74/-04,86-34,02 cenana1kos[]-36,35-19,054,42-13,269.17-27,5112,36-37,08/-021,34-64,029,16-27,4817,06-51,187,40-22,20 Σekonomskihkriterijev-50,55-35,10-72,87-110,230-64,02-68,22-51,18-56,22 Σtehniˇskihinekonomskihkriterijev375,45330,90245,13265,77268183,98213,78136,82153,78 3 Tabela3.1:TabelakriterijevinizbiranajprimernejˇsegakandidataLPC3141.

(19)

3.1.3 Mikrokrmilnik LPC3141

LPC3141 je MCU, ki ga izdeluje podjetje “NXP“. Zgrajen je okoli enojedrnega MCPU, imenovanega ARM926ej-s s hitrostjo 270 MHz. MCPU izdeluje drugo podjetje, imenovano

”ARM”. LPC3141 ima 4 mojstre11, slika 3.4. Dva izmed teh sta I-cache in D-cache, s katerima upravlja neposredno. Preostala mojstra sta DMA in USB OTG. Slednji lahko prevzame tudi vlogo suˇznja. Periferije so skupaj s pomnilniˇskimi enotami razvrˇsˇcene v 14 suˇzenjskih domen, znotraj katerih vsaki periferiji pripada veˇc modulov. Suˇznje in mojstre povezuje veˇcplastna AHB matrika, slika 3.4. Znotraj domene posamezne periferije in njihove module povezuje APB matrika.

Slika 3.4: AHB matrika med seboj povezuje 4 mojstre in 14 suˇzenjskih domen [14, str. 3].

Dobra lastnost veˇcplastne AHB matrike je nemotena povezava med mojstri in suˇznji.

Edina omejitev se pojavi, ko veˇc mojstrov zahteva dostop do istega suˇznja. V takem primeru je potreben dogovor oz. arbitraˇza. Pri dogovoru je potrebno doloˇciti prioriteto mojstrov, s katero upravlja posebni register12, ki se nahaja v suˇzenjski domeni 0, slika 3.4,

11Mojster je v raˇcunalniˇstvu komponenta, ki je nadrejena ostalim komponentam, imenovanim suˇznji.

Mojster izbira suˇznje in jim pove, kaj naj delajo.

12Pomnilnik je sestavljen iz pomnilniˇskih domen, te pa iz spominskih celic z naslovi. Hitre spominske celice se imenujejo registri. Ti vsebujejo doloˇceno ˇstevilo bitov, katerih zaporedje je pomembno. ˇStevilo bitov v enem registru je odvisno od bitnosti sistema. Tako ima npr. 32-bitni sistem v registru 32 bitov, izmed katerih je prvi bit0, zadnji pa bit31.

(20)

oz. pomnilniˇski celici z naslovom0x1300000013, slika 3.5. Njegovo ime jeAHB0_EXTPRIO, njegov pomnilniˇski naslov pa 0x13002880, kar je znotraj pomnilniˇske domene APB0.

Slika 3.5: Pomnilnik, sestavljen iz pomnilniˇskih domen, znotraj katerih so registri [14, str. 14].

Zagonski postopek

LPC3141 ob ponovnem zagonu vedno zaˇcne z izvajanjem kode na lokaciji 0x00000000, kjer se nahaja 4 kB procesorskega pomnilnika. Slednji je le ob zagonu zasenˇcen, stran 28, s prvimi 4 kB pomnilnika ISROM z zaˇcetkom na naslovu 0x12000000, slika 3.5. V prvih 4 kB ISROM je shranjen zagonski postopek, slika 3.6. Ta najprej izklopi vse prekinitve in poskrbi za neprekinjen zagon. Sledi izklop MMU, kar onemogoˇci napaˇcno naslavl- janje pomnilnika. Nato se sp postavi na vrh ISRAM, da ga MCPU lahko pobriˇse. Ko je ISROM pobrisan, sledi doloˇcanje zagonskega naˇcina. LPC3141 omogoˇca 6 zagonskih naˇcinov, izbranih s kombinacijo logiˇcnih stanj na MCU pinih GPIO0, GPIO1 in GPIO2, priloga A. Za uporabo v ˇsoli je najprimernejˇsi zagonski naˇcin USB DFU in je zaradi tega edini obravnavani. Zagonski naˇcin USB DFU najprej preko CRC preveri, ali je izvrˇsljiva datoteka14 na PC primerna za izvajanje na LPC3141. Datoteka je lahko velika najveˇc

130xna zaˇcetku naslova oznaˇcuje ˇsestnajstiˇski, angleˇsko hexadecimal oz. hex, zapis s 16 simboli, ki so ˇstevila od 0-9 in ˇcrke A-F. Za razliko od 0x, 0b na zaˇcetku pomeni dvojiˇski, angleˇsko binary, zapis.

0x13000000je enako kot0b00000000000000000000000011001100.

14Angleˇsko tudi executable file, je konˇcna razliˇcica programa, pripravljena za izvajanje.

(21)

128 kB. ˇCe CRC potrdi primernost izvrˇsljive datoteke, se ta preko USB vodila prenese s PC, ki je v tem primeru mojster, na naslov 0x11029000 znotraj ISRAM, imenovan vstopna toˇcka15. Naslov vstopne toˇcke izvrˇsljivega programa doloˇcimo znotraj povezo- valne skripte, datoteka 5.6, medtem ko njeno ”ime” definiramo znotraj zagonske kode, datoteka 5.5. ”Ime” vstopne toˇcke kasneje s pridom uporabljamo v C-datotekah, da- toteka 6.1. LPC3141 zahteva, da je naslov vstopne toˇcke enak 0x11029000 [15, str. 83].

Zadnji del vprogramirane kode, shranjene v ISROM, preusmeri MCPU na vstopno toˇcko, s ˇcimer se zakljuˇci izvajanje vprogramirane kode v ISROM, ki slednjo zamenja z na zaˇcetku zasenˇcenimi 4 kB spomina, in zaˇcne izvajanje uporabniˇske izvrˇsljive datoteke v ISRAM.

Slika 3.6: Zagonski postopek LPC3141 [15, str. 84].

15Angleˇsko entry point je naslov, kjer se nahaja prvi ukaz uporabniˇskega programa.

(22)

CGU

CGU, slika 3.7, je najpomembnejˇsa periferija v LPC3141, ki skrbi za sistemsko uro oz.

frekvenco mojstrov, pomnilniˇskih modulov in vseh periferij oz. modulov, razvrˇsˇcenih v domene, slika 3.4. CGU iz 5 referenˇcnih frekvenc preko multiplekserjev16, stikal in delil- nikov ustvari 92 izhodnih frekvenc, ki gredo v module. Ker imajo nekatere periferije veˇc modulov, ki potrebujejo lastno frekvenco, je ˇstevilo izhodnih frekvenc CGU veˇcje kot ˇstevilo periferij.

Slika 3.7: Zgradba CGU.

Prvo referenˇcno sinusno frekvenco 12 MHz ustvarja zunanji“Pierce“ oscilator [16]. Druge referenˇcne frekvence prihajajo neposredno iz MCU vhodov I2SRX_BCK0, I2SRX_BCK1, I2SRX_WS0 in I2SRX_WS1, priloga A, ki sluˇzijo sprejemanju avdio signalov po protokolu I2S. Skupaj do stikalnega vezja prispe 7 vhodnih frekvenc, med katerimi lahko v izbirni fazi, slika 3.7, izbira 12 baznih frekvenc. Bazne frekvence izberejo eno izmed vhodnih frekvenc preko dvostranskega stikala, slika 3.8.

Slika 3.8: Dvostransko stikalo, s katerim se vrˇsi izbirna faza znotraj CGU [15, str. 286].

16Vezje z veˇcimi vhodi in enim izhodom, ki preko posebnega stikala izbere enega izmed vhodov in njegov signal prenese na izhod.

(23)

Ob zagonu MCU je stran 1 stikala vedno omogoˇcena, medtem ko je stran 2 onemogoˇcena.

Izbira oz. preklop se izvede tako, da se na onemogoˇceni strani17, v tem primeru stran 2, preko registrovFS1_xinFS2_x18 izbere eno izmed 7 vhodnih frekvenc19, tabela 3.2. Nato je potrebno omogoˇceno stran, v tem primeru stran 1, izklopiti preko bita 0 v registru SCRxin vklopiti onemogoˇceno stran, v tem primeru stran 2, preko bita 1 v registru SCRx [15, str. 249, 262]. S tem je izbirna faza konˇcana.

vrednost registrovFS1xinFS2x izbrana vhodna frekvenca

0x0 oscilator

0x1 I2SRX BCK0

0x2 I2SRX WS0

0x3 I2SRX BCK1

0x4 I2SRX WS1

0x5 avdio PLL

0x6 sistemski PLL

Tabela 3.2: Izbira razliˇcnih referenˇcnih frekvenc z registri FS1 x in FS2 x [15, str. 263].

V razˇsiritveni fazi, slika 3.7, vsaka bazna frekvenca poskrbi za veˇc modulov, tabela 3.3.

Frekvence modulov znotraj ene bazne frekvence so zatorej vedno usklajene oz. sinhronske.

V kolikor baznih frekvenc ne bi bilo, bi veˇcina modulov v LPC3141 izgubila funkcionalnost.

Nekatere bazne frekvence lahko namerno izklopimo tako, da v registrihSCR_x[15, str. 262]

bit 3 postavimo v logiˇcno 1. Prav tako lahko izklopimo frekvence posameznih modulov.

To storimo tako, da bit 1 v registrihPCRm20 [15, str. 250-252] postavimo v logiˇcno 0 [15, str. 264-265].

ˇst.x bazna frekvenca moduli

0 SYS BASE APB0 CLK, APB1 CLK, APB2 CLK, APB3 CLK, APB4 CLK, AHB2MMIO CLK, AHB0 CLK, SDMA PCLK, SDMA CLK GATED,

NANDFLASH S0, NANDFLASH PCLK, ARM926 BUSIF CLK, SD MMC HCLK, USB OTG AHB CLK, ISRAM0 CLK, ISRAM1 CLK, ISROM CLK, MPMC CFG CLK, MPMC CFG CLK2, MMIOINTC CLK, ARM926 CORE CLK, NANDFLASH AES CLK, NANDFLASH NAND CLK, NANDFLASH ECC CLK, SD MMC CCLK IN, CLOCK OUT, EBI CLK, ARM926 RETIME CLK, MPMC CFG CLK3, RED CTL RSCLK

1 AHB APB0 BASE AHB TO APB0 PCLK, IOCONF PCLK, ADC CLK, ADC PCLK,

EVENTROUTER PCLK, WDOG PCLK, CGU PCLK, SYSCREG PCLK, RNG PCLK 2 AHB APB1 BASE AHB TO APB1 PCLK, PWM PCLK, PWM PCLK REGS, PWM CLK, TIMER0 PCLK,

TIMER1 PCLK, TIMER2 PCLK, TIMER3 PCLK, I2C0 PCLK, I2C1 PCLK 3 AHB APB2 BASE AHB TO APB2 PCLK, PCM PCLK, PCM APB PCLK, UART APBQ CLK, LCD PCLK,

SPI PCLK, SPI PCLK GATED, LCD CLK

4 AHB APB3 BASE AHB TO APB3 PCLK, I2STX FIFO 0 PCLK, I2STX IF 0 PCLK, I2STX FIFO 1 PCLK, I2STX IF 1 PCLK, I2SRX FIFO 0 PCLK, I2SRX IF 0 PCLK, I2SRX FIFO 1 PCLK, I2SRX IF 1 PCLK

7 CLK1024FS BASE I2S EDGE DETECT CLK, I2STX WS0, I2STX WS1, ADC PCLK, I2SRX WS1, I2STX BCK0 N, I2SRX BCK0 N, I2STX CLK0, CLK 256FS, I2STX BCK1 N, I2SRX BCK1 N , SPI IPQ CLK, SPI IP CLK GATED

8 I2SRX BCK0 BASE I2SRX CK0

9 I2SRX BCK1 BASE I2SRX BCK1

5 PCM BASE PCM CLK IP

6 UART BASE UART U CLK

10 SPI CLK BASE SPI CLK

11 SYSCLOCK O BASE frekvenca gre na MCU izhod z imenomSYSCLOCK O, priloga A

Tabela 3.3: Bazne frekvence in njihovi moduli [15, str. 244-248, 298-300].

17Med obratovanjem frekvence ne smemo menjati.

18xje celo ˇstevilo od 0 do 11 in oznaˇcuje bazno frekvenco, tabela 3.3.

19Ob zagonu MCU je vrednost vsehFS1xinFS2xregistrov enaka0x0, kar pomeni, da je za vse bazne frekvence izbrana vhodna frekvenca 12MHz, ki prihaja iz oscilatorja. V kolikor za bazno frekvenco ˇzelimo izbrati drugo vhodno frekvenco, v registreFS1xinFS2xvpiˇsemo drugo vrednost, tabela 3.2.

20mje ˇstevilo od 0 do 91 in oznaˇcuje enega izmed 92 modulov.

(24)

Nekatere bazne frekvence imajo enega ali veˇc delilnikov, slika 3.7, ki bazno frekvenco lahko delijo in ustvarijo njeno izpeljanko. 92 modulov nato lahko preko registrov ESRy21 [15, str. 255-257, 265-267] izbere lastno bazno frekvenco ali njeno izpeljanko. Potrebno je opozoriti, da imajo bazne frekvence razliˇcno ˇstevilo delilnikov, zaradi ˇcesar so biti za izbiro delilnikov v registrih ESRy razliˇcno razporejeni. Moduli ne morejo izbrati sosednje bazne frekvence ali njenih izpeljank. Tako lahko npr. moduli bazne frekvence AHB_APB0_BASE izbirajo med delilnikoma7,8ali bazno frekvenco. Moduli so v tem primeruAHB_TO_APB0_- PCLK,IOCONF_PCLK,CGU_PCLK,ADC_CLK,ADC_PCLK,EVENTROUTER PCLK,WDOG_PCLK,SYS- CREG_PCLK inRNG_PCLK [15, str. 245, 299].

ˇCe npr. modul RNG_PCLK ˇzeli izbrati bazno frekvenco, je potrebno v regitru ESR39 bit 0 postaviti v logiˇcno 0. ˇCe isti modul ˇzeli izbrati enega izmed delilnikov, je potrebno najprej izklopiti vse delilnike bazne frekvence, v tem primeruAHB_APB0_BASE. To storimo tako, da v registru BCR1 [15, str. 268, 269] bit 0 postavimo v logiˇcno 0. Nato je potrebno nastaviti izbrani delilnik, v tem primeru delilnik 7. Delilnik deli bazno frekvenco νb in vrne deljeno frekvenco νd (3.2) [15, str. 269].

νd= n

b (3.2)

Ko npr. ˇzelimo deliti bazno frekvenco νb = 12 MHz s 4, izberemo n = 1 in m = 4 in na izhodu delilnika dobimo deljeno frekvencoνd= 3 MHz. Sledi izraˇcun vrednostiMSUB(3.3) inMADD (3.4), katerih binarno obliko je potrebno zapisati v zato doloˇcene bite v registrih FDCz22[15, str. 257-258, 269]. Ker nastavljamo delilnik7, moramo vrednost MSUBzapisati v bite 11-18 in vrednost MADD v bite 3-10 registraFDC723.

MSUB=−n (3.3)

MADD=mn (3.4)

Sledi vklop vseh delilnikov bazne frekvence, v tem primeru AHB_APB_BASE, kar storimo tako, da v registru BCR1 bit 0 postavimo v logiˇcno 1. Nato poˇzenemo izbrani delilnik.

To storimo tako, da bit 1 registra FDC7 postavimo v logiˇcno 1. Nazadnje je potrebno za modul, v tem primeru RNG_PCLK, namesto bazne frekvence izbrati deljeno frekvenco delilnika. V registruESR39[15, str. 256, 266] bit0postavimo v logiˇcno 1, s ˇcimer je izbran vhod iz delilnikov in ne bazna frekvenca. Nato bit 1 postavimo v logiˇcno 0, s ˇcimer je izbran delilnik 7. V kolikor bi na to mesto vnesli logiˇcno 1, bi izbrali delilnik 8.

21y je ˇstevilo od 0 do 88 in oznaˇcuje module z vsaj enim delilnikom. Trije moduli nimajo delilnikov in poslediˇcno nimajo registrovESRy.

22zje ˇstevilo od 0 do 23 in oznaˇcuje delilnike.

23V primeru delilnikaFDC17ne bi uporabljali istih bitov!

(25)

Vhodno/izhodni konfiguracijski modul

LPC3141 ima funkcijske pine, ki lahko izbirajo med normalno ali GPIO vlogo, ter pine, ki imajo nespremenljivo GPIO vlogo. Funkcijskim pinom je ob ponovnem zagonu MCU privzeta normalna vloga. Funkcijski pini v tej vlogi sluˇzijo delovanju doloˇcenih periferij, ki upravljajo s pinom in ga naredijo neprogramabilnega, dokler mu ne nastavimo druge vloge. Druga vloga je vloga GPIO, v kateri pin postane popolnoma programabilen preko registrov MODE0 inMODE1 [15, str. 311], ki se nahajajo znotraj vhodno izhodnega konfigu- racijskega modula (IOCONFIG), katerega napaja frekvenca IOCONF PCLK, tabela 3.3.

Ob ponovnem zagonu MCU se vsi biti registra MODE0 nastavijo na 0 in vsi biti registra MODE1 na 1, kar pomeni, da so vsi funkcijski pini v normalni vlogi in z njimi upravljajo periferije. ˇCe ˇzelimo spremeniti vlogo pina, moramo tako v registruMODE0 kot v registru MODE1 ustrezno nastaviti N-ti bit, ki ustreza N-temu pinu, tabela 3.4.

logiˇcno stanje N-tega bita registraMODE0 logiˇcno stanje N-tega bita registraMODE1 vloga N-tega pina

0 0 visoko impedanˇcni vhod

0 1 normalna vloga

1 0 izhod v logiˇcnem stanju 0

1 1 izhod v logiˇcnem stanju 1

Tabela 3.4: Izbira vloge pinov preko registrov MODE0 inMODE2 [15, str. 318].

Za razliko od funkcijskih pinov so pini z nespremenljivo GPIO vlogo ob ponovnem zagonu nastavljeni kot visoko impedanˇcni vhodi, kar pomeni, da so vsi biti registrov MODE0 in MODE1 enaki 0. Poleg omenjenih registrov je potrebno pred ponovnim zagonom poskrbeti za stanje 0 na pinihTRST_NinJTAGSEL, priloga A. Poudarimo, da ne obstaja le en par reg- istrovMODE0inMODE1! RegistriPINS,MODE0,MODE0_SET,MODE0_RESET,MODE1,MODE1_SET in MODE1_RESET [15, str. 312] obstajajo za vsako periferijo [15, str. 311]. Posamezni biti znotraj teh registrov so namenjeni posameznim pinom [15, str. 312-317].

Do registrov MODE0 in MODE1 za izbrano periferijo dostopamo tako, da v naslov najprej vnesemo bazni naslov pomnilniˇske domene IOCONFIG (0x13003000), slika 3.5, kateri priˇstejemo naslov periferije, doloˇcen znotraj domene IOCONFIG, tabela 3.5, in naslov ˇzeljenega registra, tabela 3.6.

periferija bazni naslov periferije znotraj domene IOCONFIG

CGU 0x080

GPIO 0x1C0

PWM 0x2C0

SPI 0x240

... ...

Tabela 3.5: Bazni naslovi periferij v IOCONFIG [15, str. 311].

register naslov opis

PINS 0x000 register za branje stanj na pinih v vlogi visokoimpedanˇcnih vhodov, ki lahko bere le vse pine naenkrat

MODE0 0x010 register za nastavljanje vloge pinov

MODE0 SET 0x014 register za nastavljanje in branje bitov registraMODE0 MODE0 RESET 0x018 register za vraˇcanje bitov registraMODE0v privzete nastavitve

MODE1 0x020 register za nastavljanje vloge pinov

MODE1 SET 0x024 register za nastavljanje in branje bitov registraMODE1 MODE1 RESET 0x028 register za vraˇcanje bitov registraMODE1v privzete nastavitve

Tabela 3.6: Naslovi registrov v IOCONFIG [15, str. 312].

(26)

Tako je naslov registra npr. MODE1_RESETza periferijo GPIO enak 0x13003000 +0x1C0 +0x028=0x130031E8. S tem, ko znamo doloˇciti naslove registrov, lahko registre nastav- ljamo, vendar moramo vedeti, kateri bit znotraj registrovMODE0,MODE0_SET,MODE0_RESET, MODE1, MODE1_SET inMODE1_RESET je zadolˇzen za posamezni pin, priloga A, tabela 3.7.

bit v registrih MODE0, MODE0 SET, MODE0 RESET, MODE1, MODE1 SET in MODE1 RESET

ime pina lokacija pina

0 GPIO1 J10

1 GPIO0 K10

2 GPIO2 L14

3 GPIO3 B11

4 GPIO4 C11

5 GPIO11 H11

6 GPIO12 H10

7 GPIO13 J12

8 GPIO14 J14

9 GPIO15 J13

10 GPIO16 J11

11 GPIO17 K12

12 GPIO18 K14

13 GPIO19 H11

14 GPIO20 K13

Tabela 3.7: Povezava bitov s pini za periferijo GPIO [15, str. 312-317].

PWM modul

PWM modul ima le en izhod, dosegljiv na pinu PWM_DATA, priloga A. Na istem izhodu poleg PWM moduliranega signala lahko sprogramiramo tudi PDM moduliran signal ali konstantno stanje logiˇcne 1. Za robotiko je zanimiv predvsem PWM moduliran signal, saj z njim krmilimo:

• hitrost DC motorjev npr. v mobilnih robotih, ki se poslediˇcno premikajo hitreje ali poˇcasneje,

• kot servo motorjev, ki so vgrajeni v sklepe robotske roke in sluˇzijo doloˇcanju lege in orientacije robotske roke v prostoru.

PWM moduliran signal MCU ustvari tako, da primerja binarno vrednost 12-bitnega ˇstevca24 z binarnim ˇstevilom, programabilnim preko bitov 0-11, v registru PWM_TMR [15, str. 488], ki je dosegljiv na naslovu0x13009000. Izhod modula je v logiˇcni 1, ˇce je vrednost 12-bitnega ˇstevca niˇzja od vrednosti v registru PWM_TMR, slika 3.9. Izhod PWM modula se samodejno zaˇzene, ko v register PWM_TMRvnesemo kakrˇsno koli vrednost.

2412-bitni ˇstevec ˇsteje od 0 do vrednosti 212−1 = 4095, slika 3.9, oz. 0xFFF. Ko doseˇze najveˇcjo vrednost, zaˇcne ponovno ˇsteti od 0.

(27)

Slika 3.9: Stanje na izhodu PWM modula [15, str. 487].

Poleg registraPWM_TMR ima PWM modul ˇse register PWM_CNTL[15, str. 489], dosegljiv na naslovu 0x13009004. Biti registra PWM_CNTL so razporejeni v 4 skupine, izmed katerih ima vsaka skupina posebno funkcijo, tabela 3.8.

bit vrednost ob zagonu vrednost funkcija

00 frekvenca na izhodu je enakaPWM CLK 01 frekvenca na izhodu je enakaPWM CLK/ 2 10 frekvenca na izhodu je enakaPWM CLK/ 4

0in1 00

11 frekvenca na izhodu je enakaPWM CLK/ 8

4 0 1 izhodu je v logiˇcni 1

6 0 1 na izhodu se ponavljajo zgornji 4 bitiPWM TMRregistra, kar

predstavlja”loop”naˇcin delovanja

7 0 1 namesto PWM moduliranega signala na izhodu dobimo PDM

moduliran signal

Tabela 3.8: Funkcije bitov v registru PWM CNTL [15, str. 489].

Poleg frekvence PWM CLK, tabela 3.8, ima PWM modul ˇse frekvenco PWM PCLK, ki je frekvenca APB matrike, in frekvenco PWM PCLK REGS, ki je frekvenca, s katero delujejo registri PWM modula, tabela 3.3.

3.2 Mikroprocesor ARM926ej-s

LPC3141 je zgrajen na osnovi MCPU ARM926ej-s. Slednji podpira toˇcno doloˇcen na- bor ukazov (ISA), kateremu je potrebno prirediti vsak program, napisan v visokem pro- gramskem jeziku, npr. C, C#, C++, ali v zbirniku. Slednji mora biti ARM zbirnik25. Ko program napiˇsemo v visokem programskem jeziku, ga prevedemo v dvojiˇski zapis, ki je edini zapis, zdruˇzljiv z MCPU. Prevajanje se vrˇsi preko prevajalnikov, ki so vkljuˇceni v razliˇcnih razvojnih verigah26. Obstajata dve vrsti prevajalnikov, za katere Slovenci uporabljamo enoten izraz prevajalnik, vendar pa ju je potrebno loˇciti na prevajalnike viˇsjih programskih jezikov27 in prevajalnike zbirnika28. Da bi lahko prevajali programe za ARM926ej-s, moramo najprej doloˇciti, kateri ISA podpira, in na podlagi tega izbrati razvojno verigo, ki podpira isti ISA. Ker je podjetje ARM tesno vpleteno v razvoj ISA, se pri poimenovanju svojih MCU posluˇzuje posebne nomenklature, v kateri vsaka ˇcrka v imenuARM{x}{y}{z}{t}{d}{m}{i}{e}{j}{f}{-s} pove nekaj o MCU [17, str. 37].

25Angleˇsko ARM assembly language.

26Angleˇsko toolchain - je skupina orodij, kot so prevajalniki, razhroˇcevalniki... Sluˇzijo pripravi izvrˇsljivih datotek v dvojiˇskem zapisu, berljivem druˇzini MCPU, znotraj katere vsi MCU podpirajo isti ISA.

27Angleˇsko compiler.

28Angleˇsko assembler, kar ni enako assembly.

(28)

x . . . Druˇzina jedra.

y . . . ˇStevilo MMU.

z . . . MCPU vkljuˇcuje I-cache in D-cache.

t . . . MCPU podpira 16-bitno procesiranje, imenovano tudi”Thumb”.

d . . . MCPU vsebuje JTAG modul.

m . . . MCPU vsebuje hitri mnoˇzilnik.

i . . . MCPU vsebuje EmbeddedICE makro celico za razhroˇcevanje.

e . . . MCPU vsebuje toˇcket, d,m,i.

j . . . MCPU podpira 8-bitno procesiranje, imenovano tudi”Jazelle”.

f . . . MCPU vsebuje vektorsko plavajoˇco vejico.

s . . . MCPU je zdruˇzljiv s programsko opremo za elektronsko naˇcrtovanje (EDA).

Iz zgornjega razberemo, da ARM926ej-s spada v druˇzino ARM9. Slednja podpira ISA razliˇcico ARMv5TEJ [17, str. 39]. Glede na poznano razliˇcico ISA kasneje na spletu poiˇsˇcemo prosto dostopno razvojno verigo, poglavje 5.1.1 in 5.1.2, s katero brez teˇzav prevajamo programe za ARM926ej-s.

ARM jedra so vsa zgrajena po prirejeni arhitekturi raˇcunalnika z zmanjˇsanim naborom ukazov (RISC) [17, str. 4]. Filozofija arhitekture RISC je ˇcim manjˇse ˇstevilo osnovnih ukazov, ki se izvedejo v enem procesorskem ciklu in so zato hitri. S kombinacijo osnovnih ukazov se nato programsko tvori kompleksnejˇse ukaze. Pojavi se potreba po kompleksnih ISA in poslediˇcno prevajalnikih. Tudi ARM926ej-s ima, tako kot LPC3141, registre, ki jih je mogoˇce programirati le v ARM zbirniku, v katerem je potrebno napisati zagonsko kodo, datoteka 5.5. Ta sistem vzpostavi do take mere, da lahko na njem teˇce program- ska oprema, pisana v viˇsjih programskih jezikih. Za pisanje zagonske kode je kljuˇcnega pomena poznavanje ARM registrov, poglavje 3.2.1.

3.2.1 ARM registri

V vseh ARM jedrih je kljuˇcnega pomena tudi nabor 32-bitnih registrov. ˇCe ˇzelimo izvajati operacije s kakrˇsnimi koli spremenljivkami, shranjenimi v pomnilniku, jih je potrebno najprej prenesti v nabor registrov. Ko se ena ali veˇc vrednosti nahaja v naboru registrov, aritmetiˇcno logiˇcna enota (ALU) ali mnoˇzilno priˇstevalna enota (MAC) opravita ˇzeljene operacije in rezultat shranita nazaj v nabor registrov. Nekateri registri v naboru so vidni vedno, medtem ko jih je nekaj, ki so vidni le v enem izmed 7 procesorskih naˇcinov29, slika 3.10.

29Registrom, ki niso vidni vedno, reˇcemo tudi zasenˇceni registri.

(29)

Slika 3.10: Nabor ARM registrov, kjer sivo obarvani registri niso vidni v vsakem proce- sorskem naˇcinu, rdeˇce obrobljeni registri pa so posebnonamenski registri [17, str. 24].

Vedno so vidni registri r0-r7, r15 oz. programski ˇstevec (pc) ter trenutni programski statusni register (cpsr). Ko pride do menjave procesorskega naˇcina, se registrir8-r12, r13 oz. kazalˇcek kupˇcka (sp) ter r14 oz. povratni register (lr) zamenjajo z istoimenskimi re- gistri doloˇcenega procesorskega naˇcina. Tako se v primeru menjave procesorskega naˇcina iz ”sistemskega” v ”hitro prekinitveni” registri r8-r14 zamenjajo z registri r8 fiq-r14 fiq, slika 3.10.

Informacija, shranjena v registrihr8-r14, tako ostane nespremenjena, vse dokler se MCPU ne vrne iz ”hitro prekinitvenega” naˇcina v ”sistemski” procesorski naˇcin. Tako MCPU lahko nadaljuje delo v”sistemskem” procesorskem naˇcinu tam, kjer ga je konˇcal, preden je opravil preklop na”hitro prekinitveni”naˇcin. Da bi se MCPU vrnil v popolnoma identiˇcno okolje, se pred preklopom cpsrshrani v shranjevalne procesorske statusne registre, (spsr) v tem primeru v spsr fiq, da se lahko kasneje obnovi.

Reference

POVEZANI DOKUMENTI

Protokolna plast za razliko od povezovalne plasti, ki upravlja komunikacijo med sosednjimi vrati, upravlja komunikacijo med gostiteljem in napravo. Protokolna plast

V nadaljevanju poglavja si bomo bolj podrobno ogledali Linux kot primer operacijskega sistema z ukaznim uporabniˇ skim vmesnikom in tudi grafiˇ cni naˇ cin dela z Linuxom.. Na teh

4 Blaˇ z Rogelj Obstojeˇ ci naˇ cin prevajanja s seznamom besed ni dober, saj je potrebno besede roˇ cno izvaˇ zati v Excel-ove tabele in ustvarjati vnosne skripte, ki jih je

Pred izbiro orodja najprej izberemo elemente, ki jih želimo kopirati (lahko jih izberemo tudi naknadno v polju Entities to Pattern ), nato pa v oknu z lastnostmi nastavimo

V skripti bash moramo poskrbeti, da se vedno izvaja le ena instanca skripte, saj drugaˇ ce tvegamo moˇ znost veˇ ckratne validacije enega poskusa in ponoven vnos izraˇ zenosti genov

Vse kar nam ta metoda naredi je, da nam ustvari prvo razliˇ cico podatkovne baze s pomoˇ cjo SQL skripte, nad katero potem poˇ zenemo metodo onUpgrade(int, int), ki nam to nadgradi do

V intervjujih so nato nekateri učenci odgovarjali na še eno vprašanje s transformacijami, kjer so opisali, kako se razlikujejo vzorci glede na vzorec v prvi vrstici, slika

Treća karta (karta 3), o razvoju *č u skupu *čъr-, pokazuje kako izoglose, koje prolaze područjem hrvatskoga jezika, povezuju njegov zapad i jugozapad (većinom kajkavske i