Commodore C64 BareMetal
Ho voglia di scrivere di questo progetto che ritengo sia stato fatto davvero bene. Cosa significa commodore c64 baremetal?
In informatica, Bare Metal (o BareMetal ) si riferisce a un computer che esegue istruzioni direttamente su hardware logico senza un sistema operativo intermedio . I moderni sistemi operativi si sono evoluti attraverso varie fasi, da sistemi elementari a sistemi complessi e altamente sensibili di oggi che incorporano molti servizi. Dopo lo sviluppo dei computer programmabili (che non richiedevano modifiche fisiche per eseguire programmi diversi) ma prima dello sviluppo dei sistemi operativi, le istruzioni sequenziali venivano eseguite direttamente sull'hardware del computer utilizzando il linguaggio macchina senza alcun livello software di sistema. Questo approccio è definito il precursore della "Bare Metal" dei moderni sistemi operativi. Oggi è applicabile principalmente a sistemi embedded e firmware generalmente con requisiti di latenza time-critical, mentre i programmi convenzionali sono eseguiti da un sistema runtime sovrapposto a un sistema operativo.
Per una data applicazione, nella maggior parte dei casi, un'implementazione bare metal funzionerà più velocemente, utilizzando meno memoria e quindi con una maggiore efficienza energetica. Questo perché i sistemi operativi, come qualsiasi programma, necessitano di tempo di esecuzione e spazio di memoria per essere eseguiti e questi non sono più necessari su bare metal. Ad esempio, qualsiasi funzionalità hardware che include input e output è direttamente accessibile su bare metal, mentre la stessa funzionalità che utilizza un sistema operativo deve instradare la chiamata a una subroutine, consumando tempo di esecuzione e memoria.
Per una data applicazione, la programmazione bare-metal richiede uno sforzo maggiore per funzionare correttamente ed è più complessa perché i servizi forniti dal sistema operativo e utilizzati dall'applicazione devono essere re implementati in base alle esigenze. Questi servizi possono essere:
· Avvio del sistema (obbligatorio)
· Gestione della memoria: posizione di memorizzazione del codice e dei dati relativi alle risorse hardware e alle periferiche (obbligatorio)
· Gestione delle interruzioni (se presenti)
· Pianificazione delle attività, se l'applicazione può eseguire più di un'attività
· Gestione delle periferiche (se presenti)
· Gestione degli errori, se desiderato o necessario
Il debug di un programma bare metal è difficile poiché:
· Non ci sono notifiche di errori software né gestione dei guasti, a meno che non siano state implementate e validate.
· Non esiste un output standard, a meno che non sia stato implementato e convalidato.
La programmazione bare metal viene generalmente eseguita utilizzando un linguaggio vicino all'hardware, come Rust, C++, C, linguaggio assembly o anche per piccole quantità di codice o codice macchina per processori molto nuovi direttamente. [2] Tutti i numeri precedenti significano inevitabilmente che i programmi bare-metal sono molto raramente portabili.
La programmazione della Bare Metal rimane una pratica comune nei sistemi embedded, in cui i microcontrollori o i microprocessori spesso si avviano direttamente in software monolitico e monouso, senza caricare un sistema operativo separato. Tale software incorporato può variare nella struttura, ma la forma più semplice può consistere in un ciclo principale infinito, chiamando subroutine responsabili del controllo degli input, dell'esecuzione di azioni e della scrittura degli output.
Capite bene che si tratta di un lavoro di grande difficoltà, devi colloquiare con l’hardware che hai a disposizione e riprogrammare un commodore64,
Questo immane lavoro é stato fatto da Randy Rossi , ecco il link https://accentual.com/bmc64/ alla sua pagina, a cui va il mio più sentito ringraziamento.