Supernito / dick4arduino

DICK simple real-time kernel for arduino made by 2013 OS dessign class at Universitat de les Illes Balears.
1 stars 2 forks source link

Inicializar variables de tiempo #27

Open Risvil opened 11 years ago

Risvil commented 11 years ago

Hay que inicializar las variables relacionadas con tiempo. Las más importantes son sys_clock y time_unit. tick ya está inicializado, y el resto de variables parece que solo se utilizaban en el código de ejemplo. Hay que determinar si siguen siendo necesarias.

Los valores que deberían tomar las variables a inicializar son:

sys_clock = 0

Según la documentación: time_unit = (time / tick), aunque le daría el valor de 1, porque sirve como escalado para los cálculos de tiempos, y no parece que nos haga falta realmente. Por lo tanto,

time_unit = 1

Inicializarlas dentro de ini_system().

texter commented 11 years ago

sys_clock si que tiene que valer 0 al iniciar la maquina puesto que es la variable que utiliza el S.O. como clock, pero que time_unit=1 no lo veo tan claro.

También tengo que decir que tampoco entiendo, time_unit = (time / tick)

Risvil commented 11 years ago

time_unit solo sirve para escalar los tiempos. Solo se usa en la función create, en este trozo:

vdes[p].period = (int)( period / time_unit );
vdes[p].wcet = (int)( wcet / time_unit );

con intención de escalar el periodo y el deadline para que coincida con las unidades de tiempo que nos interesa considerar. Si time_unit=1, tendríamos que:

vdes[p].period = period;
vdes[p].wcet = wcet;

conservando los tiempos originales que hayamos definido.

De todas formas, se puede investigar un poco más si por alguna razón fuese interesante cambiar las unidades de medida del tiempo, aunque lo veo algo con muy poca prioridad teniendo en cuenta todo lo que hay que hacer y que nos quedan 5 días para terminarlo.

Siempre se puede dejar a 1 (solución rápida y fácil) y abrir una tarea para que no se pierda en el olvido una futura investigación si avanzamos mucho y nos basta el tiempo.