2010-02-16 12 views
8

Sto provando a scrivere un programma che sarà un'opzione del BIOS (dopo il POST). Mi piacerebbe che l'applicazione avesse una bella GUI invece di essere basata su testo (ci sono molteplici ragioni per cui la localizzazione è una di queste).È possibile chiamare le librerie di Windows che risiedono sul disco rigido da un programma che risiede nel BIOS?

Il mio problema è che siamo vincolati dalla dimensione dell'applicazione che possiamo flashare al BIOS.

È possibile utilizzare MASM32 in "Collegamento" alle DLL del disco rigido in modo da poter utilizzare le API di Windows per sviluppare la GUI?

Oppure è disponibile un'API per creare la GUI che può essere collegata all'eseguibile finale? (Limitazione della dimensione di 60 KB all'eseguibile del programma finale)

Qualsiasi aiuto tu possa dare sarebbe molto apprezzato, grazie in anticipo.

risposta

9

È possibile. Tutto quello che avrei dovuto fare è:

  • impostare il processore in modalità protetta e mappa della memoria come previsto (modello piatto)
  • sviluppare un driver del filesystem e di carico che
  • sostegno tutte le possibili schede video, mouse, monitor, tastiere, ecc tra cui potenzialmente hardware legacy
  • impostare l'ambiente di esecuzione in modo che tutti i riferimenti esterni della DLL richiesto sono presenti, tra cui (per Windows) KERNEL32, GDI, ecc

C'è molto in questo, e non è facile. Tuttavia, un esempio che si avvicina è MenuetOS, un ambiente straordinariamente compatto. Ma nasce completamente da un ripensamento completo su come implementare un ambiente GUI.


Ho scritto il codice del BIOS che simula un'interfaccia GUI. La scheda video viene mantenuta in modalità testo, il carattere è reso più gradevole, i separatori di celle di testo vengono disattivati ​​e il mouse viene riconosciuto. Con un'animazione semplice, l'intera cosa si adattava a 60 KiB circa.

+0

Ti piace questa risposta: D, tuttavia, come ti trovi in ​​60k? : D –

+0

Potresti visualizzare immagini o caratteri unicode come il cinese? –

+4

Ho un incredibile algoritmo di compressione del codice per farlo. Ma non ho ancora elaborato il decompressore. :-) – wallyk

5

No, non è possibile. Un'applicazione Windows richiede l'esecuzione del sistema operativo Windows, pertanto il BIOS deve aver avviato il sistema operativo e aver completato l'esecuzione prima che sia possibile utilizzare una GUI di Windows (o un'app console). Anche per accedere ai file DLL sul disco, è necessario un filesystem, che non sarà disponibile fino all'avvio del sistema operativo.

Tuttavia, in 60 K, si dovrebbe essere in grado di adattare una GUI piuttosto ragionevole basata sui caratteri. Vorrei dare un'occhiata a come alcuni dei bootloader Linux fanno questo.

0

Non ci sono implementazioni BIOS che supportano questo. Ma in teoria è possibile, ma tieni a mente che prima devi sviluppare l'intero sistema operativo :)

+0

Non sto provando a creare un sistema operativo, sto provando a scrivere un modulo che verrà eseguito nel BIOS. Posso garantire che Windows 7 sarà sul computer, tuttavia questo codice deve essere eseguito nel BIOS prima del caricamento del sistema operativo. –

0

Non sono sicuro che la richiesta sia effettivamente possibile. (Tenendo presente il contesto della domanda)

Per il corretto funzionamento, è necessario inizializzare l'intero ambiente Microsoft Windows per utilizzare le funzioni API per disegnare una GUI.

Per curiosità, cosa stai facendo in questo programma BIOS?

Problemi correlati