TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: dopoulo en 03 de Julio de 2007, 13:20:46

Título: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: dopoulo 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.
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: Nocturno 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?
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: picNIC 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 :-/ :-/ :-/ :-/
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: PalitroqueZ 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?
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: dopoulo 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.
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: RedPic en 03 de Julio de 2007, 14:16:07
Muy bueno, dopoulo, muy bueno de verdad.  :mrgreen:

Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: jfh900 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
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: dopoulo 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.
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: jfh900 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
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: RedPic 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
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: jfh900 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
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: dopoulo 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...
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: jfh900 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
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: El_Guitre 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.
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: delmaformacion en 03 de Julio de 2007, 18:20:59
MUY, MUY, MUY INTERESANTE!!!!!!!!
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: delmaformacion en 03 de Julio de 2007, 18:22:29
Ahora abria que trabajar en conectarle una trajeta grafica y un teclado :)
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: jfh900 en 03 de Julio de 2007, 19:01:59
Y tiramos los portátiles a la basura  :D

Un saludo
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: dopoulo en 03 de Julio de 2007, 19:18:56
Bueno, mi idea inicial era la de crear un sistema de propósito general (toma ya!!) basado en microcontrolador y tarjeta FLASH. POr ello la idea de "sistema operativo".
Con soporte para teclado y pantalla (lo que en mi proyecto está definido como consola) ya tenemos un MiniPC.
Con unas prestaciones que asustan:
-Hasta 40Mhz (yo lo he hecho funcionar a 18.4Mhz)
-64Kb de memoria de código
-4kb de memoria RAM :D 
-Disco duro desproporcionado para los datos anteriores (yo he llegado a conectar una tarjeta SD de 2GB)
 :mrgreen: :mrgreen: :mrgreen:

Bueno, y con esa base, a desarrollar aplicaciones...

jfh900:
 lo que me preguntabas sobre las llamadas al sistema:
Solo he cogido la idea, pero realmente yo no tengo una interrupción como tal. Lo que he creado es una función y dentro de ella, se determina qué función interna del núcleo se ha de llamar.  Los registros, pues tampoco existen como tal, son variables de memoria situadas en una dirección fija, que sirven para intercambiar la información a la hora de llamar a una función del núcleo.
No se como explicártelo en pocas palabras, pero creo que viendo el código te resultará fácil entenderlo.

Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: delmaformacion en 04 de Julio de 2007, 06:15:32
¿donde puedo localizar el compilador PICC18?

Hace unas dos semanas pedi a micro chip un dsPic, ¿el PIC18F4620 tambien tengo que pedirlo a microchip?
¿puedo pedirlo a alguna  tienda virtual de electronica?

y ¿la tarjeta MMC?
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: dopoulo en 04 de Julio de 2007, 06:33:08
Bueno, el compilador no es de Microchip, es de la empresa Hi-Tech. En su página web (http://www.htsoft.com/) puedes descargarte una versión de prueba que creo que es totalmente operativa durante un tiempo. Yo usé una versión completa que tenía un amigo mío y me la trajo en una burrita  :lol:.
Comprar una licencia valdrá una buena pasta...

Y la tarjeta MMC en cualquier tienda de informática, aunque creo que ya no se fabrican (al menos en su versión original). Pero venden las SD que son compatibles con software desarrollados para las primeras (y no al revés). Yo compré hace poco una SD de 2GB por 15 euros. Lo que te será mas difícil encontrar será el zócalo para insertar la tarjeta. Debe ser en una tienda especializada de electrónica. Y el PIC lo pides como muestra gratuita a Microchip y ya está.

Un saludo.
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: delmaformacion en 04 de Julio de 2007, 12:07:17
La memoria SD se podria comprar en cualquier sitio, soldando directamente los terminales...

El sistema operativo, ¿Se podria meter en un PIC16F84?
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: delmaformacion en 04 de Julio de 2007, 20:30:28
A ver si me acabo de animar a montar el experimento...

¿puedes poner la conexión física del pic a la tarjeta de memoria? y ¿del pic al ordenador?

Hablando de la compilación, ¿cómo lo compilas?¿cómo un programa completo?¿por partes?

La idea de implementar programas para este sistema operativo es muy interesante, pero lo es todavía mas reimplementar aplicaciones que ya existen:

Aspectrum (simulador de spectrum para dos) http://www.speccy.org/sromero/spectrum/emuls/aspectrum/
Arachne (navegador grafico para dos) http://www.cisnet.com/glennmcc/
O una pequeña versión de linux (que funciona bajo dos) http://mulinux.sunsite.dk/mulinux.html

Esa es mi idea de cómo continuar con el proyecto
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: RedPic en 05 de Julio de 2007, 03:51:25
Este es el hardware que me monté para la MMC:

(http://picmania.garcia-cuervo.net/images/MMC_SDC_Contact.jpg)

(http://picmania.garcia-cuervo.net/images/MMC_Conector_yamaichi_rs.jpg)

(http://picmania.garcia-cuervo.net/images/MMC_Card_Adapter_Schema.GIF)

(http://picmania.garcia-cuervo.net/images/MMC_Card_Adapter_Foto3_Detalle.JPG)

(http://picmania.garcia-cuervo.net/images/MMC_Card_Adapter_Foto2_iACV1_Reverse.JPG)

(http://picmania.garcia-cuervo.net/images/MMC_Card_Adapter_Foto1_iACV1_Front.JPG)
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: delmaformacion en 05 de Julio de 2007, 12:24:59
muchas gracias RedPic, pero para la conexión al hiperterminal ¿que patillas son las que se conectan al puerto serie del PC?
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: SavageChicken en 05 de Julio de 2007, 14:44:19
Me parece fantástico el trabajo que has realizado Dopoulo, sin dudas habrá gente que le podrá sacar un enorme probecho.
Sería espectacular poder llevar esto a una especie de MS-DOS 3.0   :D :D :D
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: J1M en 05 de Julio de 2007, 15:55:54
Fantástica aportación al foro Dopoulo, enhorabuena por el trabajo, es muy muy interesante! ;)
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: LABmouse en 09 de Julio de 2007, 09:45:05
Aplausos por tan buen trabajo y por compartirlo con todos!  :)
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: facudelrojo en 10 de Julio de 2007, 23:28:45
Bueno, el compilador no es de Microchip, es de la empresa Hi-Tech. En su página web (http://www.htsoft.com/) puedes descargarte una versión de prueba que creo que es totalmente operativa durante un tiempo. Yo usé una versión completa que tenía un amigo mío y me la trajo en una burrita  :lol:.
Comprar una licencia valdrá una buena pasta...

Y la tarjeta MMC en cualquier tienda de informática, aunque creo que ya no se fabrican (al menos en su versión original). Pero venden las SD que son compatibles con software desarrollados para las primeras (y no al revés). Yo compré hace poco una SD de 2GB por 15 euros. Lo que te será mas difícil encontrar será el zócalo para insertar la tarjeta. Debe ser en una tienda especializada de electrónica. Y el PIC lo pides como muestra gratuita a Microchip y ya está.

Un saludo.

Hola queria hacerte una consulta, ahi dice q podes pedir un pic como muestra gratuita a Microchip. Tenes idea si para Argentina lo envian si me hago cargo de los gastos de envio??. Algun Argentino q sepa esto me sacaria esta duda. Por q ya vi a varias personas que piden muestras de distintas cosas. Y por ultimo sabes si Anlog Digital tambien utiliza esto de la muestra??. Gracias Facundo Rossi
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: SavageChicken en 11 de Julio de 2007, 10:15:54
Hay varios hilos que tratan sobre el tema que consultas, usa el buscador y vas a encontrar distintos comentarios al respecto.
Yo vivo en Chile, y me han enviado muchas muestras de distintos fabricantes... pero de Microchip solo he logrado que se las envíen a un conocido en España y luego él me las envió a mi.
Generalmente para toda Latinoamérica es lo mismo.

Salud  8)
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: Leon Pic en 11 de Julio de 2007, 11:16:40
Muy buen buen buen buen proyecto. Me quedé  :shock:

Parece que para los americanos, nosotros, los latinoamericanos, no existimos.

Saludos  :-/ :-/
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: dopoulo en 01 de Agosto de 2007, 14:35:08
Gracias a todos por las respuestas. No he tenido mucho tiempo para conectarme.
Ahora me podré conectar mas a menundo y os podré contestar a vuestras cuestiones. Un saludo.
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: delmaformacion en 03 de Agosto de 2007, 10:41:55
Citar
Gracias a todos por las respuestas. No he tenido mucho tiempo para conectarme.
Ahora me podré conectar mas a menundo y os podré contestar a vuestras cuestiones. Un saludo.

Por favor, ¿podrías poner algunas indicaciones acerca de las conexiones?

Muchas gracias
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: EmilioJRP en 30 de Septiembre de 2007, 07:49:25
Por favor ¿alguien podria decirme de donde debo sacar el "command.hex" que carga el pic de la tarjeta mmc? Tengo el proyecto montado pero no encuentro este archivo. Gracias
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: dopoulo en 03 de Octubre de 2007, 13:47:21
Hola a todos.

Hace tiempo que prometí subir un manual del proyecto, que creo que es lo que falta para que podais utilizarlo.
Este proyecto ha sido el trabajo de fin de carrera que he realizado para la universidad, que por fin aprobé.
Así es que lo comparto con vosotros en su versión integra. Creo que servirá de ayuda para los que me habeis preguntado, ya que supone un manual detallado de funcionamiento.
Respecto a las dudas que teneis sobre el hardware, apenas puedo ayudaros, ya que mi proyecto se basa principalmente en el software. Como vereis, el documento no  hace referencias al hardware. Yo solo monté una "protoboard"?? (una placa con hilo de grapinar) para hacer la demostración.

Con esto contesto a las proposiciones que me hicieron los amigos Nocturno  y RedPIC de hacer una documento sobre el proyecto.

Como no se como subir archivos grandes, aquí os enlace una pequeña web con los archivos.

http://webs.ono.com/soproject/

Un saludo.
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: RedPic en 03 de Octubre de 2007, 14:37:09
Muchas gracias Dopoudo, rescatada toda la información.  :mrgreen:
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: Nocturno en 03 de Octubre de 2007, 15:08:38
Enhorabuena por aprobar y gracias nuevamente por compartirlo.
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: garlic en 12 de Octubre de 2007, 18:06:49
un proyecto alucinante!

si utilizo el proyecto para hacer algo wuai, lo posteo :D

 :-/

un saludo
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: garlic en 20 de Diciembre de 2007, 13:11:03
una pregunta que version de hi-tech es mejor para usar la 8 o la 9.6? o cual es totalmente compatible?


un saludo
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: maunix en 21 de Diciembre de 2007, 12:47:27
una pregunta que version de hi-tech es mejor para usar la 8 o la 9.6? o cual es totalmente compatible?


un saludo

Yo probé la 9.6 y anda muy bien, la 9.61 ya trae soporte para los 16F88x

Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: garlic en 27 de Diciembre de 2007, 07:27:02
gracias maunix

tengo otra duda, que cristal le pongo, keria usar el interno pero veo por una foto que el autor utilizo un XTAL externo.

gracias!
Título: Re: "Mini Sistema Operativo en Disco" para PIC18F4620 y tarjeta MMC
Publicado por: nahumof en 09 de Julio de 2010, 15:21:45
 :-/ :-/ :-/ :-/gracias por compartir dopoulo :-/ :-/ :-/
a probar