lunes, octubre 02, 2006

[Embedded] PICos18

En esta entrada voy a realizar una introducción sobre el RTOS PICos18. En su mayor parte es una traducción del documento "PICos18_tuto_us.pdf"[1] que se puede encontrar en su página. Empecemos:

PICos18: Un kernel (ntd: núcleo) en tiempo real para el PIC18

Con la vieja familia de PIC16 no era posible crear tal kernel con los micros PIC. De hecho la principal característica de un kernel multitarea es ejecutar juntas diferentes tareas, esto significa que necesitamos controlar la pila (ndt: stack) de llamadas a función. Imagina que podría suceder si todas las tareas presentes en el sistema comparten la misma pila: el kernel pararía la tarea actual para activar otra tarea y en la próxima instrucción RETURN el puntero de direcciones saltaría a la primera tarea donde la anterior tarea fue parada (nota del traductor: la familia PIC16 tiene una pila en hardware de 8 niveles y no se puede modificar su puntero a otra área de la memoria. Tampoco tiene las clásica instrucciones de PUSH y POP de manejo de la pila)

El PIC18 puede manejar la dedicada pila en hardware para las llamadas de función (gracias a las instrucciones PUSH y POP y la libertad de mover el puntero de pila (ntd: stack pointer)), por lo tanto es ahora posible poner la pila en un estado apropiado antes de saltar a la nueva tarea.

Esto fue solamente necesario para definir la lista de los servicios del kernel y como el kernel maneja las tareas y los recursos. En vez de diseñar el kernel como una solución propietaria, la compañia Pragmatec decidió basar el kernel en el estandar OSEK/VDX.

El estandar OSEK/VDX

PICos18 está basado en el estandar OSEK-VDX.
OSEK-VDX es un amplio proyecto de la industria del automovil soportado por casi todos los fabricantes de automóviles de Francia y Alemania. El objetivo del proyeto es definir un estandar para el control y proceso de arquitecturas inmersas (ndt: embedded) en los vehículos modernos. Los vehículos actuales pueden usar hasta 30 calculadoras (ndt: calculators) (control del motor, computadora de abordo, controladores de puerta, ABS, ESP...) que transfieren datos a través de una red global (buses CAN, VAN, LIN, MOST)

Describir la manera que esas calculadoras trabajan todas juntas es:
  • Definir la misma plataforma de desarrollo, los mismos procesos de desarrollo y los mismo procesos de validación
  • Especificar un lenguaje común para los fabricantes, subcontratistas y terceras partes
  • Usar una arquitectura común para las secuencias de desarrollo, validación e integración de un proyecto
El término OSEK significa "Offene Systeme und deren Schnittstellen für die Elektronik Im Kraftfahrzeug" (Sistema abierto e interfaces relacionadas para la electronica del automovil inmersa (ntd: que fea me quedó la traducción si alguien la hace mejor que me contacte)) El término VDX significa "Vehicle Distributed eXecutive" (Ejecución distribuida en el vehículo).

Los estandar del sistema operativo OSEK está ahora incluidos en VDX.

Hoy en día este estandar es usado en las industrias del automovil y robótica y define las características del kernel alrededor de 3 ejes: Systema Operativo (Operative System - OS), Comunicación (Communication - COM) y manejo de red (Network Managment - NM). En este momento solo las especificaciones del Sistema Operativo han sido implementadas en PICos18.

El estandar OSEK-VDX es realmente apropiado para el kernel del PIC18. Una aplicación de PICos18 está compuesta de muchas tareas simbolizadas por circulos en el siguiente gráfico.


La mayor característica es que solo una tarea puede tener acceso al PIC18 para ejecutarse (más precisamente al procesador, a la memoria RAM y a la pila)

Para decidir que tarea es permitida ejecutarse en un cierto tiempo el kernel PICos18 inspecciona todas las tareas de la aplicación y elije la tarea en el estado ready (ntd: los estados los voy a dejar en ingles. En este caso significa preparado) con más alta prioridad.

Después de ser activada una tarea puede esperar por un evento específico y luego caer dormida (ntd: sleep) temporalmente para permitir a otra tarea con menor prioridad ejecutarse. Cuando el evento sea detectado, el kernel despertará la tarea previamente puesta en estado de espera.

Los diferentes estados de una tarea de PICos18 son: READY, SUSPENDED, WAITING y RUNING.

Características del PICos18

El kernel PICos18 está compuesto de diferentes capas:


  • El kernel core (Init + Scheduler + Task Manager) es el encargado de manejar las tareas presentes en la aplicación y por lo tanto decide la póxima tarea a activar en función del estado y las prioridades de las tareas
  • El alarm and counter manager (Alarm Manager) . Adjuntado al kernel core, usa la interrupción del TIMER0 para actualizar periódicamente las alarmas y contadores usados por la aplicación
  • Las Hook routines están parcialmente incluidas en el kernel core y deja al desarrollador tomar control de los procesos del kernel durante un corto tiempo para debug (búsqueda de errores) de la aplicación por ejemplo
  • El task manager (Process Manager) es un conjunto de servicios del kernel que propone la función necesaria para manejar el estado de la tarea (para cambiar el estado de la tarea, encadenar dos atreas, activar una tarea...)
  • El event manager (Event Manager) es un conjunto de servicios del kernel que propone la función necesaria para manejar los eventos en espera o anunciado por/hacia una tarea (esperar un evento, anunciar un evento, limpiar un evento, leer un conjunto de eventos recividos...)
  • El interrup manager (INT Manager) es un conjunto de servicios del kernel para activar o desactivar las interrupciones (interrupciones high y low)
PICos18 es un kernel modular lo que representa que el acceso a los perisfericos del PIC18 (drivers, manejador del sistemas de archivos, etc.) son escritos como tareas independientes del kernel.

Luego es porsible personalizar la aplicación PICos18 usando diferentes capas de software (diferentes capas y librerías como las propuestas por Pagmatec) par obtener algo específico, rápido y facil de diseñar.

Bueno, la próxima entrada seguiré con la traducción.

Saludos

Martín

Etiquetas:

4 Comments:

At 2:23 a. m., Anonymous Anónimo said...

Autopropaganda sin ningun tipo de verguenza:

http://sourceforge.net/projects/picix/

Saludos,

Alfred

 
At 12:13 a. m., Anonymous Anónimo said...

uh.. funny style.

 
At 6:56 p. m., Anonymous Anónimo said...

Predilection casinos? okay this astute [url=http://www.realcazinoz.com]casino[/url] captain and unauthentic online casino games like slots, blackjack, roulette, baccarat and more at www.realcazinoz.com .
you can also into our brazen [url=http://freecasinogames2010.webs.com]casino[/url] orientate at http://freecasinogames2010.webs.com and away from existent incredibly furiously !
another capture out [url=http://www.ttittancasino.com]casino spiele[/url] conspire is www.ttittancasino.com , because german gamblers, make magnanimous online casino bonus.

 
At 5:43 a. m., Anonymous Anónimo said...

limit in well-organized this without charge or elementary [url=http://www.casinoapart.com]casino[/url] hand-out at the greatest [url=http://www.casinoapart.com]online casino[/url] criterion with 10's of late-model [url=http://www.casinoapart.com]online casinos[/url]. unambiguous [url=http://www.casinoapart.com/articles/play-roulette.html]roulette[/url], [url=http://www.casinoapart.com/articles/play-slots.html]slots[/url] and [url=http://www.casinoapart.com/articles/play-baccarat.html]baccarat[/url] at this [url=http://www.casinoapart.com/articles/no-deposit-casinos.html]no palm in fluff casino[/url] , www.casinoapart.com
the finest [url=http://de.casinoapart.com]casino[/url] against UK, german and all exceptional the world. so in unmoving of the insigne [url=http://es.casinoapart.com]casino en linea[/url] run out of steam us now.

 

Publicar un comentario

<< Home