¿Tiene el BIOS algún tipo de 'controladores' genéricos?

22

¿Cómo controla el BIOS los dispositivos de E / S sin ningún tipo de controladores?

Por ejemplo, cómo se muestra una imagen mientras la computadora se inicia si el BIOS no tiene controladores para la tarjeta gráfica.

¿Existe algún tipo de controlador genérico que sea estándar en todos los BIOS y hardware que permita al BIOS realizar funciones básicas sin importar qué hardware esté instalado?

Cualquier ayuda sería apreciada.

Gracias.

RJSmith92
fuente
¿Tienes un problema específico que intentas resolver? Si pregunta si hay BIOS utiliza una unidad genérica universal, no lo hace
Ramhound
Creo que hay un formato de salida estándar mínimo (vesa) y la tarjeta de video tiene su propia BIOS. Además, no es como si tu firmware bios / uefi fuera renderizado, en tiempo real en 3d.
Journeyman Geek
55
@Ramhound No es un problema que estoy tratando de resolver, es solo una pregunta general. Independientemente de la tarjeta gráfica que coloque en su sistema, aún puede ver la pantalla durante el arranque, entonces, ¿hay alguna interfaz estándar programada en el BIOS?
RJSmith92
44
Do you have a specific problem your trying to solve? Sí, están tratando de resolver el problema de encontrar una respuesta a la pregunta que hicieron. ¬_¬
Synetech
Relacionado: superuser.com/questions/357328/…
Russell Borogove

Respuestas:

13

¿Tiene el BIOS algún tipo de 'controladores' genéricos?

¿Cómo controla el BIOS los dispositivos de E / S sin ningún tipo de controladores?

Estándares Todos los componentes implementan una interfaz básica, y el BIOS está programado para usarla. Por supuesto, debido a que es una interfaz básica (eso es lo que significa 'B' en BIOS), no puede aprovechar las capacidades completas del hardware; eso queda para que el software lo implemente a través de controladores que pueden acceder al hardware directamente.

Originalmente, los fabricantes de BIOS crearon un conjunto de API que se esperaba que los dispositivos usaran si querían ser compatibles. Lo hicieron a través de " interrupciones ", que es una forma en que un dispositivo, bueno, interrumpe el programa para hacerle saber que algo sucedió y viceversa.

Por ejemplo, cómo se muestra una imagen mientras la computadora se inicia si el BIOS no tiene controladores para la tarjeta gráfica.

En el caso de la pantalla previa al arranque, el firmware del adaptador de video implementa VESA (Video Electronics Standards Association), que es un estándar creado para simplificar el acceso al hardware de la pantalla. El BIOS sabe cómo acceder al hardware de video utilizando las funciones estándar proporcionadas. Es algo similar a cómo se implementó DirectX como una API de nivel superior para el hardware, de modo que los programadores no tuvieron que dar cuenta de cada configuración de hardware.

¿Existe algún tipo de controlador genérico que se encuentre en todos los BIOS y hardware que permita al BIOS realizar funciones básicas sin importar qué hardware esté instalado?

Más o menos. No es un controlador, sino una API estándar ; Un conjunto de funciones de programación que se pueden utilizar para hacer cosas básicas como inicializar un dispositivo o datos de entrada y salida.

Si los fabricantes quieren vender sus productos, deberán asegurarse de que al menos implementen las API estándar para que sean compatibles. De esa forma, el sistema puede detectar el hardware y, en el caso de dispositivos críticos para el arranque, pueden acceder a ellos a un nivel básico hasta que se pueda cargar un controlador de software que sepa cómo acceder a ellos por completo.

Synetech
fuente
Gracias, gran respuesta. Entonces, ¿las llamadas de interrupción del BIOS (qué sistemas DOS solían usar) todavía se usan hasta que se carga el sistema operativo?
RJSmith92
1
Sí, el BIOS proporciona un montón de interrupciones diferentes que se pueden usar (aunque no todos los BIOS proporcionarán todas las funciones). Los sistemas DOS sí los usaron, pero DOS también creó INT 21 y 2F para proporcionar interrupciones de software de nivel superior para hacer cosas (extraño mucho la programación del ensamblador de hardware / DOS). El hecho es que siempre será necesario contar con alguna funcionalidad básica de bajo nivel para proporcionar compatibilidad, incluso con EFI y cualquier otra cosa que venga en el futuro. Puede tomar diferentes formas, pero sin algún tipo de lenguaje común, el sistema no podría utilizar los dispositivos de hardware.
Synetech
Tengo entendido que las llamadas de interrupción todavía son utilizadas por el núcleo y los servicios a nivel de núcleo. ¿No es eso cierto?
BlueRaja - Danny Pflughoeft
@BlueRaja, tal vez durante el arranque (necesitan alguna forma de acceder al hardware), pero después de ejecutar las rutinas de detección, usan los controladores apropiados (que son solo programas de bajo nivel) para acceder directamente al hardware. Incluso el núcleo necesitaría acceso directo para aprovechar al máximo el hardware, por ejemplo aprovechando las funciones avanzadas de la CPU u optimizando el uso del controlador de memoria y el conjunto de chips.
Synetech
22

El BIOS en una PC estaba destinado a cumplir una función similar a la BIOS en un sistema CP / M de 8 bits, popular antes de que la PC se hiciera cargo a mediados de los años 80. El BIOS tenía la intención de contener un gestor de arranque mínimo y rutinas de bajo nivel dependientes del hardware para realizar entradas y salidas a algunos dispositivos (pantalla, disco, cinta, puerto COM). El conocimiento para hacer esto se incorporó a la ROM: no se necesita un controlador y, por supuesto, no se necesita hardware adicional compatible con esta ROM. (Cosas como la administración de energía y ACPI llegaron mucho más tarde, en los años 90, después de que la PC se había establecido como una plataforma ubicua).

(El "sistema de archivos" CP / M estaba en un componente cargado fuera del disco llamado BDOS; asimismo, el conocimiento del sistema de archivos FAT y sus interfaces está en (al menos uno de) dos archivos ocultos MSDOS.SYS o IO.SYS, no parte de la ROM del BIOS.)

Sin embargo ... El BIOS de la PC, a diferencia de CP / M, admitía la noción de "ROMS de opción" que podría incluirse en una tarjeta de expansión. Entonces había al menos un mecanismo mínimo para extender el BIOS. Las tarjetas de video que comienzan con CGA (MDA, el predecesor de CGA, puede que también lo haya hecho) tendrían una ROM opcional que extendía o agregaba funciones de E / S a la interfaz del BIOS. (Esta es la razón por la que ve un mensaje de NVidia antes de que se inicie su BIOS). También lo hicieron los controladores duros y las tarjetas SCSI. Todos estos todavía lo hacen. Muchas tarjetas de red antiguas tienen un socket para una ROM de arranque.

Tenga en cuenta también que los fabricantes de clones de PC que surgieron en los años 80 decidieron rápidamente no proporcionar solo una interfaz de BIOS compatible, sino que terminaron teniendo que copiar la plataforma de la PC en su conjunto, incluido todo el hardware de bajo nivel, como el chip del temporizador , interrumpir el controlador, etc. (Esto fue relativamente fácil ya que poco de esto era propiedad de IBM). Esto se debió a que el BIOS tardó en hacer las cosas y los programadores accedieron al hardware directamente, particularmente para los juegos.

Por lo tanto, entre las ROM opcionales y este consenso del hardware estándar que forma la plataforma para PC, así como el hecho de que se ha mantenido compatible con versiones anteriores a lo largo de la evolución de la PC, algo que desee utilizar la pantalla sin un controlador puede:

  • use interfaces de BIOS estándar, que pueden estar "enganchadas" por una ROM opcional en el hardware de video
  • o hacer suposiciones sobre qué hardware está en el sistema y acceder directamente al hardware básico

Todo el hardware de la pantalla de la PC aún funciona en modo "compatible con VGA" durante el arranque. El adaptador original IBM VGA tenía modos compatibles con las tarjetas EGA, CGA y MDA anteriores. Todo esto significa que algo que se ejecuta desde el BIOS o fuera de un sistema operativo puede suponer que todavía puede leer y escribir la misma memoria conectada a la pantalla ahora que en 1985, por convención.

LawrenceC
fuente
Gracias por la respuesta. ¿Entonces el BIOS en las tarjetas de expansión debe seguir algún tipo de estándar para que cualquier BIOS de la placa base pueda usarlo?
RJSmith92
1
No estoy seguro de si es tanto como un estándar en lugar de una convención de larga data, pero algo así. Supongo que la especificación de arranque de BIOS (BBS) es una especie de estándar formal aquí. en.wikipedia.org/wiki/Option_ROM
LawrenceC
Sí, ese es el tipo de cosas que estaba buscando. Gracias de nuevo
RJSmith92