Részletes Hardver- és Szoftvertervezés

Hasonló dokumentumok
BEÁGYAZOTT RENDSZEREK TERVEZÉSE Részletes Hardver- és Szoftvertervezés

IT TERMÉKEK TANÚSÍTÁSA

BEÁGYAZOTT RENDSZEREK TERVEZÉSE UDP csomag küldése és fogadása beágyazott rendszerrel példa

Mikrorendszerek tervezése

FPGA áramkörök alkalmazásainak vizsgálata

Mikrorendszerek tervezése

Nagy Gergely április 4.

Kommunikáció és csatlakoztathatóság

Programmable Chip. System on a Chip. Lazányi János. Tartalom. A hagyományos technológia SoC / PSoC SoPC Fejlesztés menete Mi van az FPGA-ban?

LIBRA PRO. On-line UPS kva három / három fázis

Yottacontrol I/O modulok beállítási segédlet

XII. PÁRHUZAMOS ÉS A SOROS ADATÁTVITEL

5.1. fejezet - Általános 32 bites mikrovezérlő/processzor alkalmazástechnikája A Freescale

[SZÁMÍTÓGÉP-HÁLÓZATOK]

Szárazföldi autonóm mobil robotok vezérlőrendszerének kialakítási lehetőségei. Kucsera Péter ZMNE Doktorandusz

A Netburner fejlesztőeszköz alkalmazástechnikája

Digitális technika VIMIAA hét

Számítógépek felépítése

Számítógépek felépítése, alapfogalmak

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Digitális technika VIMIAA hét

SIRIUS SOROZAT. On-line UPS kva egy/egy fázisú és három/egy fázisú kva és kva három/három fázisú

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

Dr. Illés Zoltán

UNIX / Linux rendszeradminisztráció

Rendszerarchitektúrák labor Xilinx EDK

INFORMATIKA ZÁRÓSZIGORLAT TEMATIKA

Számítógép Architektúrák

A DNS64 és NAT64 IPv6 áttérési technikák egyes implementációinak teljesítőképesség- és stabilitás-vizsgálata. Répás Sándor

[SZÁMÍTÓGÉP-HÁLÓZATOK]

Az Energia Biztonsága. Sirius series. UPS kva egy / egy és három / egy fázis kva és kva három / három fázis.

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Könnyedén. és természetesen OPTEAMUS

6.2. TMS320C64x és TMS320C67xx DSP használata

Programozási segédlet DS89C450 Fejlesztőpanelhez

TARTALOMJEGYZÉK. 1. BEVEZETÉS A logikai hálózatok csoportosítása Logikai rendszerek... 6

A számítógép fő részei

Digitális rendszerek. Mikroarchitektúra szintje

DSP architektúrák dspic30f család memória kezelése

A TMS320C50 és TMS320C24x assembly programozására példák

ZP 120LCD UPS. Minőségi Energiaforrás. on-line IPARI ALKALMAZÁSOK ELECTRO-MEDICAL BERENDEZÉSEK BIZTONSÁGI BERENDEZÉSEK

ELŐADÁS SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA

Robotot vezérlő szoftverek fejlesztése Developing robot controller softwares

Beágyazott rendszerek fejlesztése laboratórium DSP fejlesztési technológiák

IoT alapú mezőgazdasági adatgyűjtő prototípus fejlesztési tapasztalatok

Új kompakt X20 vezérlő integrált I/O pontokkal

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

IDAXA-PiroSTOP. PIRINT PiroFlex Interfész. Terméklap

Multimédia hardver szabványok

Processzor (CPU - Central Processing Unit)

Programozott soros szinkron adatátvitel

Digitális rendszerek. Utasításarchitektúra szintje

Számítógép felépítése

Küls eszközök. Dokumentum cikkszáma: Ez az útmutató a külön beszerezhető külső eszközök használatát ismerteti

Véges állapotú gépek (FSM) tervezése

Külső eszközök. Felhasználói útmutató

11. Haladó ismeretek: személyi számítógépek

A genetikus algoritmus, mint a részletes modell többszempontú és többérdekű "optimálásának" általános és robosztus módszere

Perifériák hozzáadása a rendszerhez

Department of Software Engineering

Samsung Xpress SL-M2070W többfunkciós lézernyomtató

Virtualizáció. egy hardveren több virtuális rendszer működik egyszerre, virtuális gépekben futó önálló vendég (guest) operációs rendszerek formájában

Jelfeldolgozás a közlekedésben

TANÚSÍTVÁNY KARBANTARTÁS Jegyzıkönyv

SZÁMÍTÓGÉPES ALAPISMERETEK

Megnevezés Verzió Méret (byte) SHA-1 lenyomat

1. Generáció( ):

Bepillantás a gépházba

Számítógép Architektúrák

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

A mikroprocesszor felépítése és működése

ARM Cortex magú mikrovezérlők

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Digitális technika (VIMIAA01) Laboratórium 9

SEGÉDLET. A TTMER102 - FPGA-alapú hálózati eszközfejlesztés című méréshez

SZÁMÍTÓGÉPES ARCHITEKTÚRÁK

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Digitális technika (VIMIAA01) Laboratórium 9

Utolsó módosítás:

Villamos jelek mintavételezése, feldolgozása. Mérésadatgyűjtés, jelfeldolgozás 9. előadás

Autóipari beágyazott rendszerek CAN hardver

Aritmetikai utasítások I.

QEMU beüzemelése és részletes ismertető

Programozó- készülék Kezelőkozol RT óra (pl. PC) Digitális bemenetek ROM memória Digitális kimenetek RAM memória Analóg bemenet Analóg kimenet

Rubin SPIRIT TEST. Rubin firmware-ek és hardverek tesztelése esettanulmány V1.0. Készítette: Hajnali Krisztián Jóváhagyta: Varga József

Küls eszközök. Dokumentum cikkszáma: Ez az útmutató a külön beszerezhető külső eszközök használatát ismerteti

VIRTUALIZÁCIÓ KÉSZÍTETTE: NAGY ZOLTÁN MÁRK EHA: NAZKABF.SZE I. ÉVES PROGRAMTERVEZŐ-INFORMATIKUS, BSC

SZENZORMODUL ILLESZTÉSE LEGO NXT PLATFORMHOZ. Készítette: Horváth András MSc Önálló laboratórium 2 Konzulens: Orosz György

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Beágyazott rendszerek tervezése Dr. Odry Péter, Ferenc

SzA19. Az elágazások vizsgálata

Számítógép Architektúrák

A Microsoft terminálszolgáltatás ügyfél oldali hardverigényének meghatározása

Laboratóriumi műszerek megvalósítása ARM alapú mikrovezérlővel és Linux-szal

Intelligens biztonsági megoldások. Távfelügyelet

1. Digitális írástudás: a kőtáblától a számítógépig 2. Szedjük szét a számítógépet 1. örök 3. Szedjük szét a számítógépet 2.

Az interrupt Benesóczky Zoltán 2004

Átírás:

9.3.1. Részletes Hardver- és Szoftvertervezés A szoftver- és hardvertervezés megtanítása bonyolult és hosszadalmas folyamat, de ez nem is szerepel eme jegyzet céljai között. Ennek ellenére, mivel a beágyazott ##en.: embedded## rendszerek szoftver- és hardvertervezésének egyedi mozzanatai vannak, ezek részleteit ebben a jegyzetben kell megtárgyalni. Létezik olyan, jól leírt, működő technika, amely segítségével a PC-re C, C++ vagy Java nyelveken megírt kód futtatható a beágyazott eszközön. Ez nagy segítség a beágyazott rendszerek fejlesztésében, hiszen a PC alapú fejlesztés már bejáródott technikáit és eszközeit lehet felhasználni. Ezért ezeknek az igen fontos témaköröknek: a fejlesztési környezeteknek és a speciális szoftveres technikáknak; a bemutatására, a jegyzetben külön fejezetek lettek szentelve. A szoftverfejlesztés mellett a hardvertervezés is szükséges a beágyazott rendszerek esetében. Mivel a tárgyat vegyes előtudást megszerző diákok hallgatják, gondot jelentett megállapítani milyen részletes legyen a hardvertervezési technika ismertetése. Nagyon sok forrásanyag van, amire hivatkozni lehet, ezek közül sokkal már megismerkedtek a villamosmérnök diákok a mikroprocesszorok és digitális tervezési kurzuson. Viszont a mérnök-informatikus diákok számára bizonyos részleteket meg kell világítani, ahhoz, hogy átláthassák a beágyazott rendszerek tervezésével és kimenetével kapcsolatos témakört. Hardver/Szoftver Integrálás A beágyazott rendszer a fejlesztés során előbb-utóbb eljut abba a fázisban, amikor a hardvert és a szoftvert integrálni kell. Ez gyakran igen bonyolult folyamat, ami nemritkán speciális eszközöket és módszereket igényel. A beágyazott szoftver- és hardver integrálásának a folyamata jól felkészült szakemberek munkáját igényli, amelyek gyakorlottak hibakeresési és felderítési metódusok alkalmazásában. A felderítés egy találó kifejezés, ugyanis a fejlesztőcsapatok ilyenkor szembesülnek azzal, hogy valóban megértették-e a közösen megírt dokumentumokat, amelyek a hardver és a szoftver együttműködését írja le. Együtt kell felderíteniük a félreértéseket és elhárítani a hibákat. Sajnos mindkét oldalon előfordul a fejlesztés közbeni egyszerűsítési hajlam, ami során csak egy kicsit térnek el a leírt dokumentumokhoz, ami persze nagy gondokat okozhat az integrálás során. Az ilyen hibák elhárítása ha egyáltalán lehetséges szoftverrészek újraírásával vagy a hardver javítgatásával jár. Minden esetben, időt és pénz veszt a csapat, a hanyagul értelmezett, vagy tiszteletben nem tartott tervezési dokumentáció miatt. A fejlesztés elején elkészített fejlesztési dokumentációt indokolt esetben fejlesztés közben is meg lehet változtatni, de erről minden érintett félnek (szoftveres, hardveres, integráló, csapatfőnök stb.) tudnia kell. Ha nem így tesznek, akkor az integrálás eleve lehetetlenné válik. A hardver és szoftver integrálása során klasszikus hibára való alkalom az endian félreértés. Ez azért is érdekes hibatípus, mert hatására az integrált rendszer működésképtelen lesz, mindannak ellenére, hogy a szoftver és a hardver is külön-külön, hibátlanul működik. Az endian félreértés bővebb ismertetése a következőekben történik meg. Az endian félreértés Az egyik gyakori félreértés a hardver és szoftver integrálása során az endian félreértés. A probléma elnevezése Jonathan Swift: Guliver utazásai c. művéből ered. A probléma lényege az, hogy több byte-os adatokat a memóriában, a különböző processzoros rendszerek más-más

módon tárolják. A probléma a több byte-os egész-, a lebegőpontos- és a fixpontos számokat is érintheti, valamint a soros átvitelű (RS232, USB, Ethernet) adatok esetén is előfordulhat. Az endianizmus A problémának hardverre visszavezethető forrása van. Az egész számokkal műveleteket végző processzorok kitüntetett regisztere(i) pl. akumulátor, szorzatregiszter stb. - a gyakorlatban kétszer, négyszer szélesebbek, mint a rendelkező memória bitszélessége. Ezért amennyiben egy belső regiszter tartalmát a csatlakoztatott memóriában kell tárolni, ezt csak a regisztertartalom több részadatra való bontásával lehet megtenni. A processzorok a memóriát az alacsonyabb címektől kezdődően a magasabb címek felé szokták írni (és olvasni), kivéve a vermet ##en.:stack## ahol ez pont fordított irányban történik. A processzor bitszámától függően az írást nem lehet akármelyik címtől kezdeni, így előfordul, hogy csak páros, vagy csak néggyel osztható címtől lehet adatot kiírni. Belátható, hogy mindez a gyakorlatban igen változatos kiírási képét eredményez. A lebegőpontos számok ábrázolása szabványosítva van (de a nagy processzor gyártók bizony sokszor ettől is eltérnek), de ezen a téren is előfordulhat az endian szindróma. A gyakorlatban a little- és big-endian ábrázolással lehet találkozni, habár a kettőnél több byte-ot tartalmazó adatok esetében elképzelhető mixed-endian és middle-endian alak is. Itt kell elmondani, - amire a liliputi tojásfeltörés esetében Swift is rámutatott - hogy nem létezik helyes és helytelen ábrázolás. Mindegyik helyes. Egy adott rendszer a saját adatait minden esetben ugyanazon az ábrázolással értelmezi (írja és olvassa), vagyis sohasem jut az endian probléma miatt hibás adathoz. A gond akkor jelentkezhet, ha több rendszernek kell együttműködnie. A litle-endian ábrázolás: az alacsonyabb helyértékű adatrész az alacsonyabb memóricímre kerül, míg a magasabb helyértékű adatrész a magasabb memóriacímre (1. ábra). Vagyis a tárolás az alacsonyabb helyértékű oldalon kezdődik. A big-endian ábrázolás: a magasabb helyértékű adatrész az alacsonyabb memóriacímre kerül, míg az alacsonyabb helyértékű adatrész kerül a magasabb memóriacímre (2.ábra). Vagyis a tárolás a magasabb helyértékű oldalon kezdődik. 1. példa: Amennyiben egy belső 32bites regiszter a 0x0A0B0C0D értéket tartalmazza, akkor a négy részre széttört adat tárolása, a 8bit széles memóriában a little-endian és big-endian alakban a következő módon fog megtörténni:

1. ábra little-endian tárolás 2. ábra big-endian tárolás Az endianizmus és az architektúrák A processzorok tervezői és gyártói, valamint az operációs rendszerek fejlesztői, szabályozás híján a két uralkodó endian ábrázolás közül szabadon választhatnak. Ebből természetesen sok probléma adódhat, pl. az ARM processzorok a lebegőpontos számok egyes típusait az egyik, míg más típusait a másik módon tárolják. Sőt a családon belüli váltás is előfordul, pl. a 3. verzió előtti ARM processzorok az egész számokat little-endian alakban tárolták, az újabb verziók pedig bigendian alakban. Ismertetésül következzen pár ismert operációs rendszer architektúra pár: little-endian: DragonFlyBSD x86, x86-64 FreeBSD Linux x86, x86-64, MIPS, ARM, Itanium x86, x86-64, MIPSEL, Alpha, Itanium, S+core, MN103, CRIS, Blackfin, MicroblazeEL, ARM, M32REL, TILE, SH, XtensaEL, UniCore32 Mac OS X x86, x86-64 ios ARM NetBSD x86, x86-64, Itanium, stb. OpenBSD x86, x86-64, Alpha, VAX, Loongson (MIPSEL) OpenVMS VAX, Alpha, Itanium Solaris x86, x86-64, PowerPC Tru64 UNIX Alpha ESX x86, x86-64 Windows x86, x86-64, Alpha, PowerPC, MIPS, Itanium big-endian: AIX AmigaOS POWER PowerPC, 680x0

FreeBSD HP-UX IRIX Linux Mac OS Mac OS X NetBSD MIPS, ARM, PowerPC, SPARC Itanium, PA-RISC MIPS MIPS, SPARC, PA-RISC, POWER, PowerPC, 680x0, ESA/390, z/architecture, H8, FR-V, AVR32, Microblaze, ARMEB, M32R, SHEB, Xtensa, ubicom32 PowerPC, 680x0 PowerPC PowerPC, SPARC, stb. OpenBSD PowerPC, SPARC, PA-RISC, SGI (MIPSEB), Motorola 68k és 88k, Landisk (SuperH-4) MVS és DOS/VSE z/vse és z/os Solaris ESA/390 z/architecture SPARC Az endianizmus és az adatátvitel A soros adatátvitel esetén szintén előfordulhat endian félreértés, aminek többszörös oka is lehet: az egyes adategységeken belül az átvitel bitsorrendje, vagyis először az LSB, vagy MSB kerül átvitelre? a több adategységből kialakuló adat leolvasási sorrendje, a már ismertetett endian eset. Az egyes szabványos soros átviteli protokollok között található little-endian, big-endian is. Viszont fellelhetőek olyan CPU, UART és DMA vezérlők amelyek transzparensek, vagyis konfigurálhatóak és mindkettőt támogatják, sőt egyes alaplapokon a RAM és rendszermemória endianizmusa is konfigurálható. Ismertetésül következzen pár szabványos protokoll és hardverelem endianizmusa: USB bit szinten little-endian RS-232 UART szinten little-endian RS-422 UART szinten little-endian RS-485 UART szinten little-endian DMX512 little-endian MIDI little-endian CANopen byte szinten little-endian Ethernet Powerlink byte szinten little-endian I 2 C big-endian I 2 S big-endian SMBus big-endian IP - Internet Protocol byte szinten big-endian

UART vezérlő bit szinten programozható DMA vezérlő byte szinten programozható soros/párhuzamos átalakító bit szinten programozható 8/16 bit hardveres FIFO byte szinten programozható Ajánlott irodalom: http://en.wikipedia.org/wiki/endianness#endianness_and_hardware http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/ 2. példa: Az FPGA-ban egy saját soros port lett tervezve. A port hardveresen úgy lett tervezve, hogy 32 bites adatbuszon keresztül lehet írni és olvasni. A port memóriába leképzett címe 0x400000. A port alsó 16 bitje az adat, a felső 16 bitje pedig az állapot értéket tárolja. Amennyiben a szoftver írása során a tervező a port eléréséhez byte elérést használ, könnyen megtörténhet, hogy endian félreértés miatt hibás lesz a hardver és szoftver együttműködése. Vagyis a gyakorlatban összekeverednek az adat- és állapotrészbe szánt adatok. 3. példa: A 8. fejezetben ismertetett adatgyüjtő műszer esetében a 16 darab, párhuzamos I 2 S adatfolyam és a DMA egységek közé szükség volt két hardveres FIFO elhelyezésére. Az adatfolyamok szétválasztását, a FIFO-k konfigurálását és vezérlését, valamint a processzor DMA ciklusának indítását egy CPLD egységnek kellett elvégeznie. A CPLD hardvert és a mikroprocesszor szoftverét meg kellett tervezni, majd az elkészült elemeket össze kellet integrálni. Mindezek előtt egyeztetni kellett az adatok ábrázolási alakjában, hiszen a hardver végzi a 16 darab I 2 S adatfolyam két, egyenként 8 folyamra való bontását, amit a hardveres FIFOk little-endian sorrendben két 16 bites számmá alakítottak. A processzor perifériális terében megjelenő FIFO kimeneteket, megfelelő bitsorrendben kell DMA-val kiolvasni, majd a processzor RAM-jában tárolni, ezeket a feladatokat viszont a szoftver felügyeli. Azaz egy részletes dokumentációt kell készíteni. Az említett műszer esetében ez a dokumentum alapos átgondolás után elkészült. Pár részlet a következő három ábrán látható. A 3. ábrán a tervezés alatt keletkezett blokk-diagramm látható, a kívánt byte sorrend megjelöléssel. 3. ábra az adatok hardver terve

A 4. ábrán a tervezés alatt keletkezett ábra látható, a CPLD hardveres bekötésével. 4. ábra a CPLD és a vezérlőjelek Az 5. ábrán látható a végleges panel, amelyen be van jelölve a két hardveres FIFO és a CPLD. 5. ábra a két FIFO és a CPLD elhelyezése a panelen A szoftverfejlesztés mindeközben szintén követte a lefektetett terveket. Mikor mind a két rész elkészült a hardver és a szoftver integrálása könnyedén megtörténhetett.