Introducción a la programación para entornos UEFI

Maño Archilla, Laura (2019). Introducción a la programación para entornos UEFI. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. de Sistemas Informáticos (UPM), Madrid.

Description

Title: Introducción a la programación para entornos UEFI
Author/s:
  • Maño Archilla, Laura
Contributor/s:
  • López Rodríguez, Pedro Pablo
Item Type: Final Project
Degree: Grado en Ingeniería de Computadores
Date: March 2019
Subjects:
Freetext Keywords: Sistema Básico de Entrada/Salida (BIOS); Unified Extensible Firmware Interface (UEFI)
Faculty: E.T.S.I. de Sistemas Informáticos (UPM)
Department: Sistemas Informáticos
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img] PDF - Users in campus UPM only - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (1MB)
[img] Archive (ZIP) (Anexos) - Users in campus UPM only
Download (17kB)

Abstract

Un ordenador es una máquina compleja formada por muchos y muy diversos componentes. Podemos clasificar estos componentes en dos categorías; por un lado, están los componentes hardware de carácter físico y por otro los componentes software de carácter lógico, que se corresponden a los programas que rigen el cumplimiento de los objetivos asignados en cada momento al ordenador. Como es habitual que los objetivos vayan cambiando, los componentes software son susceptibles de renovarse con mucha mayor facilidad que los componentes hardware, los cuales forman parte del ordenador de manera estable prácticamente durante toda su vida útil. Como interfaz entre ambos tipos de componentes está el Sistema Básico de Entrada/Salida (BIOS). Aunque se trata esencialmente de software, está íntimamente ligado con el hardware específico del ordenador en el que se ejecuta. Cada ordenador necesita un BIOS fabricado a medida para su hardware, este BIOS no puede ejecutarse en un ordenador que tenga un hardware diferente, aunque cuente con la misma arquitectura. Por tanto, el BIOS, tiene el mismo carácter permanente que el hardware del ordenador. El BIOS pertenece a una categoría especial de software denominada firmware (FW) que está íntimamente ligada al hardware y establece la lógica que controla los circuitos electrónicos de los dispositivos. Durante el arranque, el BIOS se encarga de reconocer e inicializar los componentes físicos del ordenador. A su vez proporciona una serie de funciones, a modo de interfaz, que permite al software interactuar con el hardware. Tradicionalmente la programación del software del BIOS, implica directamente a los registros del procesador, interrupciones, gestión e inserción en la memoria principal, etc. Esto involucra al programador en un desarrollo de bajo nivel mediante instrucciones en lenguaje máquina. A finales de los 90 junto con el diseño del procesador Itanium de Intel, surge la necesidad de un modelo de arranque diferente debido a las limitaciones del BIOS, el cual no ofrece independencia en el uso del procesador ni una interfaz de administración avanzada. En 1998, Intel crea la iniciativa de arranque de Intel (IBI), cuya propuesta original fue una encapsulación de los registros del BIOS tradicional como argumentos y parámetros, llamada Capa Arquitectónica del Sistema (SAL), esta iniciativa, dio la oportunidad de rediseñar la interfaz de arranque. Más tarde en 1999 Intel presentó la Especificación de Interfaz de Firmware Extensible (EFI), esta especificación fue apoyada por grandes empresas de la industria tecnológica para ser adoptada como estándar bajo el nombre UEFI, en conjunto con otras especificaciones creadas a raíz de esta. UEFI pretende proporcionar ventajas como la abstracción y la modularización, así como un estándar abierto que permite a desarrolladores y empresas con pocos recursos acceder a esta industria. El carácter abierto de la especificación es la principal fuente de motivación para este proyecto, debido a que supone una oportunidad para comprender el funcionamiento de la interfaz entre el software y el hardware. Además, nos permite estudiar la programación de aplicaciones que interactúan con dicha interfaz. Aunque el BIOS ha sufrido numerosos cambios desde sus inicios, hace más de 30 años. Hasta el lanzamiento de la especificación UEFI su estructura general no se había modificado notablemente a pesar de la multitud de cambios y mejoras de los componentes hardware y software durante ese tiempo. Debido a su reciente implantación en numerosos equipos informáticos, este proyecto pretende ilustrar desde un punto de vista funcional, las características y cambios más relevantes que supone esta especificación. A modo de ejemplo, he desarrollado una aplicación completamente operativa, que tiene como objetivo exponer la parte más práctica de las funcionalidades UEFI. Abstract: A computer is a complex machine made up of many and very diverse components. We can classify these components into two categories; On the one hand, there are the hardware components of a physical nature and on the other the logical software components, which correspond to the programs that govern the fulfillment of the objectives assigned at each moment to the computer. As it is usual for the objectives to change, the software components are susceptible to renewing much more easily than the hardware components, which are part of the computer in a stable manner practically throughout its useful life. The Basic Input / Output System (BIOS) is the interface between both types of components. Although it is essentially software, it is intimately linked with the specific hardware of the computer on which it is run. Each computer needs a BIOS manufactured to measure for its hardware, this BIOS can not be executed in a computer that has a different hardware, although it has the same architecture. Therefore, the BIOS has the same permanent character as the computer's hardware. The BIOS belongs to a special category of software called firmware (FW) that is intimately linked to the hardware and establishes the logic that controls the electronic circuits of the devices. During boot, the BIOS is responsible for recognizing and initializing the physical components of the computer. At the same time, it provides a series of functions, as an interface, that allows the software to interact with the hardware. Traditionally, BIOS software programming directly involves processor registers, interrupts, management and insertion into main memory, etc. This involves the programmer in a low-level development through instructions in machine language. In the late 1990s, along with the design of Intel's Itanium processor, the need arose for a different boot model due to the limitations of the BIOS, which does not offer independence in the use of the processor or an advanced management interface. In 1998, Intel created the Intel Boot Initiative (IBI), whose original proposal was an encapsulation of the traditional BIOS records as arguments and parameters, called the System Architectural Layer (SAL), this initiative, gave the opportunity to redesign the boot interface. Later in 1999 Intel introduced the Extensible Firmware Interface Specification (EFI), this specification was supported by large companies in the technology industry to be adopted as standard under the name UEFI, in conjunction with other specifications created because of it. UEFI aims to provide advantages such as abstraction and modularization, as well as an open standard that allows developers and companies with few resources to access this industry. The open nature of the specification is the main source of motivation for this project, because it is an opportunity to understand the operation of the interface between software and hardware. In addition, it allows us to study the programming of applications that interact with this interface. Although the BIOS has undergone numerous changes since its inception, more than 30 years ago. Until the release of the UEFI specification, its overall structure had not changed significantly despite the multitude of changes and improvements to the hardware and software components during that time. Due to its recent implementation in numerous computer equipment, this project aims to illustrate, from a functional point of view, the most relevant characteristics and changes that this specification implies. As an example, I have developed a fully operational application, which aims to expose the most practical part of the UEFI functionalities.

More information

Item ID: 54562
DC Identifier: http://oa.upm.es/54562/
OAI Identifier: oai:oa.upm.es:54562
Deposited by: Biblioteca Universitaria Campus Sur
Deposited on: 26 Apr 2019 05:22
Last Modified: 26 Apr 2019 05:22
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM