Mikroprocesszorok és mikrokontrollerek

Slides:



Advertisements
Hasonló előadás
Számítógépes alapismeretek Kommunikáció Információs és Kommunikációs Technológiák (IKT)
Advertisements

A felhasználói interfész A felhasználói interfész az a felület, amellyel a szoftver az ember felé „fordul”; amellyel a felhasználó nap mint nap találkozik.
A kártyanyomtatás fortélyai Csákvári Krisztián Kártya és címke gyártás
TÖMÖRÍTÉS. Fogalma A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elő. A tömörítési arány függ a fájl típusától,
Bevezetés a C# nyelvbe Az alapok összefoglalása Farkas Csaba.
Az operációs rendszer szerkezete, szolgáltatásai.
Mikroprocesszorok és mikrokontrollerek Programozás és digitális technika ismétlés utolsó frissítés: 2016.VIII.26.
 Alap tudnivalók Alap tudnivalók  Az If és a While folyamatábrák Az If és a While folyamatábrák  Probléma Probléma  A while ciklus (általános alak,
A memória Cél: elektronikus adattárolás a munka közben: - operációs rendszer magja - eszközmeghajtó programok - elindított felhasználói programok - adatok,
2. A szoftverek csoportosítása: a. Rendszerszoftverek: A számítógép zavartalan mûködését biztosítják: BIOS (alapvetõ bemeneti/kimeneti rendszer): olyan.
Forrás: Reiter István C_Sharp programozás lépésről lépésre (frissített tartalommal )
Microsoft Photo Story. Mi is ez?  A Microsoft Photo Story egy alkalmazás, amelyet a Microsoft, a világ egyik legnagyobb szoftvergyártó cége készített.
Hogyan partícionáljuk meghajtónkat?
Internet tudományos használata
Alaplap.
Nagyméretű állományok küldése
Operációs rendszerek.
Valószínűségi kísérletek
Vezetékes átviteli közegek
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Budapest-Fasori Evangélikus Gimnázium
Programstruktúrák.
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat
Elemi adattípusok.
Program utasítássorozat
A számítógép felépítése
Lineáris függvények.
Sz&p prof.
Az integrált áramkörök (IC-k) típusai és tervezése
Az operációs rendszer szerkezete, szolgáltatásai
Algoritmusok és Adatszerkezetek I.
Nyelvek típusossága.
Adatbázis-kezelés (PL/SQL)
INFOÉRA 2006 Véletlenszámok
2. Bevezetés A programozásba
Bevezetés az informatikába
VB ADATTÍPUSOK.
A számítógép operációs rendszere
Adatszerkezetek.
Számítógépek felépítése 6. előadás virtuális tárkezelés
Közigazgatási alapvizsga a Probono rendszerben
Számítógépes Hálózatok
Monitor(LCD).
Kalickás forgórészű aszinkronmotor csillag-delta indítása
Vonalkódok Kajdocsi László Informatika tanszék A602 iroda
Informatikai gyakorlatok 11. évfolyam
AVL fák.
Informatikai gyakorlatok 11. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
Környezeti Kontrolling
Oracle Adatbázisok kezelése c#-ban
A Microsoft SharePoint testreszabása Online webhely
Neumann elvek és a Neumann elvű számítógép felépítése
Számítógépes Folyamatirányítás
A számítógép története
További rendező és kereső algoritmusok
A szállítási probléma.
A Számítógépek felépítése, működési módjai
A számítógép operációs rendszere
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat
Matematika II. 5. előadás Geodézia szakmérnöki szak 2015/2016. tanév
Műveletek, függvények és tulajdonságaik Mátrix struktúrák:
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
Tájékoztató az EPER pályázati folyamatáról
TITKOSÍTÓ ALGORITMUSOK
Szöveges adatok tárolása
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Algoritmusok.
Hagyományos megjelenítés
Az operációs rendszer definíciója
Előadás másolata:

Mikroprocesszorok és mikrokontrollerek Programozás és digitális technika ismétlés utolsó frissítés: 2018.X.11.

Utasításkészlet

Utasításkészlet Utasításkészlet (instruction set): a processzor által „hardveresen” ismert utasítások halmaza Gépi kód (machine code): az utasításkészletben található utasítások sorozatából álló program, binárisan tárolva, gyakran hexadecimálisan megjelenítve. Ez a processzor által közvetlenül futtatható program.

Utasításkészlet Assembly: a legalacsonyabb szintű, processzorfüggő programozási nyelv. Lényegében a gépi utasításokhoz egy-egy könnyebben megjegyezhető szót rendelünk (mnemonic), ill. megkönnyítjük az adatábrázolást, behelyettesítéseket (tehát pl. a számadatokat írhatjuk decimálisban, a szöveges adatot ascii-ban, az ugrásoknál név szerint hivatkozhatunk a sorokra stb.).

Utasításkészlet Az eredetileg nem gépi kódban megírt programokat fordítóprogram (compiler) segítségével (régen kézzel!) alakítják gépi kódra. Magasabb szintű (pl. grafikus) nyelveknél ez akár több lépésben (közbenső nyelv használatával) is történhet. Kérdés: milyen nyelven írják a fordítót?

Utasításkészlet microcode: a processzoron belül kétszintű a program végrehajtása: a gépi kódú utasításokat még alacsonyabb szintű utasítások (microinstructions) sorozatára bontja kívülről nem látszik – még assembly szinten sem! a gépi kód így könnyebben változtatható a hardver módosítása nélkül; ill. hasonló processzortípusok gépi kódja is hasonló lehet, míg a microcode különbözik (kód hordozhatóság) akár más processzor emulációja is lehetséges könnyebb hardver (processzor) fejlesztés https://en.wikipedia.org/wiki/Microcode

Programozás, programozási nyelvek

Assembly (alacsonyszintű) Lényegében az utasításkészlet olvasható formája Nehéz és időigényes benne összetett műveleteket megvalósítani (de lehet előre megírt kódrészleteket felhasználni) Nehezen átlátható, megnő a hibázás valószínűsége, nehezebb megtalálni a hibát Kis, egyszerű programokhoz lehet előnyös, főleg mikrovezérlőkben Gyors ill. kisméretű, hardveroptimalizált kódot lehet készíteni Kihasználható a hardver összes tulajdonsága

Magasabb szintű nyelvek A magas szintű nyelvekben egyszerű utasításokkal lehet összetett feladatokat elvégezni. Könnyen, gyorsan fejleszthető, könnyebb a hibakeresés (*), átlátható *: kivéve ha a hiba megtalálásához hardver ill. gépi kódú ismeretek szükségesek

Közepes szintű nyelvek pl. C Még relatíve közel áll a hardverhez csak vezérlő utasítások vannak, a többit külső függvénykönyvtárból kell meghívni, ezek sokfélék lehetnek (bár van standard library) haladó szintű, könnyű elrontani a programot pl. fordító vagy operációs rendszer készítésére (Unix)

C példa: int tomb[10]; mi lesz tomb[11] értéke? if (a=b) ... mit csinál ez?

Magasszintű nyelvek Magasabbszintű nyelvek: Basic, Pascal, Python, Perl, PHP,Ruby, C#, Java,... Könnyen megtanulható, programozható, átlátható Gyakran grafikus felület készítéséhez is segítséget adnak (Visual Basic/C, stb) Lefordított program potenciálisan nagyobb és/vagy lassabb, mint C vagy asm forrás esetén Gyakran nagy és erőforrás igényes futtató környezetet (runtime engine) igényelnek (ld dotNet, Java) Kevesebb esély algoritmus hibára, több esély a runtime fordító/környezet/oprendszer környékén lévő hibára (?)

Forráskód hordozhatósága Hordozható forráskód (portable source): módosítás nélkül vagy kis módosítással más hardveren (alaplap, processzor stb) is lefordítható ehhez szükséges, hogy adott hardverre legyen kész fordítóprogram nagyon különböző hardvereken miért akarnám teljesen ugyanazt a programot futtatni? ld. win8 – tablet és PC... másképpen: a program felhasználói oldalról lehet hasonló, míg a forrásoldalról különböző, figyelembe véve a hardver adottságokat... csak hát ugye az nem gazdaságos... Programnyelv hordozhatósága: ez már értelmesebb dolog, de a függvénykönyvtárak jó eséllyel különbözni fognak!

Olvashatóság „Read-only programming language”: könnyen olvasható, nehezen írható „Write only programming language”: könnyen írható, nehezen olvasható Na és van ez: ide ábrát a conway gameről

Programnyelvek értelmezése interpreted compiled gépi kódra bytecode vegyes (intermediate) ez még itt fejlesztendő!

Programozási tippek Változónevek helyes használata Megjegyzések helyes használata ...

Operációs rendszer

Operációs rendszer Szigorúan nézve nem szükséges a programok futtatásához (korai gépeken nem is volt), de ma már igen kényelmetlen nélküle (kivéve célgépek, pl. beágyazott rendszerek, mikrovezérlők, ahol gyakran csak egy program fut) oprendszer biztosít: felhasználói interfészt (UI: user interface) megkönnyíti a különböző programok betöltését már egy parancssoros felület is sokat segíthet „application programming interface” (API): programozást megkönnyítő eljárások

Operációs rendszer Hardver és felhasználói szintű szoftver közötti réteget biztosít, lehetővé teszi a hardverfüggetlen programozást a felh.szoftverek ugyanazt az API-t használják, de az oprendszerbe (az API alá) beépülő meghajtó program (driver) cserélendő a hardverrel együtt API: egy függvénykönyvtár, a futó program által (nyelv függetlenül is) meghívható függvények A BIOS is biztosít függvényhívásokat, oprendszer függetlenül, de ezek nagyon alacsony szintűek Oprendszer lehetővé teheti több program párhuzamos futtatását (multitasking) – követnie és szabályoznia kell a futó feladatokat, azok cpu és ram felhasználását; elősegítheti a többprocesszoros rendszerek kihasználását

Alacsony szinten

Utasítások címzési módjai Közvetlen adatmegadás (immediate addressing mode): konstans érték szerepel az utasításban pl. mvi register,data (pl. mvi A,9) Regiszterekkel (register a.m.): egyik regiszterből a másikba pl. mov register1,register2 (mov ax,bx) (2->1) Közvetlen címzés (direct a.m.): konstans memóriacím szerepel utasításban pl. lda address (pl. lda 0xF000) Közvetett memóriacímzés (indirect a.m.): címet regiszter(ek)ben tároljuk (pointer) pl. mov register, M (pl. mov A,HL) (HL a pointer regiszterpár) Relatív címzés (relative a.m.) Egy báziscímhez (vagy program counterhez) képesti eltolást tartalmazza az utasítás (báziscímet is regiszterek tárolják)

Utasításkészlet példák Intel 8085A utasításkészlet 8 bites adatbusz, 16 bites címbusz Néhány MHz órajel Erre alapult később a 8086, arra meg a máig tartó x86 sorozat

8085 Utasítás fajták aritmetikai művelet: add, subtract, increment logikai művelet: and, or, xor, complement bitművelet: rotate adatmozgató utasítások: move, exchange vezérlésátadás: jump, call, return feltételes utasítások: jump on condition egyéb: in, out, push, pop

8085 címzési módok példa mov r1,r2 1 byte, 1 gépi ciklus, r2r1 mov r,M 1 byte, 2 gépi ciklus, (HL)r HL regiszterpár tartalmazza a memóriacímet mov M,r 1 byte, 2 gépi ciklus, r(HL) mvi r, data 2 byte (kód+adat), 2 gépi ciklus, datar mvi M,data 2 byte (kód+adat), 3 gépi ciklus, data(HL) lxi rp,data 3 byte (kód+2byte adat), 3 gépi ciklus, datarp (regiszterpár)

8085 címzési módok példa lda addr 3 byte (kód+2byte cím), 4 gépi ciklus, (addr)A akkumulátorba írja memóriacím tartalmát sta addr 3 byte, 4 gépi ciklus, A(addr) lhdl addr 3 byte, 5 gépi ciklus, (addr)HL addr című memóriaszó (2B) HL regiszterpárba shld addr 3 byte, 5 gépi ciklus, HL(addr) ldax rp 1 byte, 2 gépi ciklus, (rp)A BC vagy DE tartalmával címzett memóriarekeszt A-ba stax rp 1 byte, 2 gépi ciklus, A(rp) xchg 1 byte, 1 gépi ciklus, HL<=>DE megcseréli regiszterpárok tartalmát

Számábrázolás

Számrendszerek A számítógépek többsége binárisan tárolja és dolgozza fel az adatokat Felhasználói, programozói felületen többnyire decimális és hexadecimális ábrázolást használnak

Számrendszerek Decimális-bináris konverzió: Sorra osztom kettővel, maradékokat alulról felfelé kiolvasom (nb. legalsó számjegy mindig 1 !) Visszafele: kettő hatványaival beszorzom és összeadok

Számrendszerek Hexadecimális (16-os) rendszer: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F számjegyek Egy számjegy (digit) 4 bitre fordítható le, így pl. 8bites szám mindig két hexa számjegy: h 3A=b 0011 1010

Egész számábrázolás Előjel nélküli egész (unsigned integer (int)) Előjeles egész (signed integer) előjelbites kettes komplemens (two’s complement) eltolt (offset binary, excess-K)

Kettes komplemens invertáld és adj hozzá egyet nincs +0 és -0 kivonáshoz össze kell adni nehezebb az összehasonlítás (negatív számok nagyobbak a pozitívaknál) 8 biten: -128 .. +127 első bit 1: negatív, 0: pozitív vagy nulla

Eltolt egész ábrázolás Számhoz hozzáadunk 2^(n-1) azaz tartomány első fele negatív, felénél van a nulla, felső fele pozitív ua. mint kettes komplemens, csak első bit invertálva összehasonlítás könnyebb

Törtszámok ábrázolása Fixpontos (fixed point) Lebegőpontos (floating point) Hányados, hagyományos tört (fraction)

Fixpontos számábrázolás (fixed point) lényegében egész számként tároljuk (pl. ha nincs FPU) n bit: teljes hossz a törtszám értéke: m: a tárolt „egész” szám f darab kettedes számjegy (törtrész) átnézni!

Lebegőpontos számábrázolás Floating point s: előjel b: alap (2) c: értékes jegyek q: kitevő (2-es komplemens vagy eltolt)

IEEE745 (floating point) első értékes jegy mindig 1 -> nem kell eltárolni, így pl. 24b értékesből 23-at tárolunk, a maradékot felhasználjuk előjelnek speciális értékek: +0 , -0 , +inf , -inf , NaN, subnormal NaN: exp csupa 1, maradék nem 0 inf: exp csupa 1, maradék 0

IEEE745 (floating point) Single precision: 32b (24+8) kb.6..7 decimális jegy pontosság kitevő tárolása: hozzáadunk 127-et, így -126..+127-ig lehet (offset binary) max: (2−2−23) × 2127 ≈ 3.402823 × 1038 Double precision 64b (53+11) kb. 16 decimális jegy pontosság

Több bájtos számok tárolása szó (word): több bájton tárolt szám (adat) kétféle tárolási (ill. átviteli) mód: little endian LSB first, azaz legkisebb helyiértéket tároljuk legkisebb címen (ill. küldjük először) összeadásnál LSB-vel kezdünk, könnyebb a hardvert megvalósítani big endian MSB first, azaz legnagyobb helyiértéket tároljuk legkisebb címen

Több bájtos számok tárolása Little endian: Intel-AMD x86, x86-64 sorozat Big endian: Motorola 68000 leszármazottak AVR32 IBM System/360, z/Architecture Internet Protocol (IP, TCP, UDP) Bi-endian (beállítható): ARM 3-tól, PowerPC, Alpha, MIPS, Itanium stb. Előkerülhet a probléma akár egy mérőműszer-PC összekötésnél is.. image source: https://en.wikipedia.org/wiki/Endianness

Tömbök, sztringek Tömb (array): lényegében egy mátrix megvalósítása Programnyelvi és hardveres támogatása változatos Sztring (string): több karaktert tartalmazó szöveges változó, karakterlánc, karakterekből álló vektor (1D tömb)

Tömbök Hardveres támogatás: klasszikus (skalár) processzorokban a tömb elemeihez egyesével férünk hozzá; ezt a mutatók (pointerek) segítik Pointer hardveresen: van(nak) olyan regiszter(ek) CPU-ban, amit bizonyos gépi kódú utasítások fel tudnak használni indirekt címzésre (ld. pl. HL regiszterpár 8085-ben); a pointer RAM-ban is lehet vektor processzor: egy gépi kódú utasítás egy egész vektoron végrehajtja a műveletet (SIMD: single instruction, multiple data)

Tömbök tömb megvalósítása: egy pointer egy eltolással (offset) tehát pl. int *tomb (vagy int *tomb[n]) által definiált változó egy pointer, ami x memóriacímen található, és az az y mem. címet tartalmazza, ahol a tömb első eleme lakik; a tomb[i] kifejezésben az i lesz a kezdőcímhez képesti eltolás ha tomb[0] –t hívok meg, erre az első elemre hivatkozok; ha tomb[5] –öt hívok meg, akkor a kezdőcímhez hozzáadok 5-öt (y+5) és arra hivatkozok emiatt van több nyelvben (pl. C), hogy 0-val kezdődnek a tömb elemei, nem 1-gyel

Tömbök több dimenziós tömbök: ha a nyelv csak 1D tömböt (vektort) támogat: létrehozunk egy vektort, aminek elemei maguk is pointerek, mindegyik egy másik vektorra mutat, így 2D tömböt tudunk effektíve létrehozni tomb[i][j] típusú címzés (C-szerű nyelvek)

Egyéb

Párhuzamos feldolgozás Jelmagyarázat: „Parallel portion”: hány százaléka a kódnak párhuzamosítható Függ. tengely: hányszorosára gyorsítható fel a program futása ideális esetben

Speciális rendszerek OISC: one instruction set computer Transport trigger architecture: különböző regiszterekbe (ugráshoz PC-be) küld mov utasítással, mindegyik más műveletet végez -> MAXQ mikrokontroller Arithmetic: eg. SBNZ a,b,c,d c=a-b és ha c=0 ugorj d-re https://en.wikipedia.org/wiki/One_instruction_set_computer

Vektor processzorok