Linux on käivitatud mängukonsoolil Atari Jaguar

Pärast Linuxi portimist Sega MegaDrive'ile on rakendatud võimalus käivitada Linuxi kernel koos Busyboxi utiliitide kogumikuga mängukonsoolil Atari Jaguar, mis ilmus 1993. aastal. Seade varustati CPU Motorola 68000-ga, sisaldas 2 MB RAM-i ja kasutati püsivara salvestamiseks kuni 6 MB kaarte. Seade oli varustatud kahe kooperatiivprotsessoriga: Tom (GPU 32-bitise RISC-arhitektuuriga + 64-bitine videote töötlemise protsessor + 64-bitine loogilise töötluse protsessor) ja Jerry (DSP 32-bitise RISC-arhitektuuriga helitöötluseks).

Sarnaselt Sega MegaDrive'i portimisega, mille jaoks on loodud Linuxi kernel CPU Motorola 68000-le, millel ei ole mälu juhtimise riistvaramoodulit (MMU), koos toodetud kernel 7.2.0-rc1 on kogutud mikrokontrollerite režiimis "NOMMU", mis võimaldab kasutada tasapinnalist mälu mudelit lineaarse aadressiruumi kaudu (varem arendused töötamiseks ilma MMU-ta on arenenud uClinuxi kerneliforkis, kuid siis on nad võetud põhinimekirja valikuna "NOMMU"). Probleem mälupuudusega lahendati teisiti, kaasates execute-in-place (XIP) mehhanismi, mis võimaldab otse käitada kernelikoodi ROM-ist kopeerimata RAM-i.

Seadmestiku RAM-i aadress on 0x000000, samal ajal kui ROM (kaart) on aadressil 0x80000, seega Linuxi kernel on jagatud kaheks eraldi mälualaks: sektsioonid .rodata ja .text, kus asuvad konstantid ja kood, asuvad kaardil, samas kui sektsioonid .data ja .bss, kus asuvad muutuvad andmed, asuvad RAM-is. Kuna CPU 68000 otsib katkestustabelit aadressil 0x0 ja kernel asetatakse tegelikult kaardile, mille sisu on aadressil 0x80000, rakendati täiendavalt trikki katkestuste tabelite kopeerimisega RAM-i.

Probleem, mis seisnes ajasturi puudumises CPU Motorola 68000-s, lahendati DSP-s helisünteesi jaoks kasutatavate ajastitega. Neid ajaste kasutati katkestuste genereerimiseks ülesande ajakava aktiveerimiseks. Kerneliteadeteks laadimise ajal kirjutati eraldi konsoolidraiver, mis edastas andmeid paralleelse portaali simuleerimise kaudu, kasutades TXD ja RXD väljundeid, mida juhiti DSP-protsessori kaudu.

Kasutajaruumi komponentide kokkupanemiseks kasutati Buildrooti tööriistu koos LinuxMD projekti plaastritega. Mälu kokkuhoiuks kutsuti otse esile käsutust "\/bin\/busybox sh", uClibc raamatukogus asendati malloc funktsioon lihtsustatud versiooniga malloc-simple, mis ei salvestanud täiendavaid metaandmeid, ning U-Booti laadija asemel tehti otseülekanne kernelile käsuga "jmp $80000".



Allikas: opennet.ru
Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster