Programación de dispositivos en modo usuario: Acceso PIO

El objetivo de esta práctica es familiarizarse con la manera en que se realiza la programación de dispositivos que ofrecen acceso PIO desde código en modo usuario en un sistema Linux.

Para evitar el uso del ensamblador, Linux ofrece una colección de funciones inline (inb, outb, inw,...) que esconden las instrucciones ensamblador correspondientes. Asimismo, ofrece las llamadas al sistema iopl e ioperm para posibilitar el acceso en modo usuario a todos los puertos de E/S o sólo al conjunto especificado, respectivamente.

Como ejemplo práctico, se va a usar el dispositivo RTC (Real-Time Clock) que, entre otras labores, mantiene la fecha y hora del sistema. Este dispositivo tiene asociada una pequeña zona de memoria estática alimentada por una batería (tradicionalmente denominada de manera informal "la CMOS" del PC) que permite que se mantenga la hora del sistema cuando el equipo está apagado.

El objetivo concreto del trabajo es desarrollar un programa que usando PIO en modo usuario obtenga la fecha y hora actual y la imprima con el formato hh:mm:ss DD/MM/AA, teniendo en cuenta si se usa formato BCD o binario y de 12 o 24 horas.

Puede usar como punto de partida el ejemplo publicado como parte del material del tema, que imprime los segundos de la hora CMOS. El alumno deberá revisar la documentación de este dispositivo para obtener la información requerida para afrontar este trabajo (CMOS OSDev).