Autor Tema: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC  (Leído 18113 veces)

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

Desconectado dopoulo

  • PIC10
  • *
  • Mensajes: 24
"Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« en: 03 de Julio de 2007, 13:20:46 »
Hola a todos.

Como he sacado bastante información de este foro, voy a compartir con vosotros mi proyecto.
He realizado una especie de sistema operativo en disco (aunque ese término le queda muy grande) para PIC y tarjeta MMC.

Se trata básicamente de un software que permite ejecutar programas almacenados en una tarjeta MMC (lo que sería básicamente un bootloader) pero con muchas más funciones.

Mi proyecto se inspira en el funcionamiento (muy general, no lo tomeis al pie de la letra) de un sistema operativo tipo MS-DOS. Dispone de un "núcleo" o "kernel", de un intérprete de comandos y de librerías para el desarrollo de programas.

EL Núcleo:

Se trata del programa que permanece constantemente cargado en la memoria del PIC. Tiene implementado un cargador, que se encarga de leer un archivo ".hex" de la tarjeta MMC, escribirlo en la memoria del PIC y "ejecutarlo". Además tiene implementadas todas la funciones necesarias para leer y escribir de la tarjeta MMC, para manejar el sistema de archivos (FAT16), para enviar y recibir información del puerto serie. Además dispone de reloj de tiempo real con calendario (incluido soporte para años bisiestos, ejejeje).

El Intérprete de Comandos
Como su nombre indica es un intérprete de comandos. Es la interfaz entre el núcleo y el usuario. Mediante éste el usuario ejecuta los programas, y puede ejecutar otra serie de comandos, para mostar o cambiar la hora, crear directorios, eliminar archivos, etc... POr ejemplo en una de las imagenes que adjunto podeis ver el resultado del comando "dir" (mostrar un listado de un directorio) en el directorio raíz de la tarjeta. Además permite ejecutar archivos script (los ".bat"), así como ejecutar el archivo script de inicio "autoexec.bat". (los que hayais usado MS-DOS lo entendereis mejor)

Las librerías
Por último, para darle mayor utilidad al proyecto he desarrollado dos librerías
-La primera contiene llamadas a las funciones del núcleo. Es decir, como en el núcleo tengo implementado todo el manejo del formato FAT16, por ejemplo, si el usuario quiere desarrollar un programa que cree un archivo, basta con que realize la llamada a la función que está en implementada en el núcleo encargada de crear un archivo.
-La segunda es una librería estándar de C, la librería stdio. De esta forma, el usuario del sistema dispone de funciones estándar de C para el manejo de archivos que facilitan muchisimo el proceso de crear programas que trabajen con archivos. Dispone de las funciones mas importantes que define el estándar: fopen, fclose, fputs, fwrite, etc...
Aquí os muestro un programa de ejemplo que se encarga de copiar un archivo de la tarjeta MMC llamado "prog01.hex" dentro de una carpeta llamada "COPIA":

unsigned char buffer[2048];
void main (void){
   unsigned int leidos;

   FILE *fichero1;
   FILE *fichero2;
      char nombre1[20] = "prog01.hex";
   char nombre2[20] = "Copia/prog01.hex";
   
   putst("\nCopiando...",0);
   fichero1 = fopen( nombre1, "r" );
   fichero2 = fopen( nombre2, "w" );
   while(leidos=fread(buffer,2048,1,fichero1)){
      fwrite(buffer,leidos,1,fichero2);
   }
   fclose(fichero1);
   fclose(fichero2);
   putst("\nArchivo Copiado...",0);
   Exit_Program();
}
Como podeis ver es muy sencillo programar con esta serie de funciones.

Bueno, esto a grandes rasgos, me extendería mucho si quisiera entrar en detalles. Es importante decir que todo el código está desarrollado en C con el compilador PICC18 de Hi-Tech, que creo que no goza de mucha popularidad por aquí.
También decir que es compatible con tarjetas SD (que no es mas que una evolución de las MMC).

Creo que puede ser interesante para aquellos que están trabajando con tarjetas SD. La comunicación con la tarjeta es vía SPI.

Bueno, supongo que la información no es del todo clara, pero es que el trabajo que he realizado es muy amplio (o eso me parece a mi). ASí es que si alguien está interesado en algo que no dude en preguntármelo.
« Última modificación: 03 de Julio de 2007, 13:38:14 por dopoulo »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #1 en: 03 de Julio de 2007, 13:41:51 »
Impresionante proyecto, Dopoulo. Enhorabuena.

¿Quieres decir entonces que ese programa que has pegado ahí se ejecuta sin ser compilado?, ¿es una especie de "intérprete" como los antiguos Basic?

Desconectado picNIC

  • PIC16
  • ***
  • Mensajes: 140
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #2 en: 03 de Julio de 2007, 13:53:39 »
 :shock: :shock: :shock:  Felicitaciones!!! impresionante!!! es hora de que aprenda c de una buena vez.......



salu2 :-/ :-/ :-/ :-/

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #3 en: 03 de Julio de 2007, 14:02:21 »
se ve muy interesante dopoulo. desde ya te felicito  :shock:

una pregunta:

¿las funciones SPI las hiciste por software ó usando el módulo que trae el pic?
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado dopoulo

  • PIC10
  • *
  • Mensajes: 24
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #4 en: 03 de Julio de 2007, 14:09:05 »
Impresionante proyecto, Dopoulo. Enhorabuena.

¿Quieres decir entonces que ese programa que has pegado ahí se ejecuta sin ser compilado?, ¿es una especie de "intérprete" como los antiguos Basic?

jejeje, que va, eso ya es mucha tela.

Ese programa habría que compilarlo junto con las librerías que yo he desarrollado.  El archivo .hex generado se almacenaría en la tarjeta MMC y a través del intérprete de comandos se ejecuta. El intérprete lo único que hace es ver que se trata de un programa ejecutable en el sistema, y a través de la comunicación con el núcleo, llama a una serie de funciones que lo que hacen es intepretar el archivo .hex y escribirlo en la memoria FLASH del micro, (lo que hace básicamente un bootloader).
El intérprete "interpreta" por ahora una serie de comandos básicos como son "cd", "dir" "delete" "md" rd" "time" "date" "diskinfo"  "reboot" y algunos más, además de poder ejecutar programas y archivos script.

Las librerías hacen que cualquier persona con conocientos de funciones estándar de C puedan crear programas que manejen archivos fácilmente sin tener que conocer el protocolo SPI para la tarjeta MMC o las estructuras FAT, por ejemplo.

Gracias por la enhorabuena, era un trabajo para la Universidad, al que le he dedicado un montón de horas. Espero que por lo menos sirva para algo a alguien.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #5 en: 03 de Julio de 2007, 14:16:07 »
Muy bueno, dopoulo, muy bueno de verdad.  :mrgreen:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #6 en: 03 de Julio de 2007, 14:18:19 »
A mi también me parece un trabajo bárbaro. Pero una pregunta tonta ¿vas a poner algún fichero en el foro?.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado dopoulo

  • PIC10
  • *
  • Mensajes: 24
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #7 en: 03 de Julio de 2007, 14:35:04 »
A mi también me parece un trabajo bárbaro. Pero una pregunta tonta ¿vas a poner algún fichero en el foro?.

Un saludo

Jejeje, pues para eso estamos, para compartir.
Lo que pasa es que aviso: todo el código es muy dependiente del hardware y compilador que he escogido. Es decir, para que alguien pueda "probar algo" y le funcione, necesita el compilador PICC18 (las librerías desarrolladas son para ese compilador) y el PIC18F4620. Pero bueno, la gran ventaja del código C es que es relativamente fácil de portar.

Lo que mas me llenaría de satisfacción es que alguien pudiera utilizar lo que he hecho, claro.
Os adjunto todo el código fuente, aunque verlo así os puede producir una úlcera, porque además he de decir que soy bastante vago poniendo comentarios. Pero bueno podeis empezar a haceros una idea.

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #8 en: 03 de Julio de 2007, 14:37:34 »
Muchas gracias dopoulo, ten por seguro que esta información habrá alguien que la utilizará aunque solo sea para leerla y aprender de ella. Nuevamente gracias.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #9 en: 03 de Julio de 2007, 14:41:37 »
Gracias dopoulo, mevoy a tirar de cabeza a estudiar tu código como un chihuahua se tira a por  una rodaja de mortadela ... ja ja ja  :D :D :D
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #10 en: 03 de Julio de 2007, 14:43:09 »
Veo que empleas el mismo sistema de llamadas al sistema operativo mediante interrupciones, inclusive implementas el sistema de registros ¿es compatible con el DOS?.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado dopoulo

  • PIC10
  • *
  • Mensajes: 24
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #11 en: 03 de Julio de 2007, 14:51:49 »
Veo que empleas el mismo sistema de llamadas al sistema operativo mediante interrupciones, inclusive implementas el sistema de registros ¿es compatible con el DOS?.

Un saludo

Bueno, eso de compatible... jejeje
He leído documentos de aquí, otros de allí... Eso lo leí de un libro de programación en C y es lo que me abrió las puertas para poder comunicar programas con el núcleo. Es muy facil de entender y de implementar, y lo mejor de todo es que ¡me funciono! jejejej. Veo que dominas el tema, porque para deducir eso con los comentarios que tengo puestos...

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #12 en: 03 de Julio de 2007, 14:57:25 »
He programado bastante en ASM y en MS-DOS así que me ha salido de ojo. Con respecto a la compatibilidad me referia a si has usado los mismos registros y el mismo número de interrupción para realizar las llamadas

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado El_Guitre

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1046
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #13 en: 03 de Julio de 2007, 15:12:09 »
Impresionante proyecto Dopoulo, felicitaciones. Lastima que no domino el C18, pero esto me entusiasma a empezar a conocerlo. Felicitaciones nuevamente y gracias por compartir los frutos de tu esfuerzo.

Desconectado delmaformacion

  • PIC10
  • *
  • Mensajes: 44
Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
« Respuesta #14 en: 03 de Julio de 2007, 18:20:59 »
MUY, MUY, MUY INTERESANTE!!!!!!!!