Institutionen för data- och elektroteknik 2004-04-14 Att köra mjukvaran till signalprocessorn 1 Inledning Bland programvarorna till signalprocessorn är systembyggare, assemblator, länkare, PROM-Splitter och EPROM- laddare DOSbaserade medan simulatorn VisualDSP är Windowsbaserad. För att underlätta programkörningarna har ett Windowsskal byggts runt programvarorna. Skalet centrerar runt ett menyfönster enligt Figur 1. Menyfönstret innehåller knappar för att Figur 1 Skalprogrammets meny Sätta arbetskatalog (skapa/öppna projekt) Starta en texteditor som är snarlik Windows egen Anteckningar (Notepad) Köra systembyggaren Assemblera programmoduler Länka ihop assemblerade moduler till ett program Simulera den hoplänkade filen Generera underlag för EPROM för olika typer av externt minne Ladda programkod till EPROM-emulator CHALMERS LINDHOLMEN Sida 1 Institutionen för data- och elektroteknik Sven Knutsson Box 8873 402 72 Göteborg Besöksdress: Hörselgången 4 Telefon: 31-772 57 27 Fax: 31-772 57 31 E-mail: svenk@chl.chalmers.se Web: www.chl.chalmers.se/ svenk
Köra hela förloppet Då de olika programmodulerna finns beskrivna i kompendiera Signalprocessorn ADSP- 2105, mjukvaran, Signalprocessorn ADSP-2105, Simulatorn VisualDSP och i stencilen Att ladda program via EPROM-emulatorn EE512A så kommer vi här inte att gå in i detalj på de möjligheter som finns att styra de olika programmen utan beskriva funktionerna mer övergripande och behandla hur dessa är implementerade i Windowsskalet. 1.1 Viktig grundregel Då programmen är DOS-baserade så måste man se till att biblioteks- och filnamn håller sig till namnreglerna för DOS, dvs namnen får inte innehålla mer än 8+3 tecken och tecknen bör vara bara siffror, bokstäver och understrykningar. Namnen får inte innehålla mellanslag. Dessa regler gäller också för sökvägar, dvs för biblioteksnamn. 1.2 Gemensamt I alla underfönster till programskalet kan man genom att klicka i en ruta se den kommandorad som skickas till DOS-programmet. Man behöver normalt sett inte se kommandoraden men kan i vissa lägen vara en bra hjälp för att identifiera problem, till exempel felaktiga inmatningar. Vi kan också i alla underfönster använda funktionen Sök då vi vill hämta en fil. Då vi klickar på denna knapp så får vi upp en filhanterare där vi kan söka oss till önskad fil. I alla fönster gäller att man inte kan utföra önskad funktion, dvs köra önskat signalprocessorprogram, utan att ha gjort alla nödvändiga val. Då man anropar önskad DOS-funktion från aktuellt underfönster så kommer ett DOSfönster att öppnas. För att vi skall kunna få tillbaka information om hur funktionsanropet gick till en textruta i vår applikation så kan detta DOS-fönster inte stängas automatiskt utan det måste stängas via klick på fönstrets stängningskryss. De olika underfönstren är konfigurerade med lämpliga defaultinställningar vilket innebär att anger vi bara de filnamn som behövs så kommer vi att få ett färdigt resultat utan att bry oss om övriga optioner. Vi kan dock via dessa extra finesser få ut mer av programkörningen om vi så önskar. 2 Att sätta arbetskatalog Då programmen är DOS-baserade så är det viktigt att filer anges med korrekta sökvägar vid anropen för att resultatfilerna skall hamna på rätt ställe. Därför kan inte övriga program startas utan att arbetskatalog har satts, dvs att vi byter till önskad katalog. Man kan välja att öppna en redan befintlig katalog eller att skapa en ny katalog. Val av bibliotek kan ske via en filhanterare. Kom ihåg att även biblioteksnamn måste följa DOS-reglerna. 3 Att editera filer Programskalet innehåller en texteditor som likna Windows egen texteditor Anteckningar (Notepad), men här finns några förenklande tillägg, man kan till exempel få med radnummer. Editorn kan startas direkt från skalprogrammet eller också inifrån underprogrammet för sy- sida 2
stembyggaren och underprogrammet för assemblatorn. Då editorn startas från något av dessa underprogram så läses den fil som har valts i systembyggaren eller i assemblatorn automatiskt. in i editorn. Anger man en ny fil i någon av dessa underprogram så startas en tom texteditor med detta filnamn. Figur 2 Texteditor 4 Att köra systembyggaren Till systembyggaren har vi inte så många alternativ utan vi anger bara namnet på systembeskrivningsfilen, Figur 3. Vi kan välja att låta systembyggaren skilja på stora och små bokstäver i filen men detta är egentligen bara intressant då vi använder C som programmeringsspräk för att skriva våra program. Detta är inte aktuellt i våra laborationer. sida 3
Figur 3 Systembyggaren 5 Att köra assemblatorn I detta fönster, Figur 4, anger vi den fil som skall assembleras och har vi flera moduler (filer) som skall assembleras så måste vi köra assemblatorn en gång för varje fil som skall assembleras. Vi kan ange sökvägen till INCLUDE-filer. Det kan vara aktuellt då vi har byggt upp bibliotek av färdiga rutiner som vi inkluderar. Ligger eventuella INCLUDE-filer i vårt projektbibliotek så behöver vi inte ange någon sökväg. Vi kan välja att skapa en listfil vid assembleringen. Denna får då samma namn som den assemblerade filen men med ändelsen.lst. Vi kan välja att visa innehållet i INCLUDE-filer i listfilen. Gör vi inte detta så visas bara referensen till listfilen och inte dess innehåll. Om vi väljer att expandera makron i listfilen så visas innehållet i makron och inte bara makroanropet. Här kan vi för både INCLUDE-filer och makron via rutan DJUP ange hur många steg ner vi skall gå om INCLUDE-filer eller makron är nestlade, dvs om en INCLUDE-fil anropar en annan INCLUDE-fil osv och motsvarande för makron. Även här kan vi välja att skilja på stora och små bokstäver men det är som sagt bara relevant då vi programmerar i C. Vi kan välja att ge utfilerna ett annat namn än vad infilen har men det rör oftast bara till det och det är rekommendabelt att behålla samma filnamn som infilen har. Det finns några multifunktionsinstruktioner som är semantiskt felaktiga men ändå fungerar (se beskrivningen av assemblatorn i Signalprocessorn ADSP-2105, mjukvaran). Vi kan välja att undertrycka felmeddelanden i dessa fall. sida 4
Figur 4 Assemblator 6 Att köra länkaren I detta fönster, Figur 5, så kan vi få upp en filhanterare där vi kan markera alla filer som skall länkas ihop. Vi kan också ta bort och lägga till filer i denna lista. Flera filer markeras på vanligt Windowssätt med Ctrl- och Shift-tangenter. Då länkaren använder flera filer med samma namn men med olika ändelser från assembleringen så visas filnamnen utan ändelse. I den underliggande fildialogen visas kodfilen (.CDE) även om flera andra filer med samma namn ingår i länkningen. Vi kan välja att i stället använda en fil som innehåller en lista över de filer som skall länkas. Denna fil är då en textfil med ett filnamn per rad. Då länkaren måste veta vilken hårdvara som finns att tillgå så behöver den kunna läsa systemets arkitekturfil. Vi måste vi ange namnet på denna fil, dvs namnet på utfilen från Systembyggaren. Vi kan ange sökvägen till eventuella biblioteksrutiner som används vid länkningen. Vi måste ge ett namn till den hoplänkade resultatfilen. Genom att välja att skapa en symbolfil så gör vi att simulatorn kan använda symboliska namn på variabler och liknande. Tyvärr fungerar denna funktion inte så bra i vår version av simulatorn. Vi kan välja att kopiera in biblioteksrutiner till alla bootsidor där de kommer att användas. Vi kan lägga ett antal biblioteksrutiner i samma fil och då måste vi ange namnet på denna fil. sida 5
Om vi skapar en MAP-fil så kommer vi att få en fil som visar en minneskarta där vi kan se var i minnet länkaren har placerat olika moduler och variabler. Filen får samma namn som länkarens hoplänkade resultatfil men med ändelsen.map. Via valet testkörning kan vi göra en testlänkning utan att generera någon resultatfil. Vi kollar alltså bara att allt länkar som det ska. Figur 5 Länkaren 7 Att simulera program Klick på simulatorknappen kommer att starta simulatorn VisualDSP och denna finns beskriven i kompendiet Signalprocessorn ADSP-2105, simulatorn VisualDSP så vi går inte in på denna här. sida 6
8 Att köra PROM-Splittern PROM Splittern, Figur 6, skapar programmeringsunderlag för externt programminne (tre filer), externt dataminne (två filer med innehåll) och bootminne (en fil med innehåll). I alla fall genereras tre utfiler men i de två senare fallen är bara två respektive en fil relevant. Vi måste köra PROM Splittern en gång för varje typ av minne. Vi kan ange namnet på resultatfilerna och anger vi inte olika namn för olika minnestyper så kommer tidigare filer att skrivas över. Något som är värt att tänka på. I vårt fall skapar vi dock bara underlag för bootminne så det är inget problem. Vi kan välja att skapa filerna på ett antal olika filformat, alla olika val är dock inte möjliga för alla olika minnestyper. Det viktiga är att se till att använda samma filformat som vi sedan väljer Figur 6 PROM-Splittern att använda för EPROMladdaren. Vi kan välja att skapa bootsidor som är kortare än den defaulta längden 2 Kb och kan då även ange startadress för dessa sidor. I normalfallet bör man behålla den defaulta bootsideorganisationen. Vi kan välja att komplettera programmet med en rutin som kommer att initiera alla RAMminnen från det interna programminnet vid bootning. sida 7
Figur 7 EPROM-laddaren 9 Att ladda program till EPROMemulatorn Här, Figur 7, anger vi den fil som skall laddas, dvs.bnmfilen som skapades då vi körde PROM Splittern för bootminne. Nedladdning till EPROM-emulatorn sker via PC-datorns parallellport och denna kan på vissa datorer vara allokerad till en annan adress än den vanliga (hex 378). Vi kan därför ange parallellportens adress. Vi kan ange storleken på vårt EPROM och om bränningen inte skall starta på adress noll (0) utan vid någon annan adress (Offset). Vi anger laddfilens filformat och skall då välja samma format som vi valde för PROM Splittern. Om laddfilen är kortare än minnesstorleken så kan vi välja att fylla resten av minnet med ett värde. Vi anger minnets ordlängd och vi anger antalet EPROMemulatorer som vi har hoplänkade. I normalfallet är defaultvärdena lämpliga. Nedladdningen saknar verifiering och vi får ingen bekräftelse på att nedladdningen har gått bra. Den text som visas som resultat säger bara att programmet har sänts över, den säger inget om ifall mottagningen var lyckad. Vi ser dessutom förhoppningsvis att en lysdiod blinkar till på emulatorn. Denna diod visar dock bara att det finns kontakt mellan PC-dator och emulator och säger inte heller något om ifall nedladdningen har lyckats. 10 Att köra hela programflödet Då vi en gång har kört igenom programflödet så att vi har angivit filnamn och andra val på alla nödvändiga ställen så kan vi via ett enda knapptryck köra igenom hela föroppet en gång till med samma inställningar. Detta utan att gå in i de olika underprogrammen. Detta kan vara sida 8
praktiskt då vi bara gör någon enstaka ändring i någon fil medan alla andra val skall vara likadana som tidigare. sida 9