arquitectura de la pc - electron.frba.utn.edu.armdoallo... · una vez finalizada la cuenta de...

21
Arquitectura de la PC

Upload: others

Post on 08-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Arquitectura de la PC

Page 2: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Mapa de Memoria

Page 3: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Mapa de Memoria (2)

Page 4: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Mapa de Memoria (3)

Page 5: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Mapa de E/S en una PC

Page 6: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Power On Self Test (1)

Antes de iniciar su operación el sistema verificará el correcto funcionamiento de la CPU

Chequea si el contenido de la ROM es el correcto (realiza un checksum del contenido de la ROM completa que en fábrica se ajusta de modo que el resultado del check sea cero).

Detecta el tipo de adaptador de video instalado. Lo inicializa en modotexto 80x25.Escribe en la BIOS DATA AREA los principales datos de interés para el sistema que proporciona este controlador.

Comprueba la correcta interacción con el 8042 (Controlador de teclado) y setea el modo de trabajo con los diferentes ports de E/S que proporciona este chip.

Si el Timer 1 funciona correctamente se lo programa para generar un pulso al final de la cuenta, cuenta cíclica, y duración de la misma 15 mseg aproximadamente.

Page 7: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Power On Self Test (2)

Comprueba el correcto funcionamiento para el canal de DMA 0.

Si los test descriptos indican que el Timer 1 y el canal 0 de DMA funcionan correctamente, entonces se dispara el refresco de memoria.

Comprueba el 8259 y lo inicializa con los valores default. El vector de Interrupción lo apunta a las rutinas de la ROM correspondientes.

Cuenta la memoria RAM y comprueba su funcionamiento

Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los inicializa de acuerdo a la forma en la que van a trabajar cada uno de ellos.

Cheque el teclado y el timer tick, habilita sus interrupciones en el 8259.

Page 8: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Power On Self Test (3)

Testea el funcionamiento de las unidades de disco flexible y rígido. Una vez comprobado las inicializa, y escribe los resultados y principales parámetros en la BIOS DATA AREA.

Chequea si existen ports serie. Inicializa a los que encuentra y guarda resultados en BIOS DATA AREA.

Chequea si existen ports paralelo. Inicializa a los que encuentra y guarda resultados en BIOS DATA AREA.

Establece si existen extensiones BIOS. Esto es: La ROM BIOS de las PC provee un camino para integrar adaptadores de E/S con su propia ROM on­board.

Llama a la rutina Bootstrap loader para la carga del sistema operativo.

Page 9: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Detección de extensiones BIOS

El POST busca extensiones de BIOS. El rango de direcciones de memoria en las que

se pueden mapear estas ROMs va desde la C0000h hasta la EFFFFh.

Se busca dentro de este rango cada 2K una firma fija e igual a 55AAh. Si la encuentra asume que en esa página de 2k comienza una extensión de BIOS.

Si el POST detecta alguna ROM adicional, le transfiere temporariamente el control. La extensión de BIOS.

Page 10: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Detección de extensiones BIOS (2)

Inicializará el hardware para el que fue diseñada

Realizará, del mismo modo que el POST (de la ROM del sistema) un checksum, cuyo resultado debe ser 0 para que la ROM se considere de contenido válido.

Interceptará las interrupciones que necesite. Devolverá al POST el control del sistema (RET)

dejando al hardware asociado a la extensión BIOS, listo para su uso.

Page 11: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Extensiones BIOS: Mapa de Memoria

Page 12: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Boostrap Loader del BIOS

Lee el primer sector físico del disco, del que está configurado en el equipo en la secuencia de arranque.

Carga los 512 bytes en memoria RAM (0000h:7C00h)

Salta al primer byte (debe haber allí una instrucción válida)

Page 13: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Boostrap Loader del BIOS (2)

En ese sector debe residir un programa que sepa cargar al Sistema Operativo.

Entonces:− Debe leer del disco los archivos necesarios para

bajar a la memoria. − Para ello deben conocer la forma en que está

organizada la información en el disco− Debe descargarlos en memoria y en algún

momento transferirles la ejecución.− Esto lo hace con servicios del BIOS (en modo real)

Page 14: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Práctica: Primer código en modo protegido

%define KERNEL_MEMORY 8000h%define VIDEOMEM 0b8000hORG KERNEL_MEMORY ; acá nos carga nuestro

bootsectoruse16

climov eax,cr0 ;lee el registro de control 0.or al,1 ;setea el bit PE Protection Enable.mov cr0,eax ;pasa a modo protegido.jmp short $+2;vacía la cola de ejecución.

Page 15: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Práctica: Primer código en modo protegido

mp:in al,60h ;lee el tecladodec al ;compara con escjnz mp ;sino es esc siguemov eax,cr0and al,0feh ;resetea el PE.mov cr0,eax ;retorna a modo real.

Page 16: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Práctica: Primer código en modo protegido

mov ecx, 80*25mov eax,VIDEOMEMsar eax,4mov ds,axlimpiar_pantalla:mov byte [ecx * 2 ­ 2], 0mov byte [ecx * 2 ­ 1], 1Bhdec ecxjne limpiar_pantallajmp $

Page 17: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Uso de nasm y Linux

nasm ­f bin ­o bootsector.bin bootsector.asmnasm ­f bin ­o KERNEL.BIN kernel.asm ­l kernel.lstsudo mkdosfs ­C floppy.dsk ­F 12 1440sudo mount ­o loop ­t msdos floppy.dsk /mnt/pruebasudo cp KERNEL.BIN /mnt/pruebasudo umount /mnt/pruebadd if=floppy.dsk bs=512 skip=1 of=floppy1.dskcat bootsector.bin floppy1.dsk > floppy.imgsudo rm ­f floppy.dsk rm floppy1.dsk

Page 18: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Uso de bochs

<bochs:1> c – Inicia la ejecución (Dos consolas: Una de texto degub y otra

gráfica de emulación) ^c – Para la ejecución info r – Muestra los valores de los registros info cpu – Otra vista de los registros sreg ­ s – Ejecución paso a paso n – Ejecución paso a paso, no para Call's

Page 19: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Uso de bochs (2)

help vb 0x1811:0x111 – Setea un Break Point blist – Veo los BP bpd 1 – Deshabilito un BP bpe 1 – Habilito un BP

Page 20: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

Uso de bochs (3)

Magic Break Point− xchg bx,bx en el código en el punto que se desea

depurar. Archivo bochsrc requiere que esté activo

− magic_break: enabled=1

Page 21: Arquitectura de la PC - electron.frba.utn.edu.armdoallo... · Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los

El archivo bochsrc

Configura el bochs Hay algunas poca líneas fundamentales:

− floppya: 1_44=floppy.img, status=inserted− boot: floppy− log: bochsout.txt− magic_break: enabled=1

Además de las que vienen por defecto