Sei sulla pagina 1di 9

Sistemas Empotrados y de Tiempo Real

Curso 2014/2015

Examen parcial sobre planificacin, planificabilidad y programacin a bajo


nivel de sistemas empotrados en Ada

5 de Diciembre de 2014

Apellidos, Nombre:
1 (4 puntos) Considera el sistema de tiempo real compuesto por las tareas
siguientes, que utilizan de forma compartida los recursos R1 y R2 como se indica en
la tabla. El sistema se ejecutar en un planificador expulsivo por prioridades fijas y
comparticin de recursos con herencia inmediata del techo de prioridad. Las
tareas con mayor Pi tienen mayor prioridad.

Tarea Prioridad Periodo (Ti ) Cmputo Utiliza Recurso Cmputo


(Pi ) y Plazo (Di ) (Ci )
T1 4 24 ms 7 ms R1 R1 5 ms
T2 3 90 ms 14 ms R2 R2 3 ms
T3 2 120 ms 22 ms R1, R2
T4 1 180 ms 30 ms R2

a) Calcula el techo de prioridad de ambos recursos y los tiempos de bloqueo (Bi)


para las cuatro tareas de este sistema.

TP(R1) = 4 TP(R2) = 3 B4 = 0 B3 = 3 B2 = B1 = 5 + 3 = 8

b) Emplea el test de utilizacin para saber si se puede determinar si el sistema es


planificable o no.

7 14 22 30
U = 1 = + + + = 0,29 + 0,15 + 0,18 + 0,16 = 0,78
24 90 120 180

Para 4 tareas, U0 = 0,756, por lo que no podemos determinar si


el sistema es planificable o no.
c) Calcula el tiempo de respuesta de peor caso para todas las tareas del sistema,
indicando para cada una de ellas si es o no planificable.

Para resolver este apartado, es necesario utilizar la siguiente ecuacin de


recurrencia:

= + () x

Para T1:
R1 = 7 < 24 T1 s planifcable

Para T2:
R2_0 = 14

14
R2_1 = 14 + x 7 = 14 + 7 = 21
24

21
R2_2 = 14 + x 7 = 14 + 7 = 21
24

R2 = 21 < 90 T2 es planificable

Para T3:
R3_0 = 22

22 22
R3_1 = 22 + x 14 + x 7 = 22 + 14 + 7 = 43
90 24

43 43
R3_2 = 22 + x 14 + x 7 = 22 + 14 + 14 = 50
90 24

50 50
R3_3 = 22 + x 14 + x 7 = 22 + 14 + 21 = 57
90 24

57 57
R3_4 = 22 + x 14 + x 7 = 22 + 14 + 21 = 57
90 24

R3 = 57 < 120 T3 es planificable


Para T4:
R4_0 = 30

30 30 30
R4_1 = 30 + x 22 + x 14 + x 7 = 30 + 22 + 14 + 14 = 80
120 90 24

80 80 80
R4_2 = 30 + x 22 + x 14 + x 7 = 30 + 22 + 14 + 28 = 94
120 90 24

94 94 94
R4_3 = 30 + x 22 + x 14 + x 7 = 30 + 22 + 28 + 28 = 108
120 90 24

108 108 108


R4_4 = 30 + x 22 + x 14 + x 7 = 30 + 22 + 28 + 35 = 115
120 90 24

115 115 115


R4_5 = 30 + x 22 + x 14 + x 7 = 30 + 22 + 28 + 35 = 115
120 90 24

R4 = 115 < 180 T4 es planificable

2 (4 puntos) Se nos ha encargado escribir un paquete Ada que implemente


la interfaz para el movimiento de los 3 ejes de una impresora 3D. Cada uno de los
tres ejes, X, Y y Z, se puede mover por medio de un motor bidireccional de
corriente continua con 8 niveles posibles de velocidad, desde 0 hasta 7 (a
mayor nmero, mayor velocidad). El movimiento de los ejes se consigue a
travs del registro de control de la impresora 3D, que tiene el siguiente formato:

Figura 1: Registro de control de la impresora 3D

Cada motor est dotado de un codificador de posicin absoluta, que permite saber
en qu punto se encuentra cada eje. La posicin absoluta se codifica mediante un
nmero natural de 14 bits. El hardware de la impresora mantiene tres registros de
16 bits actualizados con la posicin de cada eje en todo momento. La estructura de
estos registros es la siguiente:

Figura 2: Estructura de los registros de estado StatusX, StatusY y StatusZ


El fragmento de cdigo siguiente corresponde a la especificacin del paquete
Three_D_Printer, para actuar sobre la impresora:

package Three_D _Printe r is


type Speed_T ype is range 0 ..7;
type Axis_Typ e is (X,Y, Z);
type Directio n_Type is (C W, CCW) ;
type Positio n_Type is r ange 0..2 *14 - 1;

procedure Mov e_Print er (Axis : in Axi s_Typ e;


Dir : in Direct ion_ Type;
Speed : in Spee d_Typ e);
function Get_P os (Axis: in Axis _Type) ret urn Posi tion_ Type;

private
------- ---- ----- -
-- A completa r --
------- ---- ----- -
end Three _D_Pr inte r;

En l se definen tipos para representar los 8 niveles de velocidad (Speed_Type),


los ejes a controlar (Axis_Type), la direccin de movimiento (Direction_Type)
y la posicin absoluta de los ejes (Position_Type).
a) Completa la parte privada de la especificacin de Three_D_Printer,
incluyendo las clusulas de representacin y tamao necesarias para los tipos
declarados. Buscamos que los tamaos y la codificacin de los tipos sea acorde con
lo definido en las figuras 1 y 2.

private
for Speed_TypeSize use 3;
for Axis_TypeSize use 2;
for Direction_TypeSize use 1;
for Position_TypeSize use 16;
for Axis_Type use (
X => 2#01#,
Y => 2#10#,
Z => 2#11#);

for Direction_Type use (cw => 0, ccw => 1);

end Three D Printer;

Ya en el cuerpo de Three_D_Printer se define el tipo CR_Type (Control Register


type) como un record que mapea el registro de control de la impresora. A partir de
este tipo, se define la variable CReg, que servir para mapear el registro de control.
Sabemos que a direccin del registro de control en memoria es la 16#2000_0000#.

with Sy stem. Stora ge_El emen ts;


use System. Stor age_E lemen ts;

package body Three _D_Prin ter is

type CR_Type i s
record
Dir : Direc tion_ Type;
Speed : Speed_ Type ;
Axis : Axis _Type ;
end rec ord;
------- ---- ----- ----- ----- ----- ---- ----- ----- ----- ----- ---- -----
-- Aadir clus ulas de repr esentac in necesa rias para CR _Type --
------- ---- ----- ----- ----- ----- ---- ----- ----- ----- ----- ---- -----

CReg : CR_Ty pe;


------- ---- ----- ----- ----- ----- ---- ----- ----- ----- ----- ---- --
-- Aadir clus ulas de rep resentac in neces arias par a CReg --
------- ---- ----- ----- ----- ----- ---- ----- ----- ----- ----- ---- --
...
b) Escribe las clusulas necesarias para el tipo CR_Type y la variable CReg. La
ordenacin de bits en la plataforma es little endian.

for CR_Type use record


dir at 0 range 0..0;
speed at 0 range 2..4;
axis at 0 range 6..7
end record;
for CR_TypeSize use 8;
for CR_TypeBit_order use System.Low_Order_First;

Siguiendo en el cuerpo de Three_D_Printer, tras las declaraciones asociadas al


registro de control, se declara el tipo Status_Reg_Type para representar los tres
registros de estado. Para ello se disponen los tres registros en un array indexado
mediante el rango del enumerado Axis. Sabemos que los registros de estado
ocupan posiciones de 16 bits correlativas a partir de la direccin 16#2000_0002#.

...
type St atus_Re g_Type is array (Ax is_Type 'Range) of Po sitio n_Typ e;
------- ---- ----- ----- ----- ----- ---- ---
-- Clusula(s ) para Status_ Reg_Typ e --
------- ---- ----- ----- ----- ----- ---- ---

Status: Sta tus_R eg_Ty pe;


------- ---- ----- ----- ----- ---
-- Clusula( s) para Stat us --
------- ---- ----- ----- ----- ---

c) Completa las clusulas necesarias para Status_Reg_Type y la variable Status.


for Status_Reg_TypeComponent_Size use 16;
status : Status_Reg_Type;
for statusSize use 16 * 3; -- Array de 3 componentes de 16 bits cada uno
for statusAddress use To_Address(16#2000_0002#); -- Dir 1er elemento del array
pragma volatile(status); -- Evita que status se guarde en registros de la CPU
for status Bit_order use System.Low_Order_First; -- Ordenacin de bits little endian
d) Implementa el subprograma Move_Printer, que debe trasladar la informacin suministrada
en sus parmetros al registro de control de la impresora, y la funcin Get_Pos, que debe devolver
la posicin del eje que se le indica como parmetro.

procedure Move_Printer (Axis : in Axis_Type;


Dir : in Direction_Type; Speed : in Speed_Type) is
begin
CReg.Axis := Axis;
CReg.Dir := Dir;
CReg.Speed := Speed;
end Move_Printer;

function Get_Pos (Axis: in Axis_Type) return Position_Type is


begin
status(Axis);
end Get_Pos;
3 (2 puntos) Se tiene un sistema formado por dos tareas independientes que se
pretende planificar mediante EDF. Las tareas tienen los siguientes parmetros:

Tarea Periodo (Ti ) Plazo (Di ) Cmputo (Ci )


T1 5 3 ms 2 ms
T2 8 6 ms 4 ms

a) Es planificable este sistema bajo EDF? Justifica tu respuesta con los clculos
que sean necesarios.

Para que el sistema sea planificable bajo EDF, se debe cumplir que U = 1 <=1

2 4
U = + = 0,9
5 8

Conclusin: 0,9 <= 1 por lo que este sistema es planficable bajo


EDF.

b) Dibuja el cronograma de ejecucin de estas dos tareas a partir de su instante


crtico para los primeros 14 milisegundos. Indica en el cronograma los instantes de
activacin y sus correspondientes plazos. Usa el convenio grfico de la siguiente
figura para significar esos instantes.

Activacin
Ejecucin Plazo

T1

T2

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Potrebbero piacerti anche