sistemas digitales 2014 fiunmdp multitarea sistema operativo multitarea (som): conjunto de programas...
TRANSCRIPT
Sistemas Digitales 2014 FIUNMDP
MultitareaSistema Operativo Multitarea (SOM):Conjunto de programas que permiten administrar los recursos de un sistema de cómputos.
uP
Tarea
1Tar
ea 2
Tarea
3
Deshab
ilita
da
Placas de tareas
Leds indicadores de «tarea activa» Llaves de habilitación de
tareas
Placa Base (Motherboard)
RAM
ROM
Timer
Sistemas Digitales 2014 FIUNMDP
MultitareaSistema Operativo Multitarea (SOM):Conjunto de programas que permiten administrar los recursos de un sistema de cómputos.
Recurso compartido: tiempo del procesador. El SOM asignará a cada una de las tareas que lo requieran un tiempo de maquina prefijado.
Tarea1 SO Tarea2 SO Tarea3 SO Tarea1 SO Tarea2 SO Tarea3 SO …
t1 t2 t3 t1 t2 t3 Tiempo de máquina
Sistemas Digitales 2014 FIUNMDP
RAM de
Tarea
E/S de
Tarea
ROM de
TareaROM
deSOM
RAM de
SOM
E/S de
SOMTimer
uP6800
NMI
BUS de DIRECCIONES
BUS de DATOS
RAM de
Tarea
E/S de
Tarea
ROM de
Tarea
ROM de
Tarea 1
RAM de
Tarea 1
E/S de
Tarea 1
Lógica de decodifica
ción
Multitarea
Motherboard Placas de Tareas
AccB
PC
IX
SP
CCR
AccA
Sistemas Digitales 2014 FIUNMDP
2
Tarea 8
C000
Mapeo del Sistema
Multitarea
E000E7FFE800EFFFF000F7FFF800FFFF
DFFF
ROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas8k
2k
2k
2k
2k
Libre de 0000-BFFF
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1
Las tareas están paginadas, ocupan siempre la misma posición de memoria.
Sistemas Digitales 2014 FIUNMDP
2
Tarea 8
C000
Multitarea
E000E7FFE800EFFFF000F7FFF800FFFF
DFFF
ROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas8k
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1
Libre de 0000-BFFF
ROM de Tarea 1
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea 1
RAM de Tarea 12k
2k
4k
Mapeo del Sistema
Placa base
Tareas
Sistemas Digitales 2014 FIUNMDP
2
Tarea 8Multitarea
E000E7FFE800EFFFF000F7FFF800FFFFROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1ROM de Tarea 1
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea 1
RAM de Tarea 12k
2k
4kA11A12A13
A15
741380
1
2
3
4
5
6
7G1 G2A G2B
2A14
A15 A14 A13 A12 A11 A10..A0 Dir
1 1 0 0 0 0..0 C000
1 1 0 0 0 1..1 C7FF
1 1 0 0 1 0..0 C800
1 1 0 0 1 1..1 CFFF
1 1 0 1 0 0..0 D000
1 1 0 1 0 1..1 D7FF
1 1 0 1 1 0..0 E000
1 1 0 1 1 1..1 E7FF
1 1 1 0 0 0..0 E800
1 1 1 0 0 1..1 EFFF
. . .
Peso de cada línea 2k
Lógica de decodificación
Sistemas Digitales 2014 FIUNMDP
2
Tarea 8Multitarea
E000E7FFE800EFFFF000F7FFF800FFFFROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1ROM de Tarea 1
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea 1
RAM de Tarea 12k
2k
4kA11A12A13
A15
741380
1
2
3
4
5
6
7G1 G2A G2B
2A14
A15 A14 A13 A12 A11 A10..A0 Dir
1 1 0 0 0 0..0 C000
1 1 0 0 0 1..1 C7FF
1 1 0 0 1 0..0 C800
1 1 0 0 1 1..1 CFFF
1 1 0 1 0 0..0 D000
1 1 0 1 0 1..1 D7FF
1 1 0 1 1 0..0 E000
1 1 0 1 1 1..1 E7FF
1 1 1 0 0 0..0 E800
1 1 1 0 0 1..1 EFFF
. . .
Peso de cada línea 2k
Lógica de decodificación
Primeros 2k ROM Tarea
Segundos 2k ROM Tarea
2K E/S Tarea
2K RAM Tarea
Primeros 2K E/S SOM
Sistemas Digitales 2014 FIUNMDP
2
Tarea 8Multitarea
E000E7FFE800EFFFF000F7FFF800FFFFROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1ROM de Tarea 1
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea 1
RAM de Tarea 12k
2k
4k
F800-FFFF (ROM SOM)
A11A12A13
A15
741380
1
2
3
4
5
6
7G1 G2A G2B
2A14
F000-F7FF (RAM SOM)
E800-EFFF (E/S SOM Sel. Tarea)
E000-E7FF (E/S SOM Timer)
D800-DFFF (RAM Tarea n)
D000-D7FF (E/S Tarea n)
C800-CFFF (ROM tarea n)
C000-C7FF (ROM tarea n)
Zona de
Tareas
Peso de cada línea 2kLógica de decodificación
Sistemas Digitales 2014 FIUNMDP
Tarea 8
2Tarea 1
ROM de Tarea 1
E/S de Tarea 1
RAM de Tarea 1
74138 012
34567
G1 G2A G2B
Hab. Tarea 1
Vcc
Hab. Tarea 2Hab. Tarea 3
Hab. Tarea 4
Hab. Tarea 5Hab. Tarea 6
Hab. Tarea 7Hab. Tarea 8
D0D1D2
74373
1D2D3D
1Q2Q3Q
Vcc
CS3
CS0
CS2
CS1
Tarea 2
Led indicador de tarea habilitada
Switch hab tarea 1
Puente de seguridad
CD4503B
D0
Circuito de Decodificación Selección de Tarea
CS5
R/W
A10
A0
E800
CS5
R/W
A10
A0
E800
Sistemas Digitales 2014 FIUNMDP
Tarea 8
2Tarea 1
ROM de Tarea 1
E/S de Tarea 1
RAM de Tarea 1
74138 012
34567
G1 G2A G2B
Hab. Tarea 1
Vcc
Hab. Tarea 2Hab. Tarea 3
Hab. Tarea 4
Hab. Tarea 5Hab. Tarea 6
Hab. Tarea 7Hab. Tarea 8
D0D1D2
74373
1D2D3D
1Q2Q3Q
Vcc
CS3
CS0
CS2
CS1
Tarea 2
Led indicador de tarea habilitada
Switch hab tarea 1
Puente de seguridad
CD4503B
D0
Circuito de Decodificación Selección de Tarea
CS5
R/W
A10
A0
E800
CS5
R/W
A10
A0
E800
Selecciona tarea 1:
LDAA #%xxxxx000STAA $E800
Lee si esta habilitada la tarea 1:
LDAA $E800ANDA #%xxxxxxx1
Sistemas Digitales 2014 FIUNMDP
2
Tarea 8
Zona de TareasZona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1
Tareas:
•Todas los programas de tarea comienzan en la misma posición de memoria (C000)•El sector de pila es libre en cada tarea (dentro de la RAM D800-DFFF)•Todas las tareas en la dirección inicial (C000) tienen un número equivalente al tiempo que debe ejecutarse esa tarea.•Todas las tareas tienen la rutina de atención al IRQ en la misma posición de memoria (ROM de tarea C000-CFFF).
t de ejecución de tarea
ROM de Tarea n
E/S de Tarea n
RAM de Tarea n
C000
CFFF
D000
D7FF
D800
DFFF
4k
2k
2k
Sistemas Digitales 2014 FIUNMDP
2LDAA #$7FLDAB D400ABABNE 03EOR $D490STAA $D4E0LSR $D451BRA E0
5LDS #$D3FFLDAA #25STAA $D400CMP #30BNE 03ASR $D450PSHALSR $D451PULLALDAA $D430ORAA $78STAA $D457LDAB #$56DECBBRA 8F
Reset
SOM
5LDS #$D3FFLDAA #25STAA $D400CMP #30BNE 03ASR $D450PSHALSR $D451PULLALDAA $D430ORAA $78STAA $D457LDAB #$56DECBBRA 8F
2LDAA #$7FLDAB D400ABABNE 03EOR $D490STAA $D4E0LSR $D451BRA E0
SOM SOM SOM
RTI
NMI
RTINMI
RTI
NMI
RTI
NMI
TAREA 1 TAREA 1TAREA 2 TAREA 2
Dos tareas operando:
El Timer produce un flanco a los 5ms generando una NMI
El Timer produce un flanco a los 2ms generando una NMI
El Timer produce un flanco a los 2ms generando una NMI
El Timer produce un flanco a los 5ms generando una NMI
Timer
uP6800
NMIOutD7-D0
tiempo
C000: C000: C000: C000:
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
Programa SOM
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
Programa SOM
Sistemas Digitales 2014 FIUNMDP
Se prepara una tabla en la RAM del SOM para almacenar los SP de cada una de las 8 tareas.
Programa de Inicialización (S.O.M.)
RAM de SOM
dir dato
F000 SP tarea 1 parte alta
F001 SP tarea 1 parte baja
F002 SP tarea 2 parte alta
F003 SP tarea 2 parte baja
… …
F00E SP tarea 8 parte alta
F00F SP tarea 8 parte baja
E000E7FFE800EFFFF000F7FFF800FFFFROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 1ROM de Tarea 1
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea 1
RAM de Tarea 12k
2k
4k
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
Programa SOM
Sistemas Digitales 2014 FIUNMDP
La primera vez todas las tareas arrancan desde el stack del programa monitor. Se completan todos los SP con el mismo valor = F0FF
Inicializa Stack de tareas temporario:
RAM de SOM
dir dato
F000 F0 SP tarea 1 parte alta
F001 FF SP tarea 1 parte baja
F002 F0 SP tarea 2 parte alta
F003 FF SP tarea 2 parte baja
… … …
F00E F0 SP tarea 8 parte alta
F00F FF SP tarea 8 parte baja
RAM de SOM
Zona inicial de stack de
tareas
dir dato
F0FF libre SP tarea inicial
F100 CCR
F101 AccB
F102 AccA
F103 IX parte alta
F104 IX parte baja
F105 C0 PC parte alta
F106 01 PC parte baja
F000F7FFRAM de SOM2k
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
$MCT=0 ; en zona RAM de SOM
Programa SOM
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
LDX #$EFFE
Programa SOM
Sistemas Digitales 2014 FIUNMDP
Usa el IX para moverse en esta tabla.Inicializa el IX con el valor $EFFE que es F000-2, porque va incrementando de a dos el IX porque cada puntero de SP ocupa dos lugares.
Inicializa puntero a SP de tareas:
RAM de SOM
dir dato
EFFE
EFFF
F000 SP tarea 1 parte alta
F001 SP tarea 1 parte baja
F002 SP tarea 2 parte alta
F003 SP tarea 2 parte baja
… …
F00E SP tarea 8 parte alta
F00F SP tarea 8 parte baja
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
INC $MCT $MCT=1 (primera tarea) INX INX IX=F000 (IX apunta al primer
puntero de SP de tarea)
Programa SOM
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
LDAA $MCTCMPA #$08BEQ otra_ronda
otra_ronda:
Ya paso por las 8 tareas, reinicia a la tarea 1.
Programa SOM
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
LDAA $E800 ;lee llaveANDA #$01BEQ otra_tarea
Programa SOM
Sistemas Digitales 2014 FIUNMDP
R/W
CS5A10
A0
E800
CS0
CS1
CS3
CS2
Tarea 3
2Tarea 1
ROM de Tarea 1
E/S de Tarea 1
RAM de Tarea 1
74138 012
34567
G1 G2A G2B
Hab. Tarea 1
Vcc
Hab. Tarea 2Hab. Tarea 3
Hab. Tarea 4
Hab. Tarea 5Hab. Tarea 6
Hab. Tarea 7Hab. Tarea 8
D0D1D2
74373
1D2D3D
1Q2Q3Q
Vcc
Tarea 2
Led indicador de tarea habilitada
Switch hab tarea 1
Puente de seguridad
CD4503B
D0
A11
A12
A13
A15
74138 01234567
G1 G2A G2B2A14
CS0
CS1
CS2
CS3
CS4
CS5
CS6
CS7ROM SOM
RAM SOM
E/S SOM Timer
RAM Tarea n
E/S Tarea n
ROM tarea n
E/S SOM Sel. Tarea
Circuito de Decodificación Lee si esta habilitada la tarea 1:
LDAA $E800
CS5
R/W
A10
A0
E800
ROM tarea n
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
STAA $E800
Programa SOM
Sistemas Digitales 2014 FIUNMDP
CS5
R/W
A10
A0
E800
CS0
CS1
CS3
CS2
Tarea 3
2Tarea 1
ROM de Tarea 1
E/S de Tarea 1
RAM de Tarea 1
74138 012
34567
G1 G2A G2B
Hab. Tarea 1
Vcc
Hab. Tarea 2Hab. Tarea 3
Hab. Tarea 4
Hab. Tarea 5Hab. Tarea 6
Hab. Tarea 7Hab. Tarea 8
D0D1D2
74373
1D2D3D
1Q2Q3Q
Vcc
Tarea 2
Led indicador de tarea habilitada
Switch hab tarea 1
Puente de seguridad
CD4503B
D0
A11
A12
A13
A15
74138 01234567
G1 G2A G2B2A14
CS0
CS1
CS2
CS3
CS4
CS5
CS6
CS7ROM SOM
RAM SOM
RAM Tarea n
E/S Tarea n
ROM tarea n
ROM tarea n
Circuito de Decodificación Selecciona tarea 1:
LDAA #%xxxxx000STAA $E800
CS5
R/W
A10
A0
E800CS5
E/S SOM Sel. Tarea
E/S SOM Timer
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
LDAB $C000; lee 1ra posc de ROM deTarea 1
STAB $E000
Programa SOM
Sistemas Digitales 2014 FIUNMDP
CS5
R/W
A10
A0
E800
CS5
R/W
A10
A0
E800
Tarea 3
2Tarea 1
ROM de Tarea 1
E/S de Tarea 1
RAM de Tarea 1
74138 012
34567
G1 G2A G2B
Hab. Tarea 1
Vcc
Hab. Tarea 2Hab. Tarea 3
Hab. Tarea 4
Hab. Tarea 5Hab. Tarea 6
Hab. Tarea 7Hab. Tarea 8
D0D1D2
74373
1D2D3D
1Q2Q3Q
Vcc
Tarea 2
Led indicador de tarea habilitada
Switch hab tarea 1
Puente de seguridad
CD4503B
D0
74138 01234567
G1 G2A G2B2
CS0
CS1
CS2
CS3
CS4
CS5
CS6
CS7ROM SOM
RAM SOM
E/S SOM Timer
RAM Tarea n
E/S Tarea n
ROM tarea n
ROM tarea n
E/S SOM Sel. Tarea
CS3
CS2
CS0
CS1
Circuito de DecodificaciónUna vez seleccionada la tarea, se puede acceder a la ROM, RAM y E/S de dicha tarea
A11
A12
A13
A15A14
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
LDS 0,x STX $Mx
Programa SOM
Sistemas Digitales 2014 FIUNMDP
Carga el SP con lo que esta en la posición que indica el IX, en la tarea 1 IX=F000.Inicialmente sera SP=F0FF y apunta a zona de RAM del SOM.Pero la próxima vuelta va a tener el SP real que se guardo cuando se interrumpió la tarea, apuntara a zona de RAM de la tarea 1.
IX F000
Queda el SP señalando F0FF cuando venga el RTI se incrementa y carga los registros con los datos iniciales
LDS 0,x
RAM de SOM
dir dato
F000 F0 SP tarea 1 parte alta
F001 FF SP tarea 1 parte baja
F002 F0 SP tarea 2 parte alta
F003 FF SP tarea 2 parte baja
… … …
F00E F0 SP tarea 8 parte alta
F00F FF SP tarea 8 parte baja
Carga SP de tarea N:
RAM de SOM
Zona inicial de stack de tareas
dir dato
F0FF libre SP tarea inicial
F100 CCR_ini CCR
F101 AccB_ini AccB
F102 AccA_ini AccA
F103 IX_hi_ini IX parte alta
F104 IX_low_ini IX parte baja
F105 C0 PC parte alta
F106 01 PC parte baja
Sistemas Digitales 2014 FIUNMDP
Carga el SP con lo que esta en la posición que indica el IX, en la tarea 1 IX=F000.La próxima vuelta va a tener el SP real que se guardo cuando se interrumpió la tarea, apuntara a zona de RAM de la tarea 1.
IX F000
Queda el SP señalando D800 cuando venga el RTI se incrementa y carga los registros con los datos que se guardaron con el NMI
LDS 0,x
RAM de SOM
dir dato
F000 D8 SP tarea 1 parte alta
F001 00 SP tarea 1 parte baja
F002 D8 SP tarea 2 parte alta
F003 11 SP tarea 2 parte baja
… … …
F00E D9 SP tarea 8 parte alta
F00F F0 SP tarea 8 parte baja
STX $Mx
Guarda el IX en una poscision de RAM del SOM para recueprarlo cuando interrumpa la NMI y saber donde guardar el SP de la tarea que se estaba ejecutando:
Carga SP de tarea N:
RAM de Tarea 1
Zona de stack de la
tarea 1
dir dato
D800 libre SP tarea inicial
D801 01 CCR
D802 90 AccB
D803 20 AccA
D804 10 IX parte alta
D805 11 IX parte baja
D806 C0 PC parte alta
D807 06 PC parte baja
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
Programa SOM
Sistemas Digitales 2014 FIUNMDP
Paso de Tarea 1 a S.O.M.
Se ejecuta la Tarea 1 hasta que llega un NMI activado por el Timer:
1) Atención a la NMI: Se termina de ejecutar la instrucción en curso (ej BNE 03) Se guarda el vector de estados en la pila, desde la posición del SP (RAM de la tarea) Bit i=1 Se salta a ejecutar el programa que esta en la dirección guardada en FFFC y FFFD
2
Tarea 8
E000E7FFE800EFFFF000F7FFF800FFFFROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1ROM de Tarea 1
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea 1
RAM de Tarea 12k
2k
4k
5LDS #$D3FFLDAA #25STAA $D400CMP #30BNE 03ASR $D450PSHALSR $D451PULLALDAA $D430ORAA $78STAA $D457LDAB #$56DECBBRA 8F
NMI
Sistemas Digitales 2014 FIUNMDP
Paso de Tarea 1 a S.O.M.
Se ejecuta la Tarea 1 hasta que llega un NMI activado por el Timer:
1) Atención a la NMI: Se termina de ejecutar la instrucción en curso (ej BNE 03) Se guarda el vector de estados en la pila, desde la posición del SP (RAM de la tarea) Bit i=1 Se salta a ejecutar el programa que esta en la dirección guardada en FFFC y FFFD
RAM tarea 1
dir dato
SP= DFFF
2
Tarea 8
E000E7FFE800EFFFF000F7FFF800FFFFROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1ROM de Tarea 1
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea 1
RAM de Tarea 12k
2k
4k
SP cuando interrumpe la NMI
Sistemas Digitales 2014 FIUNMDP
RAM tarea 1
dir dato
82 CCR=82
51 AccB=51
33 AccA=33
0F IX=0F20
20
C0 PC=C00D
SP= DFFF 0D
2
Tarea 8
E000E7FFE800EFFFF000F7FFF800FFFFROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1ROM de Tarea n
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea n
RAM de Tarea n2k
2k
4k
GuardaVectestado
SP cuando interrumpe la NMI
Paso de Tarea 1 a S.O.M.
Se ejecuta la Tarea 1 hasta que llega un NMI activado por el Timer:
1) Atención a la NMI: Se termina de ejecutar la instrucción en curso (ej BNE 03) Se guarda el vector de estados en la pila, desde la posición del SP (RAM de la tarea) Bit i=1 Se salta a ejecutar el programa que esta en la dirección guardada en FFFC y FFFD
Sistemas Digitales 2014 FIUNMDP
RAM tarea 1
dir dato
SP= DFF8
82 CCR=82
51 AccB=51
33 AccA=33
0F IX=0F20
20
C0 PC=C00D
SP= DFFF 0D
2
Tarea 8
E000E7FFE800EFFFF000F7FFF800FFFFROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1ROM de Tarea n
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea n
RAM de Tarea n2k
2k
4k
GuardaVectestado
SP de Tarea 1 final
SP cuando interrumpe la NMI
Paso de Tarea 1 a S.O.M.
Se ejecuta la Tarea 1 hasta que llega un NMI activado por el Timer:
1) Atención a la NMI: Se termina de ejecutar la instrucción en curso (ej BNI 03) Se guarda el vector de estados en la pila, desde la posición del SP (RAM de la tarea) Bit i=1 Se salta a ejecutar el programa que esta en la dirección guardada en FFFC y FFFD
Sistemas Digitales 2014 FIUNMDP
1) Atención a la NMI2) Se transfiere el control al S. O. M.El programa que esta en la dirección guardada en FFFC y FFFD es programa del SOM (zona ROM de SOM)Tiene que guardar el valor del SP de la tarea que se venia ejecutando, para esto tiene zona de RAM de SOM, dos Bytes para cada Tarea.
2
Tarea 8
E000E7FFE800EFFFF000F7FFF800FFFFROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)
Zona de Tareas
2k
2k
2k
2k
Zona de Tareas
Zona de Tareas
Zona de Tareas
Tarea 7Tarea 6
Tarea 5Tarea 4
Tarea 3Tarea 2
Tarea 1ROM de Tarea n
D800
DFFF
D000D7FF
C000
CFFF
E/S de Tarea n
RAM de Tarea n2k
2k
4k
RAM de SOM
dir dato
F000 DF SP tarea 1 parte alta
F001 F8 SP tarea 1 parte baja
F002 F0 SP tarea 2 parte alta
F003 FF SP tarea 2 parte baja
… … …
F00n F0 SP tarea n parte alta
F00n FF SP tarea n parte baja
SP de Tarea 1
Paso de Tarea 1 a S.O.M.
Se ejecuta la Tarea 1 hasta que llega un NMI activado por el Timer:
Sistemas Digitales 2014 FIUNMDP
Atención de la NMI:
LDX $Mx ; Recupero el IX que guarda la dirección de almacenamiento de la tarea 1
STS 0,X
JMP otra_tarea
RAM de SOM
dir dato
F000 DF SP tarea 1 parte alta
F001 F8 SP tarea 1 parte baja
F002 F0 SP tarea 2 parte alta
F003 FF SP tarea 2 parte baja
… … …
F00n F0 SP tarea n parte alta
F00n FF SP tarea n parte baja
$Mx=F0, $Mx+1=00IX= F000
Paso de Tarea 1 a S.O.M.
Se ejecuta la Tarea n hasta que llega un NMI activado por el Timer:
1) Atención a la NMI2) Se transfiere el control al S. O. M.El programa que esta en la dirección guardada en FFFC y FFFD es programa del SOM (zona ROM de SOM)Tiene que guardar el valor del SP de la tarea que se venia ejecutando, para esto tiene zona de RAM de SOM, dos Bytes para cada Tarea.
Sistemas Digitales 2014 FIUNMDP
Inicio
Inicializa tabla de SP de tareas
Inicializa Stack de tareas temporario
Inicializa contador de tareas
Inicializa puntero a SP de tareas
Tarea habilitada?
Incrementa PSP y Contador de tareas
Contador=8?
NO
SI
NO
SI
Carga SP de tarea N
Habilita Pág. de tarea N
Lee tiempo de tarea N
Programa Timer
EjecutaTarea N
NMIGuarda SP de tarea N
en tabla de SP de tareas
RTI
$MCT=0
INC $MCT INX INX
LDAA $E800 ;lee llaveANDA #$01BEQ otra_tarea
LDS 0,x, STX $Mx
STAA $E800
LDAB $C000
STAB $E000
LDX $Mx STS 0,xjmp otra_tarea
LDAA $MCTCMPA #$08BEQ otra_ronda
otra_ronda:
otra_tarea:
LDX #$EFFE
Programa SOM
Sistemas Digitales 2014 FIUNMDP
Sistemas Digitales 2014 FIUNMDP
Mecanismo de transferencia de control de programa con condiciones iniciales:Vector de estado, registros del uP (AccA, AccB, IX, SP, CCR)
M0 82
M1 51
M2 33
M3 0F
M4 20
M5 2B
M6 00
M7 10
M8 0A
LDS $M7 ;SP=100ALDAA $M6PSHALDAA $M5PSHA
...LDAA $M0PSHA
PROGRAMA EL TIMER
RTI
82 CCR=82
51 AccB=51
33 AccA=33
0F IX=0F20
20
2B PC=2B00
100A 00SP
SP RTI
Retoma el control la Tarea n.Se comienza a ejecutar el programa que hay a partir de la posición almacenada (En el ejemplo 2B00)
Para que interrumpa el uP mediante NMI cuando se cumple el tiempo destinado a esa Tarea.
Sistemas Digitales 2014 FIUNMDP
Se prepara una tabla en la RAM del SOM para almacenar los SP de cada tarea. La primera vez todas las tareas arrancan desde el stack del programa monitor.
Programa de Inicialización (S.O.M.)
E000
E7FF
E800
EFFF
F000
F7FF
F800
FFFF
ROM de SOM
RAM de SOM
E/S de SOM (Sel Tarea)
E/S de SOM (Timer)2k
2k
2k
2k
RAM de SOM
dir dato
F000 F0 SP tarea 1 parte alta
F001 FF SP tarea 1 parte baja
F002 F0 SP tarea 2 parte alta
F003 FF SP tarea 2 parte baja
… … …
F00n F0 SP tarea n parte alta
F00n FF SP tarea n parte baja