Autor Tema: Sistema Operativo Con Pic  (Leído 1433 veces)

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

Desconectado dopoulo

  • PIC10
  • *
  • Mensajes: 24
Sistema Operativo Con Pic
« en: 16 de Febrero de 2006, 06:23:00 »
Hola a todos.
Me encuentro realizando un trabajo para la universidad que consistiría en algo así como realizar un sistema operativo para una sistema empotrado consistente en un pic18f452, una tarjeta mmc, puerto serie y tarjeta ethernet por ahora.

La idea así a grandes rasgos consiste en lo siguiente:

La tarjeta mmc será como el disco duro y se encuentra formateada en FAT16.
La "instalacion del sistema operativo" consiste en un programa que debe ir en el directorio raíz de la tarjeta llamado "COMMAND.HEX". El pic tendrá programado un bootloader (programa cargador). Este cargador es el que se encarga de cargar en la memoria del pic el programa que se ejecute.
Cada vez que se resetea la tarjeta se ejecuta el programa cargador, que a su vez programa en el pic el "COMMAND.HEX" (si lo encuentra en el directorio raíz de la tarjeta).
El COMMAND.HEX es un interprete de comandos que sirve para movernos por los directorios de la tarjeta, es decir para interpretar la "FAT". Este se encarga de buscar los archivos que el usuario le mande a programar y una vez encontrado devuelve el control al cargador que será quien cargue el programa que el usuario a solicitado.
Creo que mas o menos con esto os hareis una idea.

Por ahora tengo casi todo funcionando por partes, pero a la hora de integrarlo tengo algun que otro problema. Así es que os iré planteando mis dudas por partes a ver si me podeis echar una mano.

Mi gran duda es cómo comunicar el COMMAND.HEX con el cargador, para ello, el primero debe pasarle al segundo el número de clúster de la fat donde está el archivo del programa a cargar.
Consigo pasarle el control al cargador pero no donde guardar el valor del cluster para que el cargador lo lea.
Es decir ¿cómo creo una variable para poder ser accedida por los dos programas?
(el command.hex y  el cargador).

A ver si podeis ayudarme. Un saludo.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Sistema Operativo Con Pic
« Respuesta #1 en: 16 de Febrero de 2006, 06:44:00 »
Define una direccion en la RAM del PIC (que sepas que no será tocada por ningun programa) , y guarda ahi el dato. Luego el cargador debe "saber" la direccion en la que ese dato fue guardado, y leerá de ahi el dato.

Si cambiar de command a cargador implica apagar/resetear el pic (asumo que resetear borra el contenido de la ram, que me corrijan si no es asi) , deberas de usar alguna memoria no volatil, tipo SRAM, EEPROM externa, etc...

espero que te sirva de ayuda.

Desconectado dopoulo

  • PIC10
  • *
  • Mensajes: 24
RE: Sistema Operativo Con Pic
« Respuesta #2 en: 16 de Febrero de 2006, 12:59:00 »
Ahí es donde estoy teniendo el problema, porque creo que no estoy haciendo algo bien
Si yo declaro una variable asi

unsigned int cluster @ 0x5FE;

¿no crea eso una variable entera en la ram en esa dirección?.
Eso es lo que yo creía, y ahí almaceno el valor del cluster, el problema es que si reseteo el pic, "cluster" sigue teniendo el valor que yo he escrito.
¿Si está en la RAM no debería de inicializarse?, yo necesito que cada vez que resetee el pic el valor de la variable debe ser 0x0000, para poder cargar el command.hex y después cada vez que ejecute un programa vaya tomando el valor del cluster del programa.
El problema que me estoy encontrando es que si reseteo el pic, se carga el ultimo programa que yo ejecuté y no el command.hex.
¿Que estoy haciendo mal?

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Sistema Operativo Con Pic
« Respuesta #3 en: 16 de Febrero de 2006, 16:41:00 »
Cuando resetee, antes de hacer nada, haz que lo primero que haga sea setear a cero esa direccion. Si no te fias de CCS, implementalo por asm.