Linux a fost lansat pe consola de jocuri Atari Jaguar

După portarea Linux pe Sega MegaDrive, a fost realizată posibilitatea de a rula nucleul Linux cu setul de utilitare Busybox pe consola de jocuri Atari Jaguar, lansată în 1993. Consola era echipată cu un CPU Motorola 68000, livrată cu 2 MB RAM și putea folosi cartușe de până la 6 MB ca stocare permanentă. Dispozitivul era dotat cu două coprocesoare: Tom (GPU cu arhitectură RISC de 32 de biți + procesor video de 64 de biți + procesor de 64 de biți pentru operațiuni logice) și Jerry (DSP cu arhitectură RISC de 32 de biți pentru procesarea sunetului).

Similar cu portul pentru Sega MegaDrive pentru rularea nucleului Linux pe CPU Motorola 68000, care nu are modul hardware de gestionare a memoriei (MMU), nucleul standard 7.2.0-rc1 a fost compilat în modul „NOMMU” utilizat pentru microcontrolere, permițând utilizarea unui model plat de memorie cu un spațiu de adresare liniar (anterior, soluțiile pentru funcționarea fără MMU au fost dezvoltate într-un fork al nucleului uClinux, dar apoi au fost integrate în nucleul principal sub formă de opțiune „NOMMU”). Problema lipsei de memorie RAM a fost rezolvată diferit, prin utilizarea mecanismului execute-in-place (XIP), care permite rularea directă a codului nucleului din ROM fără copiere în memorie RAM.

RAM-ul de pe dispozitiv este reflectat la adresa 0x000000, iar ROM-ul (cartuș) la adresa 0x80000; prin urmare, componentele nucleului Linux au fost împărțite în două zone de memorie separate: secțiunile .rodata și .text cu constantele și codul au fost plasate pe cartuș, iar secțiunile .data și .bss cu datele modificabile în RAM. Deoarece CPU 68000 caută tabela vectorilor de întrerupere la adresa 0x0, iar nucleul este de fapt plasat pe cartuș, al cărui conținut este reflectat la adresa 0x80000, a fost aplicat suplimentar un hack prin copierea vectorilor de întrerupere în RAM.

Problema lipsei unui timer în CPU Motorola 68000 a fost rezolvată prin utilizarea timerelor folosite în DSP pentru sinteza sunetului. Aceste temporizatoare au fost folosite pentru a genera întreruperi pentru activarea planificatorului de sarcini. Pentru a afișa mesajele nucleului în timpul bootării, a fost scris un driver de consolă separat, care realiza afișarea simulând un port paralel prin pinurile TXD și RXD, controlate prin procesorul DSP.

Pentru construirea componentelor spațiului utilizatorului a fost folosit instrumentarul Buildroot cu patch-uri de la proiectul LinuxMD. Pentru economisirea memoriei la inițializare, a fost apelată direct consola „/bin/busybox sh”, funcția malloc din biblioteca uClibc a fost înlocuită cu o variantă simplificată malloc-simple, care nu salvează metadate suplimentare, iar în loc de un bootloader complet, cum ar fi U-Boot, a fost realizată o transferare directă a controlului către nucleu prin comanda „jmp $80000”.



Sursa: opennet.ro
Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster