ATA / ATAPI gränssnitt för Game Boy Advance - MAJ 2003
|
Teknologie kandidatexamen med huvudämnet datorsystemteknik och högskoleingenjörsexamen i datorsystemteknik
|
Important:
We'd like to point out once more, that the interface has been build in such a way, that you have to use a GBA-cartridge to make it work. This has been done due to the reason that Nintendo would probably dislike if we'd disable the usage of cartridges all together. Our intention was never to do anything that Nintendo might dislike, and we would agree upon anything they might want to say about our product.
|
Michal Lysek - Lysekoid - mikael_ing@hotmail.com
|
Hej! Vi heter Michal Lysek och Tobias Persson, och vi är två studenter från Högskolan i Halmstad. Som vårt kandidatexamens- projekt har vi utvecklat ett ATA/ATAPI-gränssnitt för Nintendos Game Boy Advance (GBA) konsol.
Detta gränssnitt möjliggör ihopkoppling av en GBA med en enhet som använder sig av ATA/ATAPI- (IDE) protokollet, tex. en hårddisk eller CDROM. Detta utökar GBAns maximala lagrings- kapacitet som normalt är 32MB, och möjliggör användning av större program och spel på GBAn. Man skulle t.o.m. kunna se på film i en GBA.
|
Gränssnittet är ihopkopplat med en GBA via dess kassettport. Interfacet har även en utgång till en annan spelkassett, samt till en ATA/ATAPI-protokolls användande enhet.
|
Gränssnittet (som också kallas GBA-CD) innehåller en 32-bitars RISC mikroprocessor (AT91R40807) från Atmel av familjen ARM7TDMI, med ett externt 8-bitars och ett 16-bitars flash-minne, 2MB sekundärt SRAM-minne och 2-32MB primärt SRAM-minne. Gränssnittet innehåller tre lediga platser för tre olika typer av SRAM-minne (ett 32K, ett 512K och ett 2048K) vilket gör kortet mer flexibelt då minnena skall väljas. Gränssnittet har även plats för tre olika flash-minnen, ett 8-bitars på 32Kbit och ett 16-bitars på 16Mbit eller ett 16-bitars på 128Mbit. Detta möjliggör att två olika koduppsättningar kan lagras och skiftas mellan via en strömväljare. Det 8-bitars flash-minnet är endast åtkomligt om man byter ut den nuvarande mikroprocessorn mot ARM AT91R40008 istället.
Storleken på den färdiga produkten skulle inte vara större än dagens bärbara CD-spelare. Bilden visar endast våran prototyp och den är givetvis mycket större än den skulle vara som färdig produkt.
|
Storleken på den primära SRAM-minnet kan väljas mellan 2-30MB beroende på hur stor del utav GBAns 32MB adressrymd man vill reservera för spelkassetten. Detta innebär att minimal storlek som kan reserveras till spelkassetten är 2MB och tvingar en att vid användning av gränssnittet starta upp sitt program från en spelkassett. Detta är byggt hårdvarumässigt på detta vis och därav tvingar gränssnittet alltid användning av en spelkassett. Tanken var att gränssnittet endast skall vara en utökning till spelkassetter, och inte ersätta dem.
Logik på gränssnittet ser till att vid låga adresser adressera spelkassetten, och vid höga adresser adressera gränssnittets primära SRAM-minne. Det är även viktigt att komma ihåg att GBAn inte har någon aning om att ett gränssnitt finns inkopplat mellan den och spelkassetten.
Mikroprocessorns huvudsakliga funktionalitet är att läsa instruktioner från det primära SRAM-minnet, som lämnades där av GBAn, och kopiera den data som behövs från tex. en CD-ROM till detta SRAM-minne för att GBAn sedan skall kunna komma åt det. Det primära SRAM-minnet kan kommas åt både av gränssnittets mikroprocessor och GBAn, dock inte samtidigt och GBAn har alltid företräde.
Mikroprocessorn har även åtkomst till ett sekundärt SRAM-minne som den kan använda som ett mellanlagringsminne då GBAn är upptaget med att läsa från den primära SRAM-minnet. Denna funktionalitet snabbar upp gränssnittet eftersom mikroprocessorn nu inte behöver sitta och vänta utan att göra något medan det primära SRAM-minnet används av GBAn.
Mikroprocessorn har fyra Chip Select signaler som den använder på följande sätt:
- NCS0 används av mikroprocessorn för att läsa från gränssnittets flash-minne.
- NCS1 används av mikroprocessorn för att läsa från gränssnittets primära SRAM-minne.
- NCS2 används av mikroprocessorn för att läsa från en ATA/ATAPI enhet.
- NCS3 används av mikroprocessorn för att läsa från gränssnittets sekundära SRAM-minne eller för att programmera egna spelkassetter via en extra kassettport som finns på gränssnittet.
Gränssnittet har testats på många sätt och det fungerar som hoppats på. Dess ström får den från två stycken standard R6/AA batterier.
Game Boy Advance har en 32-bitars ARM7TDMI RISC microprocessor på 16.78MHz. Den har även 96kB VRAM-minne, 32kB internt RAM-minne samt 256kB extern RAM-minne.
|