Autor Tema: Leer y ejecutar programa de una EEPROM externa.  (Leído 3300 veces)

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

Desconectado jgpeiro

  • PIC10
  • *
  • Mensajes: 24
Leer y ejecutar programa de una EEPROM externa.
« en: 17 de Agosto de 2005, 14:49:00 »
Pues eso, estoy diseñando un circuito con un PIC conectado a una EEPROM.

Mi intencion es almacenar el programa principal (configuraciones, ISR...)en la flash del  PIC y las rutinas en la EEPROM y que el PIC las copie a su flash ,cuando el programa principal las solicite, para ejecutarlas.

-¿que soluciones hay para esto? parece facil pensar que simplemente compilo la rutina como si empezase en la linea del programa 800(x ejemplo)y cada vez que se necesita se carga en la flash y ya ta.
-¿Pero que ocurre si esta rutina ocupa mas de lo que cabe en el PIC? podria hacer que el propio PIC la partiese en cachos y se fuese copiando y ejecutando los cachos?
-¿Que ocurre si durante la ejecucion de un cacho de rutina, este llama a un cacho de rutina que no ha sido cargado xq no cabia?
-¿Que ocurre si durante la ejecucion de una rutina,se genera una interrupcion y esta misma necesita cargar de la EEPROM otra rutina distinta?

Llevo un par de dias y creo que he encontrado una solucion algo complicada y probablemente irrealizable. Estos serian los pasos a seguir:
1 Que el propio PIC parta las rutinas en cachos que quepan dentro del PIC.
2 leyendo instruccion a instruccion el cacho de rutina a cargar y modificando todos los brach, call y goto que ayan.
3 Ademas creando una PILA STACK para las rutinas que se van llamando y cargando., y que cada vez que se genera una IRQ durante la ejecucionde una rutina se guarde el "nombre" de la rutina q estaba ejecutandose.

No existen soluciones mas sencillas para esto? A mi me mosquea un poco que un PIC tenga una memoria de programa de 48Kbytes y un ProgramCounter de 24bits...

Por cierto, tengo en cuenta que el tiempo de escritura de un byte de flash (x ejemplo 2mS), pero creo que puede ser despreciable xq he pensado que en 1000 lineas de programa (2segundos en cargarse) se puede meter un programa que tarde mucho mas en ejecutarse.

En unos dias are un dibujo de como pienso que se podria solucionar.

Desconectado josemyzm

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
RE: Leer y ejecutar programa de una EEPROM externa.
« Respuesta #1 en: 17 de Agosto de 2005, 19:21:00 »
Hola, echa un ojo aqui haber si te aporta algo.
http://miarroba.com/foros/ver.php?foroid=6510&temaid=2308866

Un saludo.

Saludos desde Logroño (España)

Desconectado anthony123

  • PIC10
  • *
  • Mensajes: 18
Re: Leer y ejecutar programa de una EEPROM externa.
« Respuesta #2 en: 31 de Mayo de 2013, 20:02:13 »
Cómo puedo hacer para cargar un arreglo de datos en una eeprom externa para que luego pueda ser leida por un humilde 16F84A o un 16F628? Gracias!

Desconectado Robocardo

  • PIC10
  • *
  • Mensajes: 45
Re: Leer y ejecutar programa de una EEPROM externa.
« Respuesta #3 en: 08 de Junio de 2013, 14:31:10 »
Porque no explicas para que necesitas eso asi los que leemos tu proyecto podemos  comprender tus motivos para tomarte el trabajo que te estas tomando?

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Leer y ejecutar programa de una EEPROM externa.
« Respuesta #4 en: 08 de Junio de 2013, 15:37:09 »
Pues eso, estoy diseñando un circuito con un PIC conectado a una EEPROM. Mi intencion es almacenar el programa principal (configuraciones, ISR...)en la flash del  PIC y las rutinas en la EEPROM y que el PIC las copie a su flash ,cuando el programa principal las solicite, para ejecutarlas.
-¿que soluciones hay para esto? parece facil pensar que simplemente compilo la rutina como si empezase en la linea del programa 800(x ejemplo)y cada vez que se necesita se carga en la flash y ya ta.
-


Eso no es nada práctico por varios motivos:

1.- La grabación en flash es un proceso LENTO
2.- Antes de grabar la flash, tienes que borrarla por páginas completas (4K en PIC32, 2K en PIC24, etc...)
3.- Tienes que disponer de suficiente espacio en flash, y no pisar otras partes del programa.
4.- La flash solo tiene 1000 ciclos de borrado/escritura, tu PIC puede acabar frito en poco tiempo, con tanto borrar/grabar.


Citar
¿Pero que ocurre si esta rutina ocupa mas de lo que cabe en el PIC? podria hacer que el propio PIC la partiese en cachos y se fuese copiando y ejecutando los cachos?

-¿Que ocurre si durante la ejecucion de un cacho de rutina, este llama a un cacho de rutina que no ha sido cargado xq no cabia?
-¿Que ocurre si durante la ejecucion de una rutina,se genera una interrupcion y esta misma necesita cargar de la EEPROM otra rutina distinta?

Llevo un par de dias y creo que he encontrado una solucion algo complicada y probablemente irrealizable.
Estos serian los pasos a seguir:
1 Que el propio PIC parta las rutinas en cachos que quepan dentro del PIC.
2 leyendo instruccion a instruccion el cacho de rutina a cargar y modificando todos los brach, call y goto que ayan.
3 Ademas creando una PILA STACK para las rutinas que se van llamando y cargando., y que cada vez que se genera una IRQ durante la ejecucionde una rutina se guarde el "nombre" de la rutina q estaba ejecutandose.

No existen soluciones mas sencillas para esto? A mi me mosquea un poco que un PIC tenga una memoria de programa de 48Kbytes y un ProgramCounter de 24bits...
Por cierto, tengo en cuenta que el tiempo de escritura de un byte de flash (x ejemplo 2mS), pero creo que puede ser despreciable xq he pensado que en 1000 lineas de programa (2segundos en cargarse) se puede meter un programa que tarde mucho mas en ejecutarse. En unos dias are un dibujo de como pienso que se podria solucionar.


Todo tu planteamiento es una locura, sin sentido.

Si no dispones de suficiente espacio en flash, trabaja con un PIC que tenga más flash, tienes PIC32 que llegan hasta los 512K de flash, y si sigue siendo insuficiente, prueba con un ARM, por ejemplo el STM32F407 tiene 1Mega de flash, si aún necesitas más prueba con un Raspberry o una Beaglebone que guardan el programa en tarjetas SD, con gigas de espacio para tus programas.



« Última modificación: 08 de Junio de 2013, 15:55:26 por planeta9999 »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Leer y ejecutar programa de una EEPROM externa.
« Respuesta #5 en: 08 de Junio de 2013, 16:23:21 »

Todo tu planteamiento es una locura, sin sentido.

Si no dispones de suficiente espacio en flash, trabaja con un PIC que tenga más flash, tienes PIC32 que llegan hasta los 512K de flash, y si sigue siendo insuficiente, prueba con un ARM, por ejemplo el STM32F407 tiene 1Mega de flash, si aún necesitas más prueba con un Raspberry o una Beaglebone que guardan el programa en tarjetas SD, con gigas de espacio para tus programas.


 :D :D Fíjate de que año es el post! Seguro jgpeiro estaba iniciandose, porque el actual hace cosas como las siguientes!  ;-)

http://www.todopic.com.ar/foros/index.php?topic=39080.0


 :mrgreen:


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Leer y ejecutar programa de una EEPROM externa.
« Respuesta #6 en: 08 de Junio de 2013, 17:35:18 »
:D :D Fíjate de que año es el post! Seguro jgpeiro estaba iniciandose,

La confusión viene por quienes han reflotado este post tan antiguo, ni me había dado cuenta que el mensaje original era del año catapum.  :5] :5]


Citar
porque el actual hace cosas como las siguientes!  ;-)
http://www.todopic.com.ar/foros/index.php?topic=39080.0

Tampoco ha avanzado tanto, con un Raspberry hubiera acabado antes, le hubiera salido más barato, y se hubiera calentado menos la cabeza reinventando la rueda, al final no se libra igualmente del tirón de orejas.  :mrgreen:


« Última modificación: 08 de Junio de 2013, 17:39:22 por planeta9999 »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Leer y ejecutar programa de una EEPROM externa.
« Respuesta #7 en: 08 de Junio de 2013, 19:53:35 »
Citar
porque el actual hace cosas como las siguientes!  ;-)
http://www.todopic.com.ar/foros/index.php?topic=39080.0

Tampoco ha avanzado tanto, con un Raspberry hubiera acabado antes, le hubiera salido más barato, y se hubiera calentado menos la cabeza reinventando la rueda, al final no se libra igualmente del tirón de orejas.  :mrgreen:


Lo único que leo es bla bla bla!  :mrgreen: A muchos nos gusta re-inventar la rueda porque se aprende mucho en el proceso  ;-)

Saludos!
No contesto mensajes privados, las consultas en el foro