Kungl. Tekniska Högskolan NADA 2D1954, Programutvecklingsprojektet för D3 Period 3-4, 2003 Grupp A6, Uppdrag 30e för Virtutech Projekt Fake för Virtutech Projektpresentation Lars Dobos Marcus Johansson Fredrik Jönsson Christian Liljequist Andreas Nilsson Peder Sparell Jacob Tardell Revision: RCSfile: pres.tex,v Revision: 1.11 Date: 2003/05/15 15:37:57
2 Innehåll 1 Inledning 1 2 Deltagare 1 2.1 Ansvarsfördelning i gruppen..................... 1 3 Problembeskrivning 1 4 Genomförande 2 4.1 Datormiljö............................... 2 4.2 Metodik................................ 3 4.3 Kontakt med slutanvändare..................... 3 5 Funktioner 3 6 Användning 4 7 Referenser 4
1 1 Inledning Projektet Fake har utvecklat en drivrutin för filsystem för Virtutechs simulator Simics. Projektet är en del av kursen programutvecklingsprojektet (2D1954) för D3 våren 2003 med Lars Kjelldahl som kursledare. För att effektivt kunna designa, utveckla och testa nya hårdvaruplattformar och mjukvara till dessa behöver man kunna simulera designen i ett tidigt skede. Företaget Virtutech har utvecklat en sådan simulator som de kallar Simics. Den kan köras på flera plattformar och sedan simulera andra plattformar. Vårt bidrag är en drivrutin till Simics som gör det möjligt att nå värddatorns filsystem när man simulerar Windows 2000. Vi har nu utvecklat en körbar drivrutin som gör detta möjligt. 2 Deltagare I projektgruppen ingår Lars Dobos, Marcus Johansson, Fredrik Jönsson, Christian Liljequist, Andreas Nilsson, Peder Sparell, Jacob Tardell. Från uppdragsgivarens sida har Gustav Hållberg och Bengt Werner deltagit. Anna Stockhaus från Nada har varit tillgänglig som mentor. Vi vill passa på att tacka Anna, Bengt och Gustav för deras hjälp med projektet! 2.1 Ansvarsfördelning i gruppen Arbetet har fördelats enligt följande inom projektgruppen: Lars Dobos Programmering och koddokumentationen, Marcus Johansson Minnesanteckningar och programmering, Fredrik Jönsson Utvecklings- och driftmiljö samt programmering, Christian Liljequist Programmering, Andreas Nilsson Projektledning, design och kontakter med Virtutech samt programmering, Peder Sparell Programmering, Jacob Tardell Dokumentation, CVS, avtal och kontakter med kursledningen. Det är i huvudsak den indelning vi hade från början och den har fungerat under hela projektet. 3 Problembeskrivning För att effektivt kunna designa, utveckla och testa nya hårdvaruplattformar och mjukvara till dessa behöver man kunna simulera designen i ett tidigt skede, långt innan hårdvaran finns färdig. Med simuleringsteknik kan man korta ner utvecklingstiden och prova olika möjligheter vid det egna skrivbordet.
2 Det svenska företaget Virtutech har utvecklat en sådan simulator som de kallar Simics. Den kan köras på flera värdplattformar och sedan simulera andra plattformar. Den simulatorn har tidigare främst stött utveckling kring Suns plattformar eftersom man haft ett långtgående samarbete med dem. Simics stödjer även utveckling av andra plattformar och där har vi bidragit med en ny drivrutin till Simics som gör det möjligt att nå värddatorns filsystem från det simulerade operativsystemet när man simulerar Windows 2000. Sedan tidigare stödjer Simics anrop mot värdfilsystemet från Solaris och Linux utvecklade internt på Virtutech av Gustav Hållberg. Stöd för Windows saknades. Tidigare var man tvungen att montera en ISO-image för att kunna hämta in data. Någon möjlighet att skriva till värdfilssystemet från den simulerade miljön har inte funnits tidigare. Syftet med denna utökning har varit att ge möjlighet att anropa värdfilsystemet även från Windows. För att kunna uppnå detta behöver man en ny drivrutin för filsystemet i Windows 2000. 4 Genomförande 4.1 Datormiljö CVS användes för versionshantering och synkronisering av de olika projektmedlemmarnas aktiviteter. Såväl källkod som dokumentation och annat projektrelaterad förvarades i CVS, som låg på NADA:s datorer. Simics installerades på en dedikerad maskin, fake.nada.kth.se, som var tillräckligt snabb för att kunna simulera Windows utan att testfaserna av utvecklingen blev lidande med långa väntetider. Vi använde Solaris som operativsystem på maskinen. Åtkomst till maskinen gavs genom SSH. Utöver detta behövdes även en maskin som kunde sköta kompilering av själva drivrutinen. Detta sköttes av en Windows-maskin vilken vi fjärrstyrde genom SSH och rdesktop. Kompileringen automatiserades av GNU Make som kopierade filerna till maskinen, beordrade kompilering, samt hämtade tillbaka binärfil samt logg. Därefter byggdes en ISO-image av drivrutinen, som sedan kunde monteras i vår simulerade windows-miljö, för att därefter registreras och aktiveras i Windows. För koddokumentation användes Doxygen, som påminner i användning och funktionalitet om Javadoc, med den huvudsakliga skillnaden att även programspråket C hanteras. Doxygen kan utifrån programkoden och dess kommentarer dynamiskt bygga en webbaserad dokumentation, som ger en god överblick och är enkel att använda. Doxygen kan även generera dokumentation lämplig för utskrift, bland annat PDF. Make-skript användes också för att sköta publicering till projektplatsen på webben, generering av Doxygen-dokumentation av källkoden, samt andra aktiviteter som lämpade sig att skötas med skript. Projektplatsen på webben delades upp i en publik och en projektintern del. På den publika förvarades dokument relaterade till projektet. Den interna höll minnesanteckningar, deadlines och kontaktuppgifter.
3 4.2 Metodik Utvecklingsarbetet utfördes till stor del parvis. Andreas var oftast närvarande då han besatt störst insikt kring designfrågor och specifika detaljer. Ofta utvecklades först en grovhuggen implementation av en given programdel, som sedan successivt förfinades och integrerades i drivrutinen. Manuella tester utfördes efterhand för att utvärdera och felsöka specifika funktioner. Då en drivrutin inte har något naturligt grafiskt gränssnitt, handlade felsökningen ofta om att sätta brytpunkter samt skriva ut debugmeddelanden som gav information om exekveringsförloppet. Vår initiala ambition att följa vattenfallsmodellen för programmeringen har alltså i princip efterlevts, även om utvecklingsmetodiken delar vissa av de centrala koncepten inom Extreme Programming. Ett iterativt arbetssätt har inte varit lämpligt då kraven från uppdragsgivaren var mycket konkreta och inte undergick någon revision under projektets gång. Dokumentationen skrevs med utgångspunkt från de dokumentmallar som Karl Meinke visade på sin föreläsning. Inga revideringar av vare sig kravspecifikation eller designdokument har genomförts, vilket var väntat. 4.3 Kontakt med slutanvändare Gustav och Bengt på Virtutech har löpande informerats om arbetet via deras forum på Simics hemsida. Vi har även demonstrerat resultat för dem. Dock har vi valt att inte släppa koden innan vi har haft en färdig release. Vi har upplåtit kod och dokumentation till Virtutech enligt MIT:s licensvillkor. Dessa innebär att Virtutech är fria att använda kod och dokumentation hur de vill så länge de anger att vi har skrivit koden. 5 Funktioner Drivrutinen kan i dagsläget Registreras och monteras av en genom Simics simulerad Windows 2000- installation. Öppna filer från värdfilsystemet, på begäran av Windows. Läsa filer från värdfilsystemet, på begäran av Windows. Stänga filer som öppnats. Avmonteras på begäran av Windows. Detta möjliggör konkret att användare av Simics slipper gå omvägen att skapa ISO-filer med den data som vill läsas in i den simulerade Windows-miljön och montera dessa som CD-enheter i Windows. Nu existerar istället värdfilsystemet som en nätverksenhet i Windows. Funktionaliteten ovan uppfyller kraven satta i kravspecifikationen, undantaget möjligheten att lista innehållet i kataloger. Denna funktionalitet är påbörjad och i princip färdigställd, men är ännu ej fungerande. Drivrutinen är förberedd för att utökas med stöd för bland annat exekvering av filer, borttagning av filer samt skrivstöd för kataloger och filer.
4 6 Användning Vår filsystemsdrivrutin skall tillåta en användare av Simics att från det i Simics simulerade Windows, komma åt värdfilsystemet (det vill säga filsystemet i operativsystemet som Simics körs under). Detta skall ske genom att filsystemsdrivrutinen implementerar Simics värdfilsystemprotokoll samt kommunicerar med värdfilsystemobjektet i Simics. Sannolikt kommer Virtutech att integrera drivrutinen som någon sorts modul i Simics, vilket gör att installation av den till den simulerade Windowsinstallation sker enkelt på för Simics sedvanligt manér. För närvarande stödjer Simics anrop mot värdfilsystemet från Solaris och Linux. Tanken är att vår drivrutin skall ingå som modul i Simics. Montering av värdfilsystemet skall då ske genom att användaren ger ett kommando i Simics kommando-fönster, på liknande sätt som man i dagsläget monterar en cd-skiva i det simulerade Windows. Då skall användaren i den simulerade maskinen få tillgång till värdens filsystem genom en extra enhet (t.ex F:). 7 Referenser Fakes projektplats http://www.nada.kth.se/projects/proj03/fake/ Virtutech http://www.virtutech.com/ Simics http://www.simics.net/ Open Source License Index http://www.opensource.org/licenses/ MIT License http://www.opensource.org/licenses/mit-license.php Karl Meinkes dokumentationsmallar http://www.nada.kth.se/ karlm/pss05doctemplates.htm CVS http://www.cvshome.org/docs/manual/