Hardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt



Hasonló dokumentumok
A Microsoft Visual Studio 2005 fejlesztőkörnyezet

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Számítógépes grafika

Országzászlók (2015. május 27., Sz14)

Bevezetés A SystemC célja A SystemC alapjai SystemC típusok Modulok Rendszerek Csatornák. Budapesti Műszaki és Gazdaságtudományi Egyetem

Rendszerszintű tervezés: SystemC I.

CodeBlocks installálási segédlet

Széchenyi István Egyetem

VII. Tesztkörnyezet felépítése

Visual Basic 2005 Express Edition A VISUAL STUDIO HASZNÁLATA NEM LEKTORÁLT VÁLTOZAT

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

Programozás I. 5. Előadás: Függvények

Géptermi zh-írás forgatókönyve

Programozás alapjai 1. (BMEVIEEA100)

Programozás I. gyakorlat

USBTiny-MKII programozó

Programozás C++ -ban 2007/4

Szoftveresen tárolt tanúsítványok telepítési útmutatója

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

Programozás II gyakorlat. 4. Öröklődés

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

15. Programok fordítása és végrehajtása

117. AA Megoldó Alfréd AA 117.

Osztály és objektum fogalma

Vizuális, eseményvezérelt programozás I.

4. Öröklődés. Programozás II

C++ programok fordítása

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Elemi alkalmazások fejlesztése III.

MPLAB leírás V1.1. Projektek kezelése. MPLAB leírás - dr. Kónya László 1

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

4. Gyakorlat: Csoportházirend beállítások

I. fejezet Hello Világ! Programozás tankönyv. II. Fejezet. Helló Világ! avagy a Miért?-ek elkezdődnek

3. Hőmérők elkészítése

Entity Framework alapú adatbáziselérés

SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel

DWL-G520 AirPlus Xtreme G 2,4GHz Vezeték nélküli PCI Adapter

Access adatbázis elérése OLE DB-n keresztül

libgdx alapok, első alkalmazás

Elemi alkalmazások fejlesztése I.

RPC Remote Procedure Call Távoli eljárás hívás

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

1.1 Szakdolgozat témája A Program célja A használt technológiák ismertetése A program megtervezése...

A TAOEKR pályázati rendszer tokennel történő használatához szükséges Mozilla Firefox beállítása, a Java frissítése és beállítása. Mozilla Firefox...

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás Bevezetés I.

Adatbázis-kezelés ODBC driverrel

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

IV. A SystemC alapelemei

Elemi alkalmazások fejlesztése III.

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

Bevezetés a mikrovezérlők programozásába: WS2812 RGB LED-ek vezérlése

Tanúsítványok használata StarOffice 8 alkalmazásból

Sapientia Egyetem, Matematika-Informatika Tanszék.

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

USB HID 1. Bevezetés. 2. A Hardver

Bevezetés a programozásba Előadás: Fordítási egység

Szoftver technológia. Build systems. Cserép Máté ELTE Informatikai Kar 2019.

Forráskód generálás formális modellek alapján

7. gyakorlat Tervlapok készítése, a terv elektronikus publikálása

Ximba Radio: Grafikus felület fejlesztése az XM Satellite Radio programhoz GTK+/Glade segítségével

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Információs Technológia

Az Ön kézikönyve HP SCANJET 7490C SCANNER

3D-s számítógépes geometria és alakzatrekonstrukció

Informatikai Navigátor Érdekességek programozóknak

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Webshop készítése ASP.NET 3.5 ben I.

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

Számítógép kártevők. Számítógép vírusok (szűkebb értelemben) Nem rezidens vírusok. Informatika alapjai-13 Számítógép kártevők 1/6

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Az Ön kézikönyve LEXMARK X2670

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

Dr. Pétery Kristóf: CorelDRAW 9 testre szabás

Származtatási mechanizmus a C++ nyelvben

Videókártya - CUDA kompatibilitás: CUDA weboldal: Példaterületek:

INFORMATIKAI ALAPISMERETEK

12. gyakorlat Enum; Tárolási osztályok Preprocesszor utasítások; Moduláris programozás

ISE makró (saját alkatrész) készítése

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Alap számológép alkalmazás

Plena VAS configuration

Programozás II. 2. Dr. Iványi Péter

1. AZ AUDITPRO RENDSZER ÁTTEKINTÉSE ALAPVETÕ TELEPÍTÉS AZ AUDITPRO TELEPÍTÉSE ÉS FELÜGYELETE HÁLÓZATOKON EREDMÉNYEK...

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Energiagazdálkodás. Dokumentum cikkszáma: Ez az útmutató a számítógép energiafelhasználását ismerteti április

Programozás 6. Dr. Iványi Péter

ARM mikrovezérlők programozása

A Code::Blocks fejlesztőkörnyezet

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Realtek HD Audio Manager Felhasználói útmutató a Vista operációs rendszerhez

NE1A sorozatú munkabiztonsági hálózati vezérlő: NE1A-SCPU01(-V1)/-SCPU02

CONDOR. Felhasználói Leírás

A Remote Support Platform 3.1 újdonságai

Szövegek C++ -ban, a string osztály

Mobil Informatikai Rendszerek

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

Átírás:

BME Hardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt Visual Studio, SystemC, SDL Tóth Gergely Endre 2013.03.18.

1 Bevezetés Ebben a dokumentumban leírom, hogy hogyan lehet Visual Studio segítségével SystemC nyelven fejleszteni. Ezután ismertetem, hogy hogyan hozzunk létre SDL grafikus könyvtár+systemc projektet. Az egyes lépéseket Windows8 alatt, Visual Studio 2012-vel mutatom be, ezen a platformon teszteltem. Ugyanakkor működni kell Window7 és/vagy Visual Studio 2010 segítségével is. Ha csak SystemC-t akarunk, akkor csak a 2. fejezetet olvassuk el. Ha SDL-t is szeretnénk, akkor csak a 3. fejezet lényeges. Az SDL projekt létrehozásának lépései az [5] alapján készültek. A SystemC projekt beállításait a [6] forrás adta meg. Jelen dokumentum egyesíti a két forrást, és felfedi hogyan lehet egy olyan projektet létrehozni, amelyben mind az SDL, mind a SystemC elérhető Visual Studio alatt. Vannak ugyanis olyan beállítások, amelyek ütköznek a két fenti dokumentum alapján (Runtime library: MTd!). 2 SystemC projekt létrehozása 2.1 SystemC lib fordítása 1. Töltsük le a legújabb SystemC-t a hivatalos honlapról [1]. Esetemben a 2.3.0 verzió a legfrissebb. 2. A letöltött fájl tartalmát érdemes a Visual Studio Project mappájába egy SystemC könyvtárba tenni 3. Az így kicsomagolt mappák között keressük ki a SystemC\msvc80\SystemC\SystemC.sln fájlt, és nyissuk meg a Visual Studióval a. Ha feljön a Conversion Wizard, akkor értelemszerűen menjünk végig rajta 4. Visual Studio 2012 esetén elvégzendő (2010 esetén nem kell): a. A Header fájlok között keressük ki a sc_cmnhdr.h fájlt, és módosítsuk a következőképpen a lent látható pár sort (ez egy ismert bug, az új SystemC-k valószínűleg mentesek lesznek tőle. A hivatalos forrás erről a bug-ról [2]): Eredeti Módosított // MSVC6.0 for() scope bug #if _MSC_VER < 1300 // MSVC6.0 for() scope bug #define for if( false ); else # define for if( false ); else for for #endif #endif #endif b. Enélkül a lib nem fog fordulni! 5. BUILD -> Build Solution vagy F7-tel lefordíthatjuk a projectet (pár warning lehet a deprecated funkciók miatt, de a projektnek fordulnia kell). Érdemes debug és release módban is fordítani 6. A kimenete a Debug és Release mappában lévő egy-egy SystemC.lib 1

2.2 SystemC projekt létrehozása Hozzunk létre egy új projektet: A megjelenő új ablakon az Application Settings résznél klikklejük be az Empty Project-et, majd Finish! Ezután a menüsorból Project -> Properties. Utána Configuration Properties -> C/C++ -> General ablakban az Additional Include Directories-hez adjuk hozzá a SystemC src mappáját: a legördülő listából válasszuk ki az Edit-et, és keressük ki a megfelelő mappát ( \Visual Studio 2012\Projects\SystemC\src\), majd OK. 2

Állítsuk át még a következőket: 3

Adjuk hozzá a \Visual Studio 2012\Projects\SystemC\msvc80\SystemC\Debug elérést a lenti kép alapján: 4

Ha akarunk release módot is, akkor bal felső sarokban tegyük át release-re, és végezzük el újra a fentieket. Ezek után OK-zuk le a Property Pages ablakot, és adjunk a projekthez egy main.cpp-t a következővel: #include "systemc.h" SC_MODULE (hello_world) { SC_CTOR (hello_world) { /*Empty*/ void say_hello() { cout << "Hello World.\n"; ; int sc_main(int argc, char* argv[]) { hello_world hello("hello"); hello.say_hello(); return(0); A projektet lefordítva, és futtatva az eredmény: Így kaptunk tehát egy SystemC-s Console Application projektet, ami fejlesztéshez, debugoláshoz kiváló. Érdemes a fejlesztést itt kezdeni. 3 SystemC és SDL projekt létrehozása 3.1 SystemC lib fordítása Ld. előző fejezet (SystemC lib fordítása). 5

3.2 SDL libek fordítása Töltsük le a hivatalos honlapról [3] a legújabb SDL forrás fájlokat (ne a lefordítottakat, mert azok MD módban vannak fordítva, SystemC-hez MtD kell, ezért fordítanunk kell egyet magunknak!). A kicsomagolt mappák között keressük ki a VisualC-t és nyissuk meg az SDL.sln-t. A megjelenő párbeszéd ablakokat értelemszerűen okézzuk le, hogy a Visual Studio importálni tudja a projektet. Mind az SDL és SDLmain projekt tulajdonágát változtassuk meg: Ezután jobb klikk az SDL projekten és Build. Ugyanezt tegyük meg az SDLmain-nal! A következő fájlok kellenek ezek után: a VisualC\Debug mappából a SDL.lib, az SDLmain\Debug mappából az SDLmain.lib és az SDL\debug mappából az SDL.dll (ha akarunk release-t, akkor fordítsunk azt is, értelemszerűen az a release mappában lesznek). Ezeket a fájlokat érdemes kitenni egy SDL\lib mappába (x64/x86 dolgokra figyeljünk! Alapból minden x86, ami megfelelő első közelítésben). Szükségünk lesz még továbbá az include mappára (a lib és dll fájlok belépési pontjait tartalmazzák), ezt is érdemes a fenti SDL mappába bemásolni. Tehát van egy SDL mappánk egy lib és include könyvtárral, benne a megfelelő fájlokkal. 3.3 Projekt létrehozása Hozzunk létre egy új projektet: 6

Ezután a menüsorból Project -> Properties. Utána Configuration Properties -> C/C++ -> General ablakban állítsuk be a SystemC és SDL útvonalakat: Továbbá: 7

8

9

Ha akarunk release módot is, akkor bal felső sarokban tegyük át release-re, és végezzük el újra a fentieket. 10

Ha megvagyunk, adjunk a projekthez egy cpp fájlt a következő tartalommal: #include "SDL.h" int main(int argc, char** argv){ SDL_Init(SDL_INIT_EVERYTHING); SDL_Quit(); return 0; A projektnél ahova ez a cpp fájl került másoljuk mellé az SDL.dll-t (ott van az SDL mappánk lib könyvtárában, ha úgy jártunk el, ahogy előzőleg írtam). Ezután fordítsuk a fájlt, és futassuk le. Nem szabad semmilyen hibaüzenetnek, exception-nak keletkeznie. Ha igen, akkor az SDL beállításai közül kihagytunk valamit. Ha eddig OK, akkor a következőt másoljuk a main.cpp-be: #include "SDL.h" #include "systemc.h" SC_MODULE (counter) { sc_in_clk clock; sc_in<bool> reset; sc_in<bool> enable; sc_out<sc_uint<4> > out; sc_uint<4> count; void work() { while(true) { wait(); if (reset.read() == 1) { count = 0; out.write(count); else if (enable.read() == 1) { count = count + 1; out.write(count); SC_CTOR(counter) { SC_THREAD(work); sensitive << clock.pos(); ; count = 0; int main(int argc, char** argv){ SDL_Init(SDL_INIT_EVERYTHING); SDL_Quit(); sc_set_time_resolution(1, SC_US); counter cnt1("cnt1"); sc_clock clock("clk", sc_time(2,sc_us), 0.5, sc_time(0,sc_us), 1 ); sc_signal<bool> res; 11

sc_signal<bool> en; sc_signal<sc_uint<4> > out; cnt1.clock(clock); cnt1.reset(res); cnt1.enable(en); cnt1.out(out); sc_trace_file *wf = sc_create_vcd_trace_file("counter"); sc_trace(wf, clock, "clock"); sc_trace(wf, res, "reset"); sc_trace(wf, en, "enable"); sc_trace(wf, out, "out"); res.write(true); en.write(false); sc_start(2, SC_US); res.write(false); en.write(true); sc_start(20, SC_US); sc_close_vcd_trace_file(wf); return 0; Ez már SystemC és SDL. Fordítás, és futás után nem lehet semmilyen hibaüzenet vagy exception. A kimenet egy counter.vcd, aminek a jelalakja: Ez a projekt használható, elérjük benne a SystemC-t és az SDL-t. Egy valamire viszont felhívnám a figyelmet: a main függvénynek így kell kinéznie a SystemC szintaktika ellenére: int main(int argc, char** argv){ return 0; Ez az SDL miatt kötelező. Tesztjeim alapján a SystemC-nek nem okoz gondot. A projektről a FILE -> Export Template funkcióval készíthetünk egy sablon projektet, így nem kell a fentieket új projekt esetén elvégezni. 12

3.4 Eredmény Egy általam írt SystemC-s 6502-es processzor, SDL grafikus felület és Czirkos Zoltán által írt kukacos játék eredménye: Egy SystemC-t és SDL-t használó forrás elérhető Czirkos Zoltán honlapjáról [4], ebbe a projektbe illesztve az eredmény: 13

4 Irodalomjegyzék [1] SystemC hivatalos forrás: http://www.accellera.org/downloads/standards/systemc [2] SystemC bug Visual Studio 2012 alatt: http://www.accellera.org/discussion_forums/systemcforum/archive/msg?list_name=systemc-forum&monthdir=201209&msg=msg00032.html [3] SDL grafikus könyvtár: http://www.libsdl.org [4] Czirkos Zoltán: SystemC és SDL segítségével egy kukacos játék: http://www.eet.bme.hu/~czirkos/icterv/syscvideo-0.3.zip [5] TwinklebearDev: Setting up SDL in Visual Studio: twinklebeardev.blogspot.hu/2012/07/setting-up-sdl-in-visual-studio.html [6] Mihai Fonoage: SystemC with Microsoft Visual Studio 2005 and 2008: http://www.ict.kth.se/courses/il2452/sept2009/tutorial-systemc-with-microsoft-visual- Studio.pdf 14