Vous êtes sur la page 1sur 8

IEEE-RITA Vol. 4, Nm. 1, Feb.

2009

45

Curso de Programacin de Sistemas Embebidos con Statecharts


Mariano Barrn Ruiz

TitleCourse of Programming Embedded Systems with StateCharts. Abstract Statecharts is a visual formalism for specifying behavior of complex systems. This document details the method for designing embedded systems with statecharts, used in the course of Development with Microcontrollers of the degree of Electronic Engineering. The article includes an example of simple design with statecharts and describes the organization, content, methodology and tools used in our University. Index Terms Engineering education, Finite state machines, Microcontrollers, Statecharts, UML.

I. INTRODUCCIN N sistema de control recibe en sus entradas una serie de estmulos del proceso a controlar y produce acciones en sus salidas que afectan adecuadamente al mismo proceso. Si los valores actuales de las entradas son suficientes para determinar los valores de las salidas, estamos ante un sistema transformacional o sistema que transforma unos valores de entrada en otros valores de salida; sin embargo, la mayor parte de los sistemas de control no son de naturaleza transformacional sino reactiva [1], [2]. El trmino reactivo se aplica a sistemas que estn en continua interaccin con su entorno, que responden a los estmulos externos cuando estos se producen y cuyo comportamiento viene determinado por el orden de llegada de los mismos. Constituyen ejemplos de sistemas reactivos: los cajeros automticos, los sistemas de reservas de vuelos, los sistemas embebidos en aviones y automviles, los sistemas de telecomunicaciones, los sistemas de control, etc. En la mayora de las aplicaciones de control, el clculo de los valores de las salidas requiere el conocimiento de los valores actuales de las entradas y tambin el de algunas secuencias de cambios producidos en las entradas, es decir, el conocimiento del presente y de parte del pasado o historia del sistema. Para almacenar la historia de un sistema se utiliza el concepto de estado, y a la parte del sistema de control responsable del comportamiento del mismo se le denomina mquina de estados. Existen varios mtodos para describir el
Mariano Barrn, Departamento de Ingeniera de Sistemas y Automtica, Universidad del Pas Vasco, 20600 Eibar (Guipzcoa), Espaa, (Telfono: 34943033035, e-mail: mariano.barron@ehu.es). DOI (Digital Object Identifier) Pendiente

comportamiento de sistemas complejos, los ms conocidos son las mquinas de estados finitos, las redes de Petri y los Statecharts y todos ellos utilizan el concepto de estado para describir la situacin actual del sistema [3]. No se debe confundir las mquinas de estados con los diagramas de flujo o flowcharts, que fueron introducidos para describir el flujo de los programas y/o secuencias de actividades condicionales. Cuando se utilizan los flowcharts como elementos de programacin, el pasado de las entradas se almacena en flags, o se detallan todos los flujos de control imaginables, debido a que los flowcharts ignoran el concepto de estado. Un flowchart es una herramienta til para explicar conceptos a otras personas, para documentar programas e incluso para crear pequeas aplicaciones de sistemas transformacionales, pero en general no son apropiados para describir el comportamiento de sistemas reactivos. A pesar de la limitacin apuntada, en la actualidad existe una amplia oferta de software de programacin grfica con flowcharts, dirigida principalmente a programadores con poca experiencia. Varios de estos programas permiten la simulacin y generan cdigo fuente para microcontroladores PIC en lenguaje ensamblador: Niple [4], CoreChart [5], o en Basic: Picaxe [6]. Quizs el software de este tipo ms completo y elaborado sea Flowcode [7], pues soporta actualmente a las familias de micro-controladores PIC, AVR y ARM, permite simular los programas, genera cdigo C o ensamblador y est disponible en ms de 20 idiomas. Una mquina de estados es un modelo computacional, basado en la teora de autmatas, que se utiliza para describir sistemas cuyo comportamiento es funcin de los eventos actuales y de los eventos que ocurrieron en el pasado. En cada instante de tiempo la mquina se encuentra en un estado, y dependiendo de las entradas, actuales y pasadas, que provienen del ambiente, la mquina cambia, o no, de estado pudiendo realizar acciones que a su vez influyen en el ambiente. Las mquinas de estados finitos permiten expresar las especificaciones de forma clara y sin ambigedades, facilitando la deteccin temprana de algunas clases de errores y omisiones, razones por las cuales la International Electrotechnical Commision, en su estndar IEC 61508, recomienda de forma explcita su empleo como un mtodo de diseo apropiado para lograr niveles de seguridad SIL3 (Safety Integrity Level 3) y superiores en sistemas conducidos por eventos.

ISSN 1932-8540 IEEE

46

IEEE-RITA Vol. 4, Nm. 1, Feb. 2009

Las mquinas de estados tradicionales son una excelente herramienta de diseo, pero su utilidad disminuye cuando se aplica a problemas de elevada complejidad. En 1987 David Harel [8], [9] propuso una amplia extensin al formalismo convencional de las mquinas y diagramas de estados a la que denomin statecharts. El trmino, segn palabras de su autor, fue elegido por ser una combinacin no utilizada de las palabras flow o state con diagram o chart. El objetivo principal del nuevo formalismo visual era, y lo sigue siendo, modelizar o permitir la descripcin de sistemas reactivos cuyo comportamiento puede llegar a ser tan complejo como para que la plasmacin de sus especificaciones resulte muy difcil y propensa a errores. Los statecharts extienden los diagramas de transicin de estados convencionales con tres elementos principales: jerarqua, concurrencia y comunicacin. El uso de jerarquas permite tratar los sistemas con diferentes niveles de detalle; la concurrencia, tambin llamada ortogonalidad y paralelismo, posibilita la existencia de tareas independientes entre si o con escasa relacin entre ellas, y la comunicacin hace viable que varias tareas reaccionen ante un mismo evento o enven mensajes hacia otras tareas. Los statecharts de David Harel se han popularizado considerablemente desde que una variante de los mismos se ha convertido en uno de los diagramas utilizados por UML (Unified Modeling Language) [10], para describir el comportamiento de sistemas o de modelos abstractos. UML considera los diagramas grficos como vistas o representaciones parciales del modelo de un objeto; los diagramas de UML representan tres vistas distintas del modelo: la vista de sus necesidades funcionales, la vista de su estructura y la vista de su comportamiento. La versin 2.0 de UML contempla el uso de hasta 13 tipos de diagramas que enfatizan la estructura, el comportamiento y la interaccin entre las partes de un sistema. II. HERRAMIENTAS UML STATECHART PARA EL DISEO DE SISTEMAS EMBEBIDOS Aunque es posible modelizar sistemas reactivos sin la ayuda de herramientas CASE, tal como propone el autor Miro Samek [11], lo cierto es que estas herramientas facilitan el trabajo y aportan otros aspectos importantes como: sus cmodos interfaces grficos; la posibilidad de disponer rpidamente de un modelo claro y ejecutable que permita la simulacin temprana del comportamiento del sistema; la verificacin funcional del modelo; la generacin automtica de cdigo fuente; la generacin automtica de documentacin; el seguimiento del grado de cumplimiento de las especificaciones, etc. Son numerosas las herramientas comerciales [12], [13], [14] disponibles tales como Rational Rose o Telelogic Rhapsody, as como las herramientas libres o incluso herramientas open source como IntelliWizard [15]. Una herramienta comercial especialmente adaptada al diseo de estos sistemas es visualSTATE [16] de la compaa sueca IAR Systems dedicada a la creacin de software para

desarrollo de sistemas embebidos que soporta diferentes familias de microcontroladores. Aunque visualSTATE no es una herramienta UML, ya que slo contempla el uso de los diagramas statecharts, es la herramienta seleccionada por nosotros para introducir los statecharts en el diseo de sistemas embebidos. Las razones que justifican su eleccin son: su sencillez de uso, su eficiencia y la disponibilidad de una versin demo con toda la funcionalidad de la versin comercial, pero limitada a 20 estados, que resultan suficientes para su utilizacin con fines docentes. La sencillez de uso se debe a que no exige aprender los 13 diagramas soportados por UML 2.0 sino que basta con aprender un solo diagrama, el de los statecharts. La eficiencia se debe a la capacidad de visualSTATE para generar cdigo muy compacto, de tamao considerablemente menor que el generado por otras herramientas UML. El cdigo generado por visualSTATE es tan compacto que sistemas de baja y mediana complejidad pueden alojarse perfectamente en microcontroladores de 8 bits provistos de tan solo 2 Kbytes de memoria de cdigo. En el lado negativo debemos anotar, entre otros aspectos, que la herramienta no soporte la fase de anlisis, que no proporcione diagramas estructurales, que no permita modelizar sistemas de tiempo real y que tampoco incluya un seguimiento de las especificaciones de los sistemas. III. CARACTERSTICAS DE IAR VISUALSTATE IAR visualSTATE es un entorno grfico para diseo, verificacin e implementacin de sistemas embebidos basados en mquinas de estados jerrquicas o statecharts. Entre sus caractersticas destacan: Un entorno de desarrollo integrado que incluye un editor grfico, herramientas de verificacin y simulacin, un generador automtico de cdigo C y/o C++, y un generador automtico de documentacin. Diseo grfico de mquinas de estados jerrquicas basado en el subconjunto UML-Statechart. Verificacin formal o matemtica del modelo para hallar propiedades no deseadas del diseo tales como: estados sin salida, estados inalcanzables, etc. Herramienta de simulacin o validacin que permite, desde las primeras etapas del diseo, verificar que la aplicacin se comporta de la forma deseada. Generador automtico de cdigo C/C++. IAR visualSTATE puede generar cdigo en dos formatos: cdigo legible por humanos o cdigo en formato tabla. El cdigo legible por humanos no es tan compacto como el cdigo en formato tabla, pero ste ltimo requiere un pequeo motor de ejecucin; en ambos formatos el cdigo generado es conforme al 100% con el modelo validado. Generador automtico de documentacin en formato RTF o HTML.

ISSN 1932-8540 IEEE

BARRN RUZ: CURSO DE PROGRAMACIN DE SISTEMAS EMBEBIDOS CON STATECHARTS

47

IV. VENTAJAS DEL DISEO DIRIGIDO POR MODELOS Los statecharts permiten construir modelos grficos que describen con precisin el comportamiento de un sistema. Los modelos creados no tienen ninguna relacin con el lenguaje de programacin que vaya a utilizarse en el desarrollo de la aplicacin, sin embargo, s tienen una relacin muy estrecha con el funcionamiento deseado de la aplicacin. Esta relacin facilita la comunicacin y el intercambio de ideas entre el cliente y el equipo de desarrollo del sistema, con independencia del tipo de formacin que posean los miembros del equipo. Un modelo permite simular y visualizar la aplicacin desde las primeras etapas del diseo sin necesidad de construir un prototipo hardware; esta caracterstica facilita la eliminacin de errores desde el principio. Los programadores deben de cambiar la forma tradicional en la que abordan la tarea de desarrollo de software trasladando su forma de pensar al dominio de la aplicacin y liberndose de las limitaciones impuestas por el lenguaje de programacin utilizado. Si la herramienta de modelado dispone de generadores automticos de cdigo y de documentacin los beneficios son an mayores, ya que los cambios que se realizan y simulan en el modelo se trasladan automticamente al cdigo y a la documentacin, por lo que la propia herramienta se encarga de mantener en todo momento el sincronismo entre el modelo, el cdigo y la documentacin. El hecho de disponer siempre de la documentacin actualizada es de un aspecto de enorme importancia para el mantenimiento de las aplicaciones. V. EJEMPLO DE DISEO CON STATECHARTS En este apartado se describe uno de los primeros ejemplos utilizados en clase para introducir el diseo de sistemas embebidos mediante statecharts. El ejemplo ilustra algunos elementos importantes de los statecharts, aunque no todos, y muestra la nueva metodologa de diseo que, partiendo de las especificaciones, termina generando el firmware para el microcontrolador utilizado. A. Especificaciones del Sistema Se trata de disear el controlador de un sencillo horno microondas provisto de grill, una luz interior, dos pulsadores: Start/Stop y Modo, y un conmutador para monitorizar el estado de la puerta abierta/cerrada. Las especificaciones son las siguientes: 1. La luz interior deber encenderse cuando se abra la puerta y cuando est trabajando el horno o el grill. 2. Un botn Start/Stop servir para conmutar entre los modos de reposo y de funcionamiento. 3. Al abrir la puerta, el horno deber dejar de funcionar. Cuando se cierre la puerta el horno deber regresar al modo de trabajo o reposo en que se encontrara anteriormente. 4. El horno dispondr de un segundo botn Modo para seleccionar el modo de trabajo. Por cada pulsacin de este botn, el modo de trabajo cambiar cclicamente entre: Horno, Grill y Horno + Grill.

5.

Para indicar el modo de trabajo el horno dispondr de tres leds: H, G y H+G

B. Primer paso: Identificar los Eventos y las Acciones Los eventos representan la influencia del ambiente sobre el sistema y sern las entradas a la mquina de estados. En nuestro ejemplo los eventos se muestran en la Tabla I.
TABLA I EVENTOS DEL HORNO MICROONDAS Nombre del Evento: eModo eStartStop ePuertaAbrir ePuertaCerrar Producido cuando el usuario: Pulsa el botn Modo Pulsa el botn Start/Stop Abre la puerta del horno Cierra la puerta del horno

Las acciones representan la influencia del sistema sobre el ambiente y sern las salidas de la mquina de estados. Las acciones se realizan mediante llamadas a funciones escritas en lenguaje C cuyos nombres aparecen en la Tabla II.
TABLA II ACCIONES DEL HORNO MICROONDAS Nombre de la Accin: aLuzOn(void) aLuzOff(void) aLED(unsigned char c) aEnciende(unsigned char c) Trabajo realizado por la accin Enciende la luz interior del horno Apaga la luz interior del horno Enciende el led H si c=1, el led G si c=2, o el led H+G si c =3 Enciende el Horno si c=1, el Grill si c=2, o el Horno y Grill c =3. Apaga Horno y Grill si c=0

C. Segundo paso: Identificar los Estados Un estado es una condicin o situacin durante la vida de un objeto en la que se satisface alguna condicin, se realiza alguna actividad, o se espera algn evento. Los estados pueden identificarse a partir de las especificaciones y del conocimiento del problema. En este

Figura 1. Estados de un horno microondas. La puerta puede estar abierta o cerrada, el horno puede estar cocinando o esperando para cocinar y el modo de trabajo puede ser: solo Horno, solo Grill y Horno + Grill.

ejemplo de diseo, los estados, que se representan por rectngulos con los bordes redondeados, pueden ser los de la figura 1: la puerta puede estar Abierta o Cerrada, el horno

ISSN 1932-8540 IEEE

48

IEEE-RITA Vol. 4, Nm. 1, Feb. 2009

puede estar Cocinando o Esperando y el modo de trabajo puede ser Horno, Grill y Horno_y_Grill. D. Tercer paso: Agrupar por jerarquas En este paso se trata de determinar los estados que tienen un comportamiento dinmico propio y los estados que slo pueden estar activos en ciertas situaciones.

En el ejemplo del horno microondas, se debe poder cambiar el modo de funcionamiento independientemente de que el horno est con la puerta cerrada y cocinando, con la puerta cerrada y esperando para cocinar, o parado con la puerta abierta; este modo de operacin sugiere el uso de dos mquinas concurrentes o paralelas. La concurrencia se representa por regiones separadas por una lnea vertical discontinua como muestra la figura 3. F. Quinto paso: Aadir las transiciones y las acciones Identificar las acciones a realizar y los cambios de estados que se deben producir tras un evento. Las transiciones se representan por flechas dirigidas desde el estado origen hacia el estado destino. La figura 4 muestra la mquina de estados resultante despus de haber aadido las transiciones. El evento eModo dispara la transicin desde el estado Horno hacia el estado Grill, desde el estado Grill hacia el estado Horno_y_Grill, y desde ste ltimo hacia el estado Horno. El evento eStartStop dispara la transicin desde el estado Esperando hacia el estado Cocinando y desde el estado Cocinando hacia el estado Esperando.

Figura 2. Agrupamiento de los estados de un horno microondas. Las situaciones de Horno Esperando para cocinar y Horno Cocinando slo tienen sentido cuando la puerta del horno est cerrada.

El agrupamiento de estados de la figura 2 indica que las situaciones HornoCocinando y HornoEsperando slo tienen sentido si la puerta del horno est cerrada. El estado PuertaCerrada es un estado compuesto (a veces llamado superestado) que tiene dos estados hijo: Esperando y Cocinando. Cuando el horno se encuentre con la puerta cerrada, la mquina podr estar en uno de los dos estados hijo pero no en ambos a la vez. E. Cuarto paso: Agrupar por concurrencia Examinar los estados que pueden estar activos a la vez y organizar el modelo en varias mquinas de estados paralelas.

Figura 4. Statechart obtenido despus de aadir las transiciones. Las lneas que comienzan con las palabras Entry y Exit, dentro de los estados simples, con fondo Amarillo, son reacciones internas que se ejecutan automticamente al entrar al estado o al salir del estado.

Figura 3. Organizacin del Microondas en dos mquinas de estados paralelas. La figura indica que se puede cambiar el modo de funcionamiento aunque el horno est cocinando, esperando para cocinar, o parado con la puerta abierta.

El evento ePuertaAbrir dispara la transicin desde cualquier estado hijo del estado compuesto PuertaCerrada (Esperando o Cocinado) hacia el estado PuertaAbierta. El evento ePuertaCerrar dispara la transicin desde el estado PuertaAbierta hacia el pseudo-estado historia superficial que se muestra como un pequeo crculo con una H en su interior. Un pseudo-estado representa un estado transitorio en el que una mquina de estados no puede estar indefinidamente; cuando la mquina alcanza un pseudo-estado se ejecuta de forma automtica la transicin de salida de ese pseudo-estado. La primera vez que se sale desde el pseudo-estado historia superficial la transicin se dirige hacia el estado Esperando, sin embargo, las sucesivas transiciones de salida desde este

ISSN 1932-8540 IEEE

BARRN RUZ: CURSO DE PROGRAMACIN DE SISTEMAS EMBEBIDOS CON STATECHARTS

49

pseudo-estado se dirigen hacia el estado hijo en el que se encontraba el sistema antes de abandonar el estado padre PuertaCerrada. Este comportamiento satisface la tercera especificacin: Cuando se cierre la puerta, el horno deber regresar al modo de trabajo o reposo en que se encontrara antes de abrir la puerta. En la figura 4 aparecen otros tres pseudo-estados representados por un pequeo crculo sin nada en su interior; se trata del pseudo-estado default, origen de la transicin inicial; as, al iniciar la mquina de estados se entra al estado compuesto MicroOndas que est situado en el nivel jerrquico ms alto. Este estado compuesto contiene dos mquinas de estados concurrentes, Horno y ModoDeFuncionamiento cuya ejecucin corre de forma paralela. Cada una de estas dos mquinas debe arrancar en un estado conocido que viene definido por cada transicin inicial; de esta forma la mquina Horno se inicia en el estado PuertaAbierta y la mquina ModoDeFuncionamiento se inicia en el estado Horno. Las reacciones Entry presentes en todos los estados con fondo amarillo y la reaccin Exit, presente slo en el estado Cocinando, son reacciones internas que se ejecutan automticamente al entrar (Entry) o al salir (Exit) al/del estado correspondiente. Al entrar en el estado PuertaAbierta se ejecuta la funcin de accin aLuzOn() asociada a la reaccin Entry, que enciende la luz interior del horno. Al salir del estado Cocinando se ejecuta la funcin de accin aEnciende(0) asociada a la reaccin Exit. Esta funcin al ser llamada con un parmetro de valor 0 apaga el Horno y el Grill tal como qued reflejado en la Tabla II. G. Sexto paso: Aadir las sincronizaciones Las sincronizaciones son los mensajes internos que una mquina de estados puede enviar a otra mquina. En visualSTATE, los mensajes que una mquina enva hacia otra mquina se llaman seales. Las seales, al igual que los eventos, pueden disparar nuevas transiciones.

La figura 5 muestra la seal de cambio de modo sCM, que la mquina de estados ModoDeFuncionamiento enva hacia la mquina Horno. Cada vez que el evento eModo dispara una transicin se entra en el estado Horno, Grill u Horno_y_Grill, la reaccin Entry de cada estado asigna el valor 1, 2 o 3 a la variable interna viModo; se enciende el LED cuyo nmero coincide con el valor de la variable viModo y se genera la seal sCM. La mquina Horno slo es receptiva a la seal de cambio de modo si se encuentra en el estado Cocinando; en este caso la seal sCM dispara una reaccin interna y llama a la funcin aEnciende(viModo) que conectar el Horno, el Grill, o ambos, dependiendo del valor de la variable viModo. El statechart de la figura 5 contiene un modelo verificable del horno microondas propuesto. Este modelo es todo lo que se necesita para simular el sistema y comprobar si su funcionamiento es conforme a las especificaciones. El ejemplo descrito sirve para valorar la enorme capacidad descriptiva de los statechart y el nivel de abstraccin al que se trabaja en los diseos dirigidos por modelos. Para generar el firmware del microcontrolador adems del modelo anterior se necesitan las funciones de accin, el manejador de la cola de eventos, la funcin main() y las funciones necesarias de la biblioteca de visualSTATE. Todo este cdigo adicional slo se escribe una vez y es casi idntico (salvo las funciones de accin) para cualquier sistema.

VI. CDIGO REQUERIDO POR UNA APLICACIN CREADA CON VISUALSTATE La creacin del modelo de un sistema, por medio de statecharts, permite validar el diseo de forma interactiva, desde que comienza el proceso, hasta que se consideran cubiertas satisfactoriamente todas las especificaciones del sistema. Durante este proceso de diseo y validacin no es necesario generar cdigo C, ni disponer de ningn hardware, nicamente se necesita trabajar con las herramientas Designer y Validator de visualSTATE. Una vez terminada la fase de diseo y validacin interactiva, debe seguirse un proceso de verificacin formal con objeto de comprobar, de forma automtica, la consistencia lgica del proyecto. La verificacin formal o matemtica del modelo la realiza el programa Verificator de visualSTATE; este programa proporciona informacin sobre: elementos no utilizados, elementos no activados, ambigedades, idoneidad del tamao de la cola de seales, transiciones conflictivas, estados sin salida, bloqueos del sistema, etc. Tras la fase de verificacin llega el momento de generar cdigo C para programar el microcontrolador. La parte ms importante del cdigo la genera automticamente la herramienta Coder de IAR visualSTATE. El comportamiento del cdigo generado es idntico al del modelo que se ha validado, pero no todo el cdigo que necesita la aplicacin se genera de forma automtica, el diseador tambin tiene que escribir a mano una parte pequea del mismo. Para crear una aplicacin con visualSTATE se necesita cdigo fuente de tres tipos:

Figura 5. Statechart completamente terminado. Las reacciones Entry de la mquina de estados ModoDeFuncionamiento envan la seal sCM a la mquina de estados Horno para que sta encienda el Horno, el Grill o ambos y sincronice su funcionamiento con el modo de trabajo seleccionado.

ISSN 1932-8540 IEEE

50

IEEE-RITA Vol. 4, Nm. 1, Feb. 2009

1. 2. 3.

Cdigo generado por el usuario Cdigo generado automticamente por visualSTATE, y La API (Application Programming Interface) de IAR visualSTATE.

Figura 5. Las aplicaciones realizadas con visualSTATE requieren tres tipos de cdigo, el usuario tiene que escribir a mano una parte pequea del mismo.

Dado que los dos ltimos tipos de cdigo los genera o proporciona visualSTATE, el diseador slo tiene que escribir manualmente el siguiente cdigo: Cdigo para inicializar el hardware Cdigo para procesar los dispositivos de salida (funciones de accin) Cdigo para procesar las entradas (generar los eventos y manejar la cola de eventos) La funcin main IAR VisualSTATE proporciona ejemplos que contienen cdigo fuente para el manejo de la cola de eventos y el cdigo tpico de la funcin main; el diseador puede adaptar este cdigo de ejemplo y limitarse a escribir las funciones que convierten los cambios de las entradas en eventos y las funciones que actan sobre las salidas del sistema, tambin llamadas funciones de accin. En general las funciones escritas por el usuario slo se escriben una vez para cada aplicacin. La funcin main normalmente comienza con la inicializacin de los perifricos del microcontrolador, del sistema visualSTATE y de la cola de eventos; posteriormente la funcin entra en un bucle sin fin durante el cual examina la cola de eventos y en el caso de que no se encuentre vaca, extrae el primer evento almacenado, ejecuta las funciones de accin asociadas al evento y dirige la mquina de estados hacia el siguiente estado especificado en el statechart. El procesado de los eventos se realiza respetando el orden en que se han ido produciendo. Una vez conseguido el funcionamiento deseado se puede utilizar la herramienta Documenter de visualSTATE para generar automticamente un informe actualizado del proyecto. El informe puede incluir informacin sobre: diseo, validacin, simulacin, verificacin, cdigo generado e implementacin. Dentro de Documenter, el diseador decide el tipo de informacin que desea incluir en el informe as como el formato de salida del mismo (RTF o HTML). Despus de finalizada la fase de diseo, a veces se requiere modificar o aadir nuevas prestaciones al sistema; durante esta fase de mantenimiento, los cambios y complementos se realizan dentro de visualSTATE, trabajando con los statecharts y siguiendo el mismo proceso que se ha descrito en

los apartados anteriores. Finalmente se termina generando cdigo de forma automtica e integrndolo con el cdigo escrito manualmente por el diseador. El generador de cdigo de visualSTATE ofrece dos opciones: cdigo en formato tabla o cdigo legible por humanos; la mejor opcin depender de las exigencias de velocidad de ejecucin y de tamao de cdigo que imponga la aplicacin o de la necesidad de examinar el cdigo generado a efectos de homologacin. El cdigo en formato tabla es prcticamente imposible de leer, pero resulta extremadamente compacto; normalmente ocupa menos espacio que el cdigo escrito a mano; por otro lado, visualSTATE asegura que cuando el cdigo generado se ejecuta en un microcontrolador su comportamiento es 100% consistente [17] con el funcionamiento del modelo que se ha validado; nuestra experiencia tambin confirma esa aseveracin. La aplicacin "Calculadora Parlante" [18] puede servir como ejemplo significativo del tamao de cdigo generado por visualSTATE; se trata de una calculadora que opera con nmeros reales de simple precisin, realizando las cuatro operaciones bsicas, la raz cuadrada y operaciones con memoria; la calculadora informa de las operaciones y los resultados por medio de un display LCD y generando voz a travs de un altavoz; la primera versin de la calculadora se realiz con un microcontrolador de la familia 8051 y la segunda versin con un AVR ATmega88 [19], en el caso del ATmega88 el cdigo generado ocupa 3696 words de memoria de cdigo (el 90,2% del tamao de la flash del ATmega88) y 74 bytes de memoria de datos (el 7,2% del tamao de la RAM del microcontrolador). El cdigo generado automticamente por visualSTATE nunca debe modificarse a mano; de esta forma el diseo realizado con los statecharts se convierte en la nica representacin explcita de la lgica de control, lo que por otro lado garantiza el sincronismo entre el modelo, el cdigo y la documentacin.

VII. DESARROLLO DE LA ASIGNATURA La introduccin a los statecharts para el diseo de sistemas embebidos, es parte del contenido de la asignatura optativa Desarrollos con Microcontroladores, ofertada a los estudiantes de Ingeniera Tcnica en Electrnica Industrial en la Escuela Universitaria de Ingeniera de Eibar (Guipzcoa); se trata de una asignatura de 6 crditos que se imparte a lo largo del segundo cuatrimestre. Los alumnos que eligen la asignatura generalmente disponen de conocimientos bsicos de microcontroladores y de programacin en lenguaje C, adems manejan con cierta soltura el programa de captura de esquemas y simulacin electrnica PROTEUS [20], [21]. La asignatura se desarrolla durante 15 semanas, a razn de dos sesiones semanales de 2 horas, en el Laboratorio de Microelectrnica, dotado de ordenadores en todos los puestos de trabajo y de un proyector de imgenes para el PC del profesor. Como elemento de apoyo a la docencia presencial se utiliza la plataforma Moodle [22], donde se depositan los

ISSN 1932-8540 IEEE

BARRN RUZ: CURSO DE PROGRAMACIN DE SISTEMAS EMBEBIDOS CON STATECHARTS

51

recursos didcticos, se recogen las tareas asignadas a los alumnos, se muestran las calificaciones, y se dispone de un foro para realizar labores de tutora virtual. Con periodicidad semanal o bisemanal, se enuncia una tarea que los alumnos deben realizar en sus casas y subirla a la plataforma Moodle, antes del comienzo de una clase de la siguiente semana en la que se discutirn las soluciones adoptadas; todas las tareas se califican, y se tienen en cuenta para la nota final de la asignatura. Si como viene sucediendo en los ltimos aos, el nmero de alumnos es reducido y se consigue implicar al grupo en las tareas semanales, al final del cuatrimestre los alumnos han aprendido la materia gracias a su esfuerzo y el profesor dispone de unas 10 calificaciones de cada alumno que normalmente les exime del examen final. El proceso seguido en las clases es: comentario crtico a la tarea encargada la semana anterior, exposicin de un tema con la ayuda de una presentacin en PowerPoint y el apoyo de la pizarra, uno o dos ejercicios prcticos de diseo realizados en el PC y la descripcin de la siguiente tarea a realizar. El objetivo de la asignatura es desarrollar el hardware y el software de sistemas prcticos basados en microcontrolador, por ello el trabajo a realizar durante los ejercicios prcticos y en las tareas, consiste en: capturar el hardware de los sistemas en un esquema, crear el firmware utilizando un entorno de desarrollo en lenguaje C y depurar el software hasta conseguir que el sistema cumpla las especificaciones. El funcionamiento del sistema se verifica con la ayuda de un simulador. El microcontrolador seleccionado para las prcticas es el AVR ATmega16 de Atmel [23], elegido por sus prestaciones, por la cantidad de perifricos que incorpora y porque el software de simulacin utilizado es capaz de simular el microcontrolador y todos sus perifricos, lo que agiliza la realizacin de trabajos en clase y en casa. A. Herramientas Software Utilizadas Todas las herramientas utilizadas en la asignatura pueden obtenerse gratuitamente, salvo el software PROTEUS, para el cual se dispone de licencias. Algunas de las herramientas son versiones demo de software profesional que resultan suficientes para su uso en un entorno escolar. El listado completo de las herramientas es el siguiente: IAR visualSTATE 20-state evaluation edition [16] Proteus 7 Professional [20], para captura de esquemas, simulacin y ruteado AVR Studio 4 [23], Entorno integrado de desarrollo profesional, para escritura y depuracin de aplicaciones con microcontroladores AVR CodeVisionAVR Evaluation [24], Entorno integrado de desarrollo, compilador ANSI C, generador automtico de cdigo para la inicializacin de perifricos y programador ISP para la familia de microcontroladores AVR de Atmel. B. Documentos bsicos Los principales documentos utilizados en el curso son: Hoja de datos del microcontrolador ATmega16 Set de instrucciones de la familia de microcontroladores

de 8-bits AVR Manual de usuario del compilador CodeVisionAVR C. Contenido del curso El curso se estructura en 12 temas: 1. Lenguaje C adaptado a los microcontroladores AVR 2. Arquitectura y caractersticas generales de la familia de microcontroladores de 8-bits AVR 3. Los puertos de I/O 4. Las interrupciones del ATmega16 5. Los timers&counters del ATmega16 6. Programacin de visualizadores LCD alfanumricos 7. Exploracin de conmutadores y teclados. Supresin de rebotes 8. Comunicacin serie RS-232, RS-485, SPI e I2C 9. El comparador analgico y el ADC del ATmega16 10. Fuentes de reset en el ATmega16. Watchdog 11. Consumo de energa. Modos SLEEP 12. Diseos con statecharts A lo largo del cuatrimestre se realizan, entre trabajos en clase y tareas para casa, ms de 20 ejercicios completos de diseo (hard+soft). Solo el estudio de todos los perifricos del AVR y la realizacin de los ejercicios que utilizan esos perifricos, exigira ms de un cuatrimestre, en caso de no disponer de herramientas de diseo de alta productividad. En este sentido cabe destacar la aportacin realizada por la herramienta CodeWizardAVR de CodeVisionAVR; se trata de un asistente para la configuracin de perifricos, capaz de crear cdigo C para la inicializacin de todos los perifricos de la familia de microcontroladores AVR, que ahorra mucho tiempo de diseo y de depuracin. Tambin en el mismo sentido, debemos destacar la ayuda prestada por el software de simulacin PROTEUS, capaz de realizar simulacin digital, analgica y mixta, simular PLDs simples, como la PAL22V10, partiendo de un un fichero JEDEC por cada PLD; simular microcontroladores con todos sus perifricos internos y todos los dispositivos externos, usando el cdigo ejecutable creado por un compilador o un ensamblador. La simulacin puede generar grficos y permite la interaccin del usuario con el hardware simulado en tiempo real; cuando el usuario hace clic con el ratn en un teclado simulado, las acciones que se observan son casi las mismas que las del hardware real. Si se trabajase con hardware real, en lugar de hacerlo con un simulador, no sera posible realizar ni una cuarta parte de los ejercicios del curso. Pese a la ayuda aportada por todas estas herramientas, la asimilacin de los contenidos del curso requiere ms tiempo que el disponible; esta limitacin temporal impide tratar el ltimo tema con la amplitud e intensidad deseable. Para ensear las capacidades ms interesantes de los statecharts se tiene que recurrir a mostar realizaciones ms complejas elaboradas por el profesor, en detrimento de actividades que deberan realizar los alumnos.

ISSN 1932-8540 IEEE

52

IEEE-RITA Vol. 4, Nm. 1, Feb. 2009

VIII. CONCLUSIONES La complejidad de software actual y la demanda de ciclos de desarrollo cada vez ms cortos, exige la utilizacin de herramientas de diseo de elevada productividad tales como: lenguajes de alto nivel, asistentes o bibliotecas para la inicializacin de perifricos, statecharts, sistemas de generacin automtica de cdigo, middleware, etc. Los statecharts estn situados en un nivel de abstraccin superior al de los lenguajes de programacin, con lo que se consigue trasladar diseo al dominio de la aplicacin. Son elementos grficos provistos de una enorme capacidad descriptiva, son ms fciles de interpretar que los listados de cdigo, resultan muy adecuados para describir comportamientos complejos y simplifican el intercambio de ideas con personas ajenas o no al proyecto. El proceso de desarrollo de sistemas reactivos con statecharts, expuesto en los apartados anteriores, proporciona una eficaz metodologa de diseo para programadores cualquiera que sea su nivel de experiencia. Los statecharts pueden integrarse con RTOS, aunque en muchas aplicaciones pueden reemplazarlos con ventaja, ya que exigen menos cdigo, soportan el paralelismo, permiten la simulacin grfica sin necesidad de compilar ni de disponer de un sistema fsico, los errores se detectan con rapidez durante la fase de diseo-validacin y vienen acompaados por herramientas de verificacin formal, generacin automtica de cdigo y generacin automtica de documentacin que facilitan notablemente la tarea de los programadores.

[5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21]

[22] [23] [24]

CoreChart, http://www.elabtronics.com (12/02/2009) Picaxe, http://www.rev-ed.co.uk/picaxe (12/02/2009) Flowcode, http://www.matrixmultimedia.com/Flowcode3a-X.php (12/02/2009) D. Harel, Statecharts: a visual formalism for complex systems. Science of Computer Programming. Vol 8, N 3, (1987), 231-274. David Harel web site. http://www.wisdom.weizmann.ac.il/~dharel (12/02/2009) UML Resource Page. http://ww.uml.org Samek M. Practical Statecharts in C/C++. Elsevier CMPBooks, (2002) Cetus Links - UML Tools. http://www.cetus-links.org/oo_uml.html (12/02/2009) Mario Jeckle - UML Tools. http://www.jeckle.de/umltools.htm (12/02/2009) UML tools. http://en.wikipedia.org/wiki/List_of_UML_tools (12/02/2009) UML StateWizard. http://www.intelliwizard.com/ (12/02/2009) IAR VisualSTATE state machine design tools. http://www.iar.com/vs (12/02/2009) IAR visualSTATE Concept Guide, version 4, 1999 M. Barrn, Calculadora Parlante. Actas del VII Congreso de Tecnologas Aplicadas a la Enseanza de la Electrnica, Madrid 2006 M. Barrn, Talking Calculator, AVR 2006 Design Contest Entry # AT3295, http://www.circuitcellar.com/avr2006/winners/AT3295.htm Labcenter Electronics. http://www.labcenter.co.uk (12/02/2009) M. Barrn, Uso didctico del software de ayuda al diseo electrnico PROTEUS. Actas del VI Congreso de Tecnologas Aplicadas a la Enseanza de la Electrnica, Valencia 2004 Moodle Home page. http://moodle.org (12/02/2009) Atmel Corporation Home page, http://www.atmel.com (12/02/2009) CodeVisionAVR Home page. http://www.hpinfotech.ro (12/02/2009)

REFERENCIAS
[1] [2] [3] D. Harel, A. Pnueli, On the Development of Reactive Systems. Logics and Models of Concurrent Systems. Vol F-13, (1985), pp. 477-498. R. J. Wieringa, Design Methods for Reactive Systems: Yourdon, Statemate, and the UML. Morgan Kaufmann Publishers, 2003 F. Wagner, R. Schmuki, T. Wagner and P. Wolstenholme, Modeling Software with Finite State Machines. A Practical Approach. Auerbach Publications, 2006 Niple, http://www.niplesoft.net/index.htm (12/02/2009)

[4]

Mariano Barrn Ruiz naci en San Vicente de la Sonsierra (La Rioja) en 1953. Se licenci en Ciencias Fsicas en la Universidad de Valladolid en 1975. Desde el ao 1976 es profesor en la Escuela de Ingeniera de Eibar y forma parte del Departamento de Ingeniera de Sistemas y Auto-mtica de la Universidad del Pas Vasco (UPV-EHU). Ha diseado numerosos equipos destinados a la docencia prctica de los microcontroladores y la electrnica. Sus reas de inters ms importantes son: instrumentacin virtual, laboratorios remotos, desarrollos electrnicos y uso pedaggico de las nuevas tecnologas.

ISSN 1932-8540 IEEE