Descarga este documento en formato PDF - Ucontrol
Descarga este documento en formato PDF - Ucontrol
Descarga este documento en formato PDF - Ucontrol
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
5 de 22<br />
facultad de quitarle el procesador y dárselo a otro si usted se ha excedido <strong>en</strong> su tiempo o hay algui<strong>en</strong> que ti<strong>en</strong>e<br />
mayor prioridad.<br />
En cuanto al destino hay unas cuantas clasificaciones pero me voy a conc<strong>en</strong>trar <strong>en</strong> los RTOS. Un RTOS<br />
(Sistema Operativo de Tiempo Real) es un sistema operativo concebido para dispositivos pequeños como los<br />
uC. Aunque el concepto de "tiempo real" es muy controversial, la idea es ejecutar determinadas tareas de<br />
forma que parece que cada tarea se está ejecutando <strong>en</strong> un sistema indep<strong>en</strong>di<strong>en</strong>te, donde el procesador y el<br />
resto de los recursos son sólo para ella.<br />
Los RTOS pued<strong>en</strong> ser utilizados también para computadoras grandes, pero la idea sigue si<strong>en</strong>do la misma,<br />
ejecutar las tareas cumpli<strong>en</strong>do estrictam<strong>en</strong>te con los requisitos temporales de cada una, sin violaciones de<br />
ninguna índole. Otro caso de SO, son los de propósito g<strong>en</strong>eral como UNIX, LINUX, Windows, <strong>en</strong> <strong>este</strong> caso a<br />
difer<strong>en</strong>cia de los RTOS, las tareas cambian de prioridades <strong>en</strong> función de satisfacer las exig<strong>en</strong>cias de los<br />
humanos que actúan como usuarios, no importa si algunas cosas se ejecutan o no cumpli<strong>en</strong>do tiempos<br />
estrictos.<br />
En la próxima <strong>en</strong>trega ya t<strong>en</strong>dremos código para ejecutar y ver como funciona un RTOS.<br />
[Volver al Índice]<br />
> Introducción al RTOS de CCS<br />
Después de teorizar un poco sobre los Sistemas Operativos, vamos a introducirnos <strong>en</strong> la programación de<br />
aplicaciones empleando un RTOS.<br />
En nuestro caso, para com<strong>en</strong>zar, utilizaremos el RTOS que vi<strong>en</strong>e con el compilador de CCS. Las razones de mi<br />
elección las expongo a continuación:<br />
- S<strong>en</strong>cillez <strong>en</strong> la implem<strong>en</strong>tación de aplicaciones.<br />
- El RTOS está integrado <strong>en</strong> el propio compilador de CCS.<br />
- Abundante experi<strong>en</strong>cia <strong>en</strong> el foro con <strong>este</strong> compilador.<br />
- Gran cantidad de dispositivos soportados por el compilador de CCS.<br />
La versión del compilador que t<strong>en</strong>go instalada <strong>en</strong> estos mom<strong>en</strong>tos es la 3.249, así que si <strong>en</strong> versiones<br />
posteriores han aparecido nuevas características, les ruego que lo inform<strong>en</strong> para tomar las debidas<br />
provid<strong>en</strong>cias <strong>en</strong> el mom<strong>en</strong>to oportuno, y com<strong>en</strong>zar a utilizar esas nuevas características.<br />
El RTOS de CCS es un Sistema Operativo de Tiempo Real que implem<strong>en</strong>ta la técnica de multiprocesami<strong>en</strong>to<br />
cooperativo (non preemptive), por lo que es responsabilidad del programador asegurarse de que el control del<br />
procesador retorna al planificador de tareas <strong>en</strong> algún mom<strong>en</strong>to. Así que cuando programemos nuestra<br />
aplicación, t<strong>en</strong>emos que asegurarnos de que no llamamos a una función que se queda esperando por algún<br />
ev<strong>en</strong>to largo como es el caso de gets(), o d<strong>en</strong>tro de un lazo infinito o demasiado ext<strong>en</strong>so.<br />
Planificador de tareas<br />
Uno de los elem<strong>en</strong>tos fundam<strong>en</strong>tales de cualquier SO es el planificador de tareas, éste señor es el<br />
administrador de nuestros recursos. Su misión fundam<strong>en</strong>tal es determinar d<strong>en</strong>tro de las tareas que están listas<br />
para ejecutarse, a cuál de ellas le <strong>en</strong>trega el procesador. La política de planificación empleada por CCS no la<br />
conozco, pero eso no importa porque el RTOS funciona y para lo que queremos hacer, nos sirve bi<strong>en</strong>.<br />
Directivas del preprocesador<br />
Exist<strong>en</strong> dos directivas del preprocesador para el uso del RTOS, ellas son:<br />
#USE RTOS: Se utiliza para indicarle al compilador que se va a utilizar el RTOS<br />
#TASK: Se utiliza para indicarle al compilador se la función definida a continuación es una tarea a ejecutar por<br />
el RTOS<br />
Vamos a ver más det<strong>en</strong>idam<strong>en</strong>te cada una de las directivas, así como sus parámetros de configuración:<br />
#USE RTOS : Opciones del RTOS:<br />
timer: especifica que temporizador, de los disponibles, es el que se utilizará para la ejecución de las tareas.<br />
Este temporizador solam<strong>en</strong>te debe ser utilizado por el RTOS y típicam<strong>en</strong>te se escoge Timer0.<br />
minor_cycle: especifica la cantidad de tiempo mínima que una tarea t<strong>en</strong>drá para ejecutarse, y los tiempos de<br />
ejecución de cada tarea deb<strong>en</strong> ser múltiplos de esta cantidad. Si por ejemplo decimos que el tiempo mínimo de<br />
ejecución para todas las tareas es de 1ms, debemos conocer que cada tarea se ejecutará, <strong>en</strong> m<strong>en</strong>os tiempo<br />
que <strong>este</strong>. Lo realm<strong>en</strong>te importante de <strong>este</strong> dato es que ayuda a establecer la frecu<strong>en</strong>cia con que se ejecutan<br />
las tareas, luego veremos un ejemplo de esto. Este parámetro, si no se especifica, es calculado por el<br />
compilador <strong>en</strong> el mom<strong>en</strong>to de la compilación.<br />
statistics: le indica al compilador que lleve las estadísticas de las tareas, esto sirve para conocer que tiempo