Autor Tema: Sistemas operativos en PIC  (Leído 103150 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado reiniertl

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1187
Sistemas operativos en PIC
« en: 02 de Febrero de 2007, 11:07:47 »
Hola amigos

He visto que en el hilo "RTOS para PIC GNU" ha aparecido una interesante controversia sobre los RTOS, sin embargo lo que más curioso me resulta es que muchos no conocen practicamente nada sobre el tema, y como aquí todos estamos para aprender y compartir lo poco que sabemos, quisiera comenzar por explicar algunos de los principios básicos de los SO y como podemos aplicarlos al campo de los microcontroladores.

Espero que esta nueva idea sea de utilidad y despierte el interés en muchos de ustedes. Yo soy muy nuevo en este campo de los SO y los microcontroladores, pero con la ayuda de ustedes podremos hacer muchas cosas interesantes y beneficiosas para todos.

De hecho todavía no he comenzado a utilizar ningún RTOS o algo parecido para meter en un PIC, ni siquiera me he metido con el código de nongún SO, pero en la maestría que estoy cursando tengo los SO (desde la óptica del diseño) como asignatura obligada y no quisiera que después de un montón de horas delante de un profesor que produce más sueño que interés por su asignatura (aunque el tema es interesantísimo), todo ese conocimiento se quedara en la nota al final del semestre.

Bueno amigos... sin más muela (preámbulo) comencemos a trabajar. Dentro de poco les caigo algún texto introductorio para ir entrando en calor con la teoría y después a meter código, que es lo que nos hace falta.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Sistemas operativos en PIC
« Respuesta #1 en: 02 de Febrero de 2007, 11:26:26 »
reiniertl, todo aporte es bienvenido.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado reiniertl

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Sistemas operativos en PIC
« Respuesta #2 en: 02 de Febrero de 2007, 12:35:48 »
Un poco de teoría sobre los Sistemas Operativos (SO)

Haciendo un poco de historia, y los más añejaditos lo saben mejor que yo que soy un niño de 26, los SO aparecieron por allá por los 60?, bueno más o menos.
Lo que ocurrió por aquel entonces, cuando las computadoras, eran tan “poderosas” como nuestros PIC’s (algunos de gama alta son hasta más poderosos que aquellas computadoras), era que muchos programadores (matemáticos locos la mayoría), no estaban interesados en conocer los detalles de las interfaces, controladores y demás cacharros electrónicos que adornan a una computadora, y por otro lado algunos programadores ya habían escrito controladores para esos dispositivos y por tanto los que venían detrás simplemente querían utilizarlos y ya (algo parecido a lo que hacemos en el foro).
Pues bien, con el tiempo se acumularon programas útiles para manejar dispositivos y tareas complejas que debían programar personas no interesadas en la electrónica, entonces la gente, que trabajaba en equipo, organizó todo aquello de manera que los programadores, los programas y el hardware (hw) pudieran coexistir sin que se produjera una guerra hubiteana (guerra en la que los hombres y los bits se pelean hasta que los hombres se mueren de alguna clase de infarto o pierden a la mujer). Surgieron así los primeros intentos de crear un SO y los hombres mantuvieron la Paz sobre la tierra y también la guerra “fria”, aunque las cosas se calentaran a intervalos.

Pasó el tiempo y llegó Bill Gates con DOS y luego Windows y Steve Jobs con su Mac, unos tipos más listo y cabrones que ingenieros o programadores…. y después también apareció Linus Torvalds con Linux, uno que estaba más loco que El Quijote y entonces las personas corrientes creyeron que en el mundo solo existen a lo sumo tres SO (Windows, Mac, y Linux), pero no es así hay un montón de SO, algunos muy poderosos y otros no tanto, dependiendo de en que lugar y para que se hayan diseñado.

Como es lógico suponer, en la parte de la historia que les acabo de contar está el por qué los SO son útiles, pero eso lo iremos viendo poco a poco porque hay muchas formas en las que un SO nos puede servir, vamos a ver algunas.

  • Un SO convierte a las computadoras en equipos útiles, ya que pone una o varias capas de Software (sw) sobre el hw y con eso podemos escribir programas y utilizar programas ya escritos por otros para hacer otros programas escritos por nosotros mismos, sin tener que meternos en detalles tales como “bueno ahora mi procesador de textos ya trabaja ¿y como guardo el documento?”. Seguramente si usted le dice al programador del procesador de texto que para guardar el documento tiene que tirarse meses escribiendo las rutinas que guardan el doc. seguramente le da un ataque.
  • Un SO es una herramienta poderosa en la gestión de procesos. Nosotros mismos cuando programamos los PIC´s tenemos que leer el puerto serie, escribir en una LCD, controlar el motor y todas esas cosas “las hacemos a la vez”. Pero cada una de esas tareas podemos considerarla un proceso, y un SO puede ayudarnos a gestionarlos eficientemente, aprovechando al máximo el procesador. Por ejemplo en vez de poner al PIC a esperara a que el motor se mueva un poco poniendo una demora, podemos utilizar ese tiempo en ir escribiendo un poco en la LCD y después volver a donde nos quedamos con el motor.
  • Un SO nos ayuda a diseñar más rápido sistemas mas complejos. Imagínense ahora una aplicación donde tengamos que hacer cálculos, encender y apagar cosas, comunicarnos con otros dispositivos y otras cosas más, y que además tengamos que hacerlo rápido y trabajando con otras personas. Entonces el concepto de divide y vencerás nos pude ser útil y un SO es el arma que podemos utilizar para derrotar a nuestros enemigos: el tiempo y la complejidad. Pues sí nos auxiliamos del SO para dividir y gestionar los procesos, y con ello no eliminamos la complejidad pero le damos una vuelta elegante, y no matamos al tiempo pero le damos menos oportunidad de que sea él el que nos mate y si no que el jefe nos bote.
  • Un SO nos puede ayudar a hacer sistemas más estables. Ahora tenemos unas rutinas que demoran cierto tiempo en hacer unos cálculos y como somos listos, hemos activado el WatchDog para que si la cosa se cuelga en el campo se reinicie el sistema. Pero que pasa si la rutina demora más de lo debido y el WatchDog nos reinicia sin que haya ningún problema real. Otra vez la gestión de recursos nos puede ayudar en eso, ya que si nuestra tarea demora más de lo debido el SO puede quitarle el procesador para atender al WatchDog y darle el procesador a otra tarea que también lo necesita por algún tiempo. Este caso también sirve cuando aún sin el WD ponemos una llamada a una función que se queda esperando indefinidamente por que ocurra algo que no ocurre y el código que le sigue no se ejecuta en los tiempos establecidos.
Bueno amigos, hasta aquí hemos visto algunas de las cosas en que puede ayudarnos un SO, y sería maravilloso poder contar con esas herramientas para programar nuestros PIC. Más adelante seguiremos aprendiendo un poco sobre la teoría de los SO, para después meterle el cuerpo a los programas.
Espero que los que no conocían nada al respecto hayan aprendido algo y sigan estudiando por su cuenta, porque todo no puedo ponerlo en el foro. Hay algunos libros interesantes sobre los SO, les recomiendo uno que puede ayudarles mucho en esta primera parte: Sistemas Operativos Diseño e Implementación. Andrew S. Tanenbaum

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3574
    • Juntos es mejor
Re: Sistemas operativos en PIC
« Respuesta #3 en: 02 de Febrero de 2007, 13:58:17 »
Bueno, muy interesante el tema, esperare para seguir aprendiendo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17671
    • MicroPIC
Re: Sistemas operativos en PIC
« Respuesta #4 en: 02 de Febrero de 2007, 16:43:35 »
Interesante iniciativa que pretendo seguir de cerca, reiniertl.

Por lo que leo en el capítulo 1 de tu artículo, no veo diferencias entre usar un SO o usar las librerías del lenguaje que estés utilizando en cada momento.
No me cabe duda que un SO tendrá muchas más aportaciones que las librerías, ¿pero cuál es la principal ventaja que los diferencia?
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado reiniertl

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Sistemas operativos en PIC
« Respuesta #5 en: 02 de Febrero de 2007, 18:41:25 »
Citar
no veo diferencias entre usar un SO o usar las librerías del lenguaje que estés utilizando en cada momento.
No me cabe duda que un SO tendrá muchas más aportaciones que las librerías, ¿pero cuál es la principal ventaja que los diferencia?

Desde el punto de vista de la programación no estás haciendo otra cosa que utilizar las librerías del lenguaje u otras creadas por tí o por un buen amigo que te las haya cedido. De hecho si revisamos, por ejemplo, el RTOS de CCS y las funciones que brinda el lenguaje para desarrollar aplicaciones utilizando esta potencialidad del lenguaje, nos damos cuenta, que por ejemplo, la directiva #use RTOS lo que hace es indicarle al compilador que ponga en el programa final, creado por el compilador, el código del dispatecher (luego vamos a ver que es) del RTOS, y luego nos ofrece unas funciones de librería como por ejemplo RTOS_WAIT( ), RTOS_ENABLE( ),  RTOS_RUN( ), etc, que nos ayudan a gestionar nuestras tareas (también veremos el concepto y la implementación en el futuro). Bien hasta ahora nada nuevo, ninguna ventaja, y una desventaja: consumo de memoria de programa para el dispatcher y complicaciones de la vida del programador.

Sin embargo la ventaja del SO radica en que le permite al programador contar con una herramienta para gestionar varias cosas fundamentales en el sistema: el procesador, la memoria, y los periféricos, en nuestro caso eso sería todo nuestro flamante PIC. De todos ellos el más importante es el procesador, ya que es quién hace la mayor parte del trabajo, el objetivo de nuestro SO es mantener ocupado al procesador con trabajo útil, por ejemplo una demora por sw es hacer trabajar al procesador con trabajo inutil y ese tiempo que se la pasa saltando de aquí para allá lo podemos utilizar en hacer otras cosas y la memoria de programas también, después veremos como hacer eso.

Supongamos ahora que estamos atendiendo un teclado, que no está conectado a ninguna fuente de interrupción, no queda más remedio que encuestar a nuestro teclado para saber si han oprimido o soltado una tecla, si es así, entonces tenemos que hacernos cargo de los rebotes, etc. Hay muchas formas de hacer eso, una de ellas sería: 1-Espera que se oprima o suelte una tecla->2-espera un tiempo a que termine el rebote->3-lee el teclado->4-procesa la tecla->5-hacer algo con el código del teclado->6regresa al punto 1

Pero una forma sencilla utilizando un SO tendría la siguiente forma: 1-Espera que se oprima o suelte una tecla->2-me dormiré hasta que termine el rebote->3-lee el teclado->4-procesa la tecla->5-manda un mensaje (el código del teclado) a la función adecuada->6regresa al punto 1. Ahora vemos que la cosa cambió ligeramente porque le hemos dicho a alguien, me voy a dormir un tiempo, despiértame cuando pase ese tiempo, y cuando tengo el dato o código de la tecla, le mando un mensaje a alguien (una función), no llamo directamente a la función, pongo el dato en algún lugar e indico que hay un dato, es asunto de ese alguien tomarlo, procesarlo y notificarlo. Esas dos acciones las hago sirviéndome del SO y le dejo a él el problema de despertarme, y poner el mensaje donde corresponde, sin embargo en este problema el SO puede hacer algo más que en principio no está bajo nuestro control.

Como vemos nuestro programa se queda siempre haciendo lo mismo en un lazo infinito, entonces podemos decirle al SO. Oye, este código debe ejecutarse todo en tal tiempo. Entonces cuando se cumpla el plazo establecido el SO, le quita el procesador a ese que se lo quiere coger todo para él solo y se lo da a otra función que hace algo parecido o para que se atienda una interrupción, etc. cuando todo el mundo haya recibido su poco de tiempo de procesador, le dice a la función que atiende el teclado: toma el procesdor por el tiempo que te corresponde y así todo el mundo puede tener el procesador para el solo durante un tiempo, es decir ponemos a un vigilante a que reparta equitativamente el tiempo del procesador.

Hasta aquí hemos visto algunas de las ventajas, más adelante veremos muchas más, sin embargo todavía no hemos terminado con la introducción teórica a los SO, pero para los más aventajados esto puede aclarar algunas de sus dudas. Yo se que cosas como esta se pueden hacer blandiendo interrupciones a derecha e izquierda, y con otras técnicas, pero como veremos más adelante los SO nos ayudan en otras cosas, mientras aprovechamos al máximo nuestros preciados recursos del PIC

« Última modificación: 02 de Febrero de 2007, 18:52:07 por reiniertl »

Desconectado FJPPitta

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
    • Mi pagina personal
Re: Sistemas operativos en PIC
« Respuesta #6 en: 02 de Febrero de 2007, 21:13:30 »
Muy interesante esto del SO, siempre había tenido interes en desarrollar uno por minimo que fuese, ojala me de tiempo para implementar algo.

Saludos
FJPPitta
Que la fuerza te acompañe

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Sistemas operativos en PIC
« Respuesta #7 en: 03 de Febrero de 2007, 01:08:54 »
muy interesante amigo reiniertl, estoy al tanto de tus post!!  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 306
Re: Sistemas operativos en PIC
« Respuesta #8 en: 03 de Febrero de 2007, 02:04:18 »
vaya todo el foro esta de lujo..aqui en venezuela  ( segun se ) hicieron uno para el 877 es de uso libre........ esta es su direccion  http://www.araguaney.loquequierasya.com

dan documentacion y el sistema operativo como tal  :shock: hechenle un ojo a ver que tarrrrrrrr
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Sistemas operativos en PIC
« Respuesta #9 en: 03 de Febrero de 2007, 02:10:46 »
muchas gracias akira  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Darukur

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 464
    • Informacion, recursos y ejemplos para desarrollos con microcontroladores
Re: Sistemas operativos en PIC
« Respuesta #10 en: 03 de Febrero de 2007, 09:32:33 »
DOS , window$ y LINUX son OS relativamente nuevos, por ejemplo antes que esto esta UNIX.
Es mas antes que DOS se creo en Japon un RTOS que es un estandard, el TRON.

http://en.wikipedia.org/wiki/TRON_Project

Este OS corria ya ventanas cuando microsoft presionaba en japon para que se use DOS, patetico.

Otros RTOS:
uCos         El Papa de todos los RTOS
CMX
QNX
SALVO      Ideal para micros pequeños como los pics.
PICOS
FREERTOS Gratuito y potente.


« Última modificación: 03 de Febrero de 2007, 09:40:53 por Darukur »
El que no sabe lo que busca no entiende lo que encuentra.
Mi Pagina Web:  http://www.sistemasembebidos.com.ar
Mi foro:             http://www.sistemasembebidos.com.ar/foro/

Desconectado reiniertl

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Sistemas operativos en PIC
« Respuesta #11 en: 03 de Febrero de 2007, 10:08:03 »
Bueno veo que a ustedes, amigos, le ha picado el bichito.

El lunes les caigo con la próxima entrega. Voy a dedicar parte del fin de semana a preperar el esqueleto de una especie de curso sobre el tema, y el lunes lo publico. vamos a ver si hacemos un lindo proyecto sobre el tema.

De momento los que puedan que revisen el código de Darukur, porque yo estaré ocupado, y además estudiarse también el RTOS de venezuela, a ver si sacamos nosotros nuestro propio RTOS, por supuesto que sea GNU. En este sentido la propuesta de Darukur me parece muy buena como comienzo.

Les adelanto que la próxima entrega rondará alrededor del concepto de SO y las distintas clasificaciones de los mismos, de este modo sabremos en que campo de los SO, nos vamos a meter.

A aquellos que se sientan intersados pero temerosos les comento que yo jamás he tocado el interior de un SO, hasta ahora, pero como de los cobardes no se ha escrito nada bueno, le voy a poner todo el empeño para que esto salga bien y la comunidad se beneficie. Espero la colaboración de todo aquel que pueda aportar algo, por poco que sea.

Bueno hasta la próxima entonces
« Última modificación: 03 de Febrero de 2007, 10:12:00 por reiniertl »

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Sistemas operativos en PIC
« Respuesta #12 en: 03 de Febrero de 2007, 11:14:36 »
pues cuenten conmigo!!! ya me consegui el libro q recomendastes lo encontre en la biblio de la u, ahora lo leo!!!  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado ESTECA55

  • PIC24H
  • ******
  • Mensajes: 1404
Re: Sistemas operativos en PIC
« Respuesta #13 en: 03 de Febrero de 2007, 11:37:36 »
Muy interesante reiniertl, no tenia idea de estas aplicaciones, soy nuevo en el ámbito de los microcontroladores, este año curso Tecnicas Digitales 2, ahí espero aprender mucho mas sobre estos temas.

Saludos, 

a la espera de la segunda entrega!!!
Hay que esforzarse por ser el mejor, no creerse el mejor

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 306
Re: Sistemas operativos en PIC
« Respuesta #14 en: 03 de Febrero de 2007, 12:14:47 »
bueno amigos alguien sabe que fue el estandard MSX ?

les dare una lijero comentario de eso poco antes que IBM presentara el estandar PC los japones crearon el estandar MSX basado en el microcontrolador de la ZILOG Z80, y las compañias lideres como sony, yamaha, crearon sus version, la idea era contar en un sistema compatible entre todas las compañias pues en esos dias cada fabricante escojia el micro para sus diseños que los hacia incompatible.

es mas en ese entonces casi adquiero una commedor 64, en vista de esto los japoneces crearon este estandar........y luego creaeron es MSx2 para usar una version del Z80 que era de 16 bit pero IBM lanzo e estandar PC y lo demas es historia
y saben que?? Bill Gate, estaba metido en ese medio de ese estandar, por lo tanto si este estandar lo usaramos ahorita el estaria metiendos sus manos alli.......
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela