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 veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster