A Linux elindult az Atari Jaguar játékkonzolon.

A Linux Sega MegaDrive-ra való portolása után lehetővé vált a Linux kernel Busybox segédprogramkészletével való futtatása az 1993-ban megjelent Atari Jaguar játékkonzolon. A konzolt Motorola 68000 CPU-val szerelték fel, 2 MB RAM-mal rendelkezett, és állandó tárolóként akár 6 MB-os cartridge-eket is használhatott. Az eszköz két koprocesszorral volt felszerelve: Tom (RISC architektúrájú 32 bites GPU + 64 bites videofeldolgozó + 64 bites logikai műveleteket végző processzor) és Jerry (RISC architektúrájú 32 bites DSP a hangkezeléshez).

A Sega MegaDrive-hoz készült porthoz hasonlóan, a memória kezelésére nem rendelkezik hardveres modulal, a Linux kernel 7.2.0-rc1 verziója a mikrokontrolleres üzemmód "NOMMU" alkalmazásával készült, amely lehetővé teszi a lapos memória modell használatát lineáris címzési területtel (korábban a MMU nélkül működéshez szükséges fejlesztések az uClinux kernel forkjában fejlődtek ki, de később alapértelmezett opcióként a kernelhez lettek elfogadva "NOMMU" formájában). A memóriahiány problémáját más módon oldották meg, az execute-in-place (XIP) mechanizmus alkalmazásával, amely lehetővé teszi a kernel kód közvetlen végrehajtását az EEPROM-ból anélkül, hogy azt a RAM-ba kellene másolni.

Az eszköz RAM-ja a 0x000000 címen található, míg az EEPROM (cartridge) a 0x80000 címen, így a Linux kernel komponensei két külön memóriaterületre oszlanak: a .rodata és .text szekciók, amelyek konstansokat és kódot tartalmaznak, a cartridge-en találhatók, míg a .data és .bss szekciók, amelyek változó adatokat tartalmaznak, a RAM-ban. Mivel a 68000 CPU az 0x0 cím alatt keresd a megszakítási vektorok táblázatát, és a kernel valójában a cartridge-en található, amelynek tartalma az 0x80000 címen van, hozzáadott egy hack megoldást a megszakítási vektorok RAM-ba másolásával.

A Motorola 68000 CPU-val kapcsolatos időzítő hiány problémáját a DSP-ben használt időzítők alkalmazásával oldották meg a hangszintézishez. Ezeket az időzítőket a feladatütemező aktiválásához szükséges megszakítások generálására használták. A kernel betöltése közben a kernel üzenetek kimenetéhez egy külön konzoli illesztőprogramot írtak, amely a TXD és RXD kimenetek párhuzamos port szimulálásával biztosította a kimenetet, amelyet DSP processzor vezérelt.

A felhasználói tér alkotóelemeinek összeállításához a Buildroot eszköztárát használták, a LinuxMD projekt javításaival. A memóriahatékonyság érdekében közvetlenül a „/bin/busybox sh” parancsértelmezőt hívták meg inicializáláskor, a uClibc könyvtár malloc funkcióját pedig egy egyszerűsített malloc-simple változatra cserélték, amely nem tárol további metaadatokat, és a U-Boot teljes értékű betöltő helyett közvetlen vezérlést adtak az kernelnek a „jmp $80000” parancs segítségével.



Forrás: opennet.ru
Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster