Arquitectura de la PC

Anuncio
Arquitectura de la PC
Mapa de Memoria
Mapa de Memoria (2)
Mapa de Memoria (3)
Mapa de E/S en una PC
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 modo
texto 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 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.
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
momeria.
Comprueba el 8259 y lo inicializa con los valores default de los vector
es de Interrupción. A los que usa, los 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.
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.
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.
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.
Extensiones BIOS: Mapa de Memoria
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)
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.
Práctica: Primer código en modo protegido
%define KERNEL_MEMORY 8000h
%define VIDEOMEM 0b8000h
ORG KERNEL_MEMORY ; acá nos carga nuestro
bootsector
use16
cli
mov 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.
Práctica: Primer código en modo protegido
mp:
in al,60h ;lee el teclado
dec al
;compara con esc
jnz mp
;sino es esc sigue
mov eax,cr0
and al,0feh ;resetea el PE.
mov cr0,eax ;retorna a modo real.
Práctica: Primer código en modo protegido
mov ecx, 80*25
mov eax,VIDEOMEM
sar eax,4
mov ds,ax
limpiar_pantalla:
mov byte [ecx * 2 ­ 2], 0
mov byte [ecx * 2 ­ 1], 1Bh
dec ecx
jne limpiar_pantalla
jmp $
Uso de nasm y Linux
nasm ­f bin ­o bootsector.bin bootsector.asm
nasm ­f bin ­o KERNEL.BIN kernel.asm ­l kernel.lst
sudo mkdosfs ­C floppy.dsk ­F 12 1440
sudo mount ­o loop ­t msdos floppy.dsk /mnt/prueba
sudo cp KERNEL.BIN /mnt/prueba
sudo umount /mnt/prueba
dd if=floppy.dsk bs=512 skip=1 of=floppy1.dsk
cat bootsector.bin floppy1.dsk > floppy.img
sudo rm ­f floppy.dsk
rm floppy1.dsk
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

s – Ejecución paso a paso

n – Ejecución paso a paso, no para Call's
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
Descargar