Lo sviluppatore SciresM dopo il rilascio del firmware 13.1.0 ha rilasciato un nuovo aggiornamento di Atmosphère con la nuova versione 1.2.1. Atmosphère è composto da più componenti, ognuno dei quali sostituisce/modifica un diverso componente del sistema:

  • Fusée: First-stage Loader, responsabile del caricamento e della convalida della fase 2 (TrustZone personalizzato) più pacchetto2 (Kernel/FIRM sysmodules) e dell’applicazione delle patch necessarie. Sostituisce tutte le funzionalità normalmente in Package1loader/NX Bootloader.
  • Sept: Payload utilizzato per abilitare il supporto per la derivazione della chiave di runtime su 7.0.0.
  • Exosphère: TrustZone personalizzato, per eseguire un Secure Monitor personalizzato
  • Thermosphère: supporto EL2 EmuNAND, ovvero backup e utilizzo di immagini NAND virtualizzate/reindirizzate
  • Stratosphère: Custom Sysmodule(s), sia in stile Rosalina per estendere il kernel/fornire nuove funzionalità, sia dello stile di reimplementazione del loader per agganciare importanti azioni di sistema
  • Troposphère: patch del sistema operativo Horizon a livello di applicazione, utilizzate per implementare le funzionalità CFW desiderabili

Qui sotto il changelog completo.

Changelog

Quanto segue è stato modificato rispetto all’ultima versione:

  • Il supporto è stato implementato per 13.1.0.
    • mesosphère è stato aggiornato per riflettere le modifiche comportamentali del kernel apportate nella 13.1.0.
      • KScheduler ora emette una barriera di memoria dei dati quando si sblocca il blocco dello scheduler e quando viene restituito anticipatamente a causa del thread superiore corrente durante la pianificazione.
    • erpt è stato aggiornato per riflettere gli ultimi comportamenti ufficiali.
      • Il nuovo servizio aggiunto in 13.0.0 (“sprofile”) è stato rivisto e i formati di dati previsti sono stati modificati.
        • Questo sembra essere ancora (forse(?)) non verificabile a causa dei dati non ancora trasmessi, ma ho maggiore fiducia che le cose andranno lisce rispetto a quando è stato rilasciato sulla 1.1.0.
  • Sono stati apportati numerosi miglioramenti a mesosphère, tra cui:
    • È stato creato un target di build per costruire mirando alla virtscheda qemu .
      • Ciò facilita la scrittura di unit test per il kernel (e altri componenti dell’atmosfera) e l’esecuzione su PC.
        • Nota : il software di sistema ufficiale non funzionerà affatto in questo modo e il progetto Atmosphère non ha alcun interesse nel tentare di eseguire software ufficiale di alcun tipo. Questo è un macchinario per il test delle unità, e esplicitamente non di più.
      • Si spera che questo dovrebbe consentirci di avere maggiore fiducia che tutti i componenti dell’atmosfera funzionino nel modo in cui dovrebbero teoricamente funzionare in futuro.
      • Nota : se sei uno sviluppatore che ha familiarità con il sistema operativo Horizon (o è in grado di acquisire familiarità), apprezzerei molto l’aiuto nella scrittura di test e nel miglioramento del framework di test.
        • Si prega di contattare SciresM#0524se si è capaci e interessati.
          • Davvero, se sei davvero uno sviluppatore che vorrebbe aiutarmi a far decollare questo, lo apprezzerei profondamente.
          • Detto questo, se non sei uno sviluppatore ma vuoi esserlo, questa probabilmente non è la migliore opportunità; Mi aspetto che sia altamente tecnico.
            • Considera il canale #hack-n-all di ReSwitched discord per i tuoi scopi educativi.
        • Stiamo (almeno per ora) usando catch2 per i test unitari.
    • Quasi tutte le chiamate virtuali nel kernel sono ora risolte staticamente.
      • Ciò elimina un notevole sovraccarico delle chiamate virtuali e dovrebbe portare a migliori prestazioni del kernel in quasi tutte le funzioni.
    • Le restanti operazioni di ricerca dell’albero rosso nero che non utilizzavano la variante “chiave di ricerca” ottimizzata ora utilizzano la versione ottimizzata.
    • L’assembly personalizzato è stato scritto per migliorare la conversione da tick a timespan.
      • Funziona attorno a gcc che emette un assembly non ottimale a -Os (emette un buon assembly a -O3, clang va bene sia a -O3 che a -Os).
    • Le strutture di KThread e KSession sono state aggiornate per ottimizzare il layout dei membri, salvando 0x10 byte per oggetto KThread/KSession.
    • Invece di azzerare inutilmente tutti i dati negli oggetti del kernel solo per sovrascrivere i membri in un secondo momento, ora inizializziamo solo i membri di cui abbiamo bisogno nei costruttori di oggetti del kernel.
      • Questo è ciò che Nintendo stava già facendo.
    • È stato implementato un set di primitive atomiche ottimizzate personalizzate e vengono utilizzate al posto di std::atomic<>
      • Funziona attorno a un bug gcc che riduce l’ordine di memoria specificato a seq_cst e introduce clrex nei punti in cui è appropriato.
      • Questo dovrebbe migliorare rigorosamente le microprestazioni di molte chiamate di sistema.
    • È stata aggiunta un’estensione attivabile in fase di compilazione per supportare gli indirizzi fisici a 40 bit nelle capacità di MapRange (usando i bit attualmente riservati).
    • Sono stati corretti numerosi bug minori, tra cui:
      • La gestione iniziale della cache ora riflette meglio il comportamento ufficiale.
        • Questo risolve un problema che causava a determinati hardware con sensibilità della cache di produrre kernel panic criptici durante l’avvio.
      • La logica errata durante il controllo delle capacità di priorità del thread è stata corretta per riflettere il comportamento ufficiale.
      • Lo scheduler è stato aggiornato per riflettere l’ultimo comportamento ufficiale e sono stati corretti numerosi bug minori che coinvolgevano clz/ctz.
      • Gli accessi alla regione locale dei processi sono stati corretti per utilizzare correttamente la regione lineare del kernel, non i puntatori di userland.
      • Gli SVC della cache esposti per i processi a 32 bit ora riflettono meglio la semantica ufficiale della richiesta della maschera di base.
      • È stato corretto un bug che poteva causare un kernel panic se SvcArbitrateLock veniva chiamato su un thread con esattamente un riferimento nel mezzo della gestione di un’eccezione in modalità utente.
  • Miglioramenti generali della stabilità del sistema per migliorare l’esperienza dell’utente.
Fonte
Github

Da FRANCESCO

Sviluppatore a tempo perso nato negli anni 80, amante delle console e delle retro console.Il mio motto è quello di aiutare il prossimo senza avere rimorsi di cio' che hai fatto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.