Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > hardware > ACPI

ACPI

ACPI es el acrónimo inglés de Interfaz Avanzada de Configuración y Energía, lo que suena estupendamente hasta que miras un poco más allá. Está diseñado para independizar al sistema operativo respecto del BIOS, pero al final obtienes una dependencia más, puesto que emplea su propio lenguaje para manejar los eventos (ACPI Machine Language ó AML) almacenado en el --firmaware-- que constituye el BIOS, y debe interpretarlo el sistema operativo. Un par de capas más de complejidad añadidas ... y no gratis precisamente.

Después viene el asunto de las tablas. Tablas que guardan información sobre el hardware y que el sistema operativo puede consultar, pero que pueden incluír errores ó corromperse de varias formas.

Una de las tablas que más menciones obtiene en la red, y que provoca no pocos problemas es la DSDT(Differentiated System Description Table).

DSDT

Esta tabla describe los dispositivos del sistema y es la mayor y más importante de todas las que componen este mecanismo.

Está compuesta por una cabecera y un bloque de definición codificado en AML y, al contrario que otras tablas, no puede ser descargada ya que proporciona el espacio de nombres básico de ACPI al que todos los demás pueden sumarse.

Accediendo al DSDT

En Debian existen dos paquetes que permiten jugar con estas tablas: iasl y acpidump.

  1. Extraer el contenido del DSDT en la máquina usando cuenta de superusuario:

    # cat /proc/acpi/dsdt > acpidump.orig
    

    ó empleando el programa acpidump puesto que el acceso a /proc/acpi está siendo abandonado.

  2. Desensamblarlo ya como usuario normal:

    $ iasl -d acpidump.orig
    
    
    Intel ACPI Component Architecture
    AML Disassembler version 20061109 [May 15 2007]
    Copyright (C) 2000 - 2006 Intel Corporation
    Supports ACPI Specification Revision 3.0a
    
    
    Loading Acpi table from file acpidump.orig
    Acpi table [DSDT] successfully installed and
    loaded
    Pass 1 parse of [DSDT]
    Pass 2 parse of [DSDT]
    Parsing Deferred Opcodes
    (Methods/Buffers/Packages/Regions)
    ..................................................................
    ..................................................................
    ..................................................................
    ..................................................................
    ..............
    Parsing completed Disassembly completed, written to "acpidump.dsl"
    $
    
  3. Ensamblarlo de nuevo y observar la salida:

    $ iasl -tc acpidump.dsl
    
    
    Intel ACPI Component Architecture
    ASL Optimizing Compiler version 20061109 [May 15 2007]
    Copyright (C) 2000 - 2006 Intel Corporation
    Supports ACPI Specification Revision 3.0a
    
    
    acpidump.dsl  4793:                         Acquire (MUT0, 0x0FFF)
    Warning  1103 -            Possible operator timeout is ignored ^
    
    
    ASL Input:  acpidump.dsl - 7499 lines, 281213 bytes, 2917 keywords
    AML Output: acpidump.aml - 25903 bytes 725 named objects 2192 executable opcodes
    
    
    Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 788 Optimizations
    $
    

Enlaces

Información que he ido reuniendo y que puede darme pistas para posteriores encuentros con estos problemas basura: