Autor Tema: Correr programas en la memoria Ram de un Pic  (Leído 13079 veces)

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

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 128
Correr programas en la memoria Ram de un Pic
« en: 07 de Enero de 2019, 12:50:37 »
 Este es un proyecto que llevo pensando hace mucho tiempo, y aunque he realizado algunos programas que ya realizan esta funcion, me gustaria hacerlo de forma mas completa.

En fin me explicare mejor.  La idea es la siguiente:

1) Un microcontrolador 18F que es es que estoy trabajando actualmente aunque puede ser cualquier otro.

2) Se crean multiples subrutinas dentro de la memoria Flash de programa del Pic tales, como , configuraciones puertos, pwm, envio datos a puerto, convertidor A/D y muchas mas, cada una de estas subrutinas las llamaremos, comando1, comando2, comando3, ..... etc.

3) Reservaremos una parte de la memoria Ram del Pic  por ejemplo  entre la posicion 100 a 1FF, el programa principal empezara leyendo la posicion 100 y hay por ejemplo se encuentra el valor "1" que en su interpretacion de ordenes significa que tiene que ejecutar el comando1, y esto significa por ejemplo que tiene que configurar el puertoA con un determinado valor.
Una vez echo esto pasara a la siguiente posicion de memoria 101 de Ram y ejecutara otro comando y asi sucesivamente.

4) Evidentemente se necesitan datos adjuntos a estos comando, si queremos por ejemplo en el comando1 configurar el puerto PORTA con sus entradas y salidas, evidentemente debe haber un sitio donde le diga con que valor se debe configurar el ese puerto, bueno pues esos valores necesarios para el buen funcionamiento de los comandos pueden almacenarse entre las posiciones 200 a 2FF

5) Va a ser necesario otro bloque de memoria para los datos que se puedan generar u otras cosas mas, que por ejemplo puede estar en el bloque de RAM que va de posicion 300-3FF .

Bueno a esta altura de la pelicula si alguien se ha leido esto estara pensando para que coño querra este
tio hacer esto....JEJEJE.

La idea es convertir el microncontrolador en una especie de microprocesador, se que hay un microcontrolador de la
familia 18 que puede correr parte de codigo en SRAM, pero yo quiero ir mas alla y poder correr funciones
mas complejas, es como si yo creara los comandos que se van a ejecutar en este microprocesador.

Que ventajas tiene esto:

Es inmediato, yo creo un programa se lo meto en memoria RAM atraves del puerto serie, lo ejecuto y miro como
se comporta, y lo modifico y lo vuelvo ejecutar miles de veces, las veces que yo quiero.
Creo multiples combinaciones exteriormente.

Lo unico que tengo que hacer es cargar los bloques de Memoria y dar la orden de ejecucion.

Desventajas:
Se pierde en velocidad y se complican las creaciones de programas, pero mas tarde se puede crear un interpretador de ordenes.

Bueno yo me manejo en Linux, para mi crear programas en C  que cargen los bloques de memoria del Pic y lo almacenen
en memoria RAM del Pic no me supone problema, pero entiendo que por lo general la gente se maneja en windows.

En fin me gustaria saber que le parece a la gente esta idea.

Muy feliz año y prospero año nuevo para toda la gente de este foro.
« Última modificación: 07 de Enero de 2019, 13:12:32 por misterweb »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #1 en: 07 de Enero de 2019, 13:12:44 »
Me parece que vas a perder el tiempo y sin sentido.

Lo que vayas a cargar en la RAM tiene que estar en algun lado, Y es la FLASH, en resumen, Directamente crear una tabla que ejecute esos "comandos" y listo, te ahorras la RAM.
Si vas a enviar las cosas por una PC para que luego lo ejecute, entonces puede que si... Pero no le llamaria "correr programa DESDE la RAM" sino que en la RAM exista una tabla que redireccione al micro para un lado u otro.

Queres ejecutar cosas de la RAM? Buscate otro micro que lo haga. Por el mismo precio tenes algunos ARM que lo hacen. Hay solo un par de casos que vale la pena ejecutar de la RAM. Hablo de tener instrucciones en la RAM y ejecutarlas. Como si fuera la FLASH.

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 128
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #2 en: 07 de Enero de 2019, 15:00:11 »
Bueno lo que busco mas o menos es tener un microprocesador pero con las ventajas de un microcontrolador, esto es los microprocesadores no tienen pwm, convertidores analogicos digitales, comparadores etc...

Si efectivamente no es correr en RAM sino como tu dices un redireccionamiento a una tabla de subrutinas.

Yo creo en el PC un archivo de texto con las ordenes y los datos y se los cargo atraves un programa por el puerto serie en los bloques de memoria RAM del Pic  y luego le doy la orden de ejecutar.

Me parece muy util, por ejemplo imaginarque estoy intentando saber como puedo configurar por ejemplo un LCD y que saque un mensaje. Escribo en el archivo del PC, los datos secuencialmente para que salga por un puerto del PIC, le cargo este archivo al PIC y pruebo hasta que doy con las configuracion que haga que funcione correctamente el LCD.

Quien dice un LCD, puede ser eprom, cualquier dispositico con entrada I2C, o cualquier otro dispositivo.

Simplente tengo que modificar el archivo de texto y volver a enchufarle los datos al PIC de nuevo, hasta que de con la configuracion correcta.

Luego una vez hallado puedo ya crear el programa de programacion normal para el PIC.

Me ahorro tener que estar programando y reprogramando el PIC unicamente tengo que varior los datos en un archivo de texto.

En fin es solo una idea.

Saludos.

« Última modificación: 07 de Enero de 2019, 15:05:51 por misterweb »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #3 en: 07 de Enero de 2019, 18:31:02 »
Creo que lo que estás buscando es un bootloader.
Busca info sobre ellos a ver si te solucionan el problema.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #4 en: 07 de Enero de 2019, 18:32:00 »
También por lo que cuentas puede que te interese el lenguaje FORTH

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #5 en: 07 de Enero de 2019, 21:40:49 »
Citar
Bueno lo que busco mas o menos es tener un microprocesador pero con las ventajas de un microcontrolador, esto es los microprocesadores no tienen pwm, convertidores analógicos digitales, comparadores etc...

Te estas equivocando... Eso lo tienen, el problema es que un microprocesador no estas hablando de algo pequeño como para lo que pretendes.

Citar
Me parece muy util, por ejemplo imaginarque estoy intentando saber como puedo configurar por ejemplo un LCD y que saque un mensaje. Escribo en el archivo del PC, los datos secuencialmente para que salga por un puerto del PIC, le cargo este archivo al PIC y pruebo hasta que doy con las configuracion que haga que funcione correctamente el LCD.

Parece genial pero no contas con todo lo demás que tenes que tener en cuenta. La preparación de las funciones que pretendes. El desarrollo de lo que pretendes, el debug, etc. La poca memoria RAM que tenes. Luego querer implementar otra cosa ya que va a ser MUY especifica tu implementacion. TODO ese tiempo va a ser mejor destinado a programar correctamente. Hay miles de formas de programar y de "probar" el programa sin siquiera subirlo a un microcontrolador o un simulador. Para que luego no estes grabando miles de veces el microcontrolador.

Disculpa que no comparta tu idea y que sea alguien que te de la contra, solo quiero que no pierdas el tiempo. Si lo queres hacer como un desafio, adelante. Yo lo estoy viendo del punto de vista practico, ademas, apenas pierda energía no tendría mas el programa.
Tampoco es un bootloader. Tampoco es un microprocesador, el microprocesador no ejecuta de la RAM. Si quisiera lo que el quiere hacer me busco un ARM con una RAM externa, copio todo a la RAM externa y voy ejectuando desde la RAM, como debe ser, dejando un programa como "supervisor"... Y ahi SI cargo el programa como debe ser, con las instrucciones correctas que irian en el microcontrolador y estaria ejecutando esas funciones (un poco mas lento obviamente). Distinto es lo que el intenta.
Por esto

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 128
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #6 en: 08 de Enero de 2019, 15:40:39 »
Buenas KILLERJC, Picuino gracias por las contestaciones, perdon un poco por el pequeño retraso, pero estoy trabajando y hasta que no llego a casa y no me desenvuelvo de algunas cosas no puedo contestar.

Parece que la idea no esta causando sensacion   ...... JEJEJE.

Bueno no importa era eso solo una idea, yo solo lo hago por cacharrear la verdad es que ni voy a obtener ningun dinero de ello ni voy aprobar ninguna asignatura...... vamos de los bichos raros que disfruta el tiempo programando en ensamblador y en C sin obtener ningun beneficio a cambio...... ya podia tener otras aficiones mas productivas como jugar en bolsa...jejeje.

Y en parte tambien por que ya me esta funcionando, la idea es si merece la pena llevarlo mas alla, pero la verdad es que me estais convenciendo de que no.

Demasiado trabajo, pienso que puede ser util en algunos casos en concreto para chequear un circuito, crear un pulso determinado, etc..
pero de ahi a crearse todo un sistema, es verdad que no merece la pena.

Bueno KILLERJC y Picuino muchas gracias por vuestras contestaciones...

Un saludo.


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #7 en: 08 de Enero de 2019, 16:13:12 »
Citar
Demasiado trabajo, pienso que puede ser util en algunos casos en concreto para chequear un circuito, crear un pulso determinado, etc..
pero de ahi a crearse todo un sistema, es verdad que no merece la pena.

El trabajo que planteas es muy parecido a como funcionan estos "robots" para los estudiantes que recién aprenden electrónica, el cual uno puede decirles que avancen x vueltas, o tantos grados. Hay una persona que pregunto por eso. Y la aplicacion en software es muy parecida a la que planteas. Obviamente que puede tener utilidad. Por eso te dije que si queres hacerlo, como un hobby etc, lo hagas. Pero no lo pienses en que va a ser una revolucion o por los motivos que me diste antes (unirlo al mundo de los microprocesadores, etc)

Es decir.. tenes una serie de funciones especificas a la aplicación, y vos cambias el "orden" y "cantidad" de ejecucion. Aun asi estas pueden trabajar con EEPROM mas que RAM... Pero el principio es identico. Nuevamente, si me decias que era para esto lo tomaba de otra forma xD
« Última modificación: 08 de Enero de 2019, 16:23:44 por KILLERJC »

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 128
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #8 en: 08 de Enero de 2019, 17:44:00 »
 Todo lo que hago es por hobby, en fin la idea tampoco es que la tenga muy clara, pero bueno la idea que yo tenia pensado seria:

En el microcontrolador hay un monton de subrutinas que ya estan probadas y funcionando, subrutinas como control Pwm, convertidor a/d, comparadores y un largo etc...

Por otro lado tenemos un programa que controla la carga de datos del puerto serie en la RAM, y segun esos datos en RAM  lo que hace interpretar las ordenes y los datos para ir ejecutando esas subrutinas con los datos adecuados que tambien estan en la RAM.

En estas funciones deberia estar tambien implementadas la funciones propias de pic como goto, call, return etc... para poder hacer ciclos y demas cosas.

Creo que va mas haya del programa de "robots" que dices, ya que en si se crearian programas, que se podrian modificar constantemente escribiendo simplemente en este archivo de texto, y modificandolo, cada archivo de texto podrian ser programas totalmente distintos.

Se cargan se prueban y listo.

No esta estaria pensado tanto en hacer un proyecto definitivo en que se quedaria funcionando asi, sino que estaria pensado para probar creacion de programas y ver si funcionan, sobre todo en la rapidez de modificacion, carga y ejecucion.
Y una vez comprobado su funcionamiento, llevarlo a un programa de microcontrolador definitivo normal y al uso.

Pero en fin el desarrollo de este interpretador de ordenes y datos en RAM seria lo que llevaria un trabajito de mucho cuidado.. estoy convenciendome de que no merece la pena.

Como tu dices yo solo lo hago por hobby, No creo que para nada de lo que haga vaya a crear un revolucion...jejeje.... tampoco es mi interes, todo lo que hago es por divertirme.

Ademas no estoy inventando nada nuevo los micocontroladores , pic etc.. solo entienden de unos y ceros, el lenguaje ensamblador ya tiene un interpretador, el lenguace C ya es a un nivel superior y asi hasta los distintos lenguajes.

Saludos.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #9 en: 08 de Enero de 2019, 18:06:58 »
 
Estás intentando crear un lenguaje intérprete, algo totalmente ineficiente, aparte de que es bastante complejo de desarrollar.

Yo no perdería el tiempo en esas cosas, en todo caso haces tu programa en C, lo compilas y te creas un archivo de texto en tarjeta SD para parametrizar el funcionamiento, pero no para escribir ahí el programa.

Si te empeñas en el lenguaje intérprete, es algo que ya está inventado, te puedes bajar el MiniBasic, es un intérprete Basic desarrollado en C, que puedes portar a cualquier plataforma. Ahora, el rendimiento del microcontrolador se va a caer en picado.  https://sourceforge.net/projects/minibasic/

Otro tema es rodar programas en Ram, no se si se puede hacer con los PIC. Con algunos ARM si que puedes compilar para que el programa se cargue y ejecute en Ram. Yo lo estoy haciendo con los RT1020, pero con memorias Ram de 256Mbit.
« Última modificación: 08 de Enero de 2019, 18:14:04 por planeta9999 »

Desconectado misterweb

  • PIC16
  • ***
  • Mensajes: 128
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #10 en: 08 de Enero de 2019, 19:22:18 »
Saludos paneta9999

Menudo animalico el RT1020 creo que me llevaria toda una vida comprenderlo.

Hay por ahi un pic que no me acuerdo cual es que corre codigo en RAM una parte SRAM y tambien en memoria externa.

Pero poniendo mis pensamientos en alto en este post me doy cuenta de que la idea seria como un "debbuger" cargo,, un programa lo chequeo , y lo modifico las veces necesarias. Esto ya existe en los PICs con los ICD2 , ICD3, etc... pero a diferencia que la rutinas ya estarian grabadas en el PIC y grabadas de antemano y funcionando.

En fin no hay mejor cosa que publicar tus pensamientos....para que contesten de lo descabelladas y locas que son tus  ideas y para mas remate..... tengan razon......jejejeje.

Saludos.
« Última modificación: 08 de Enero de 2019, 19:55:23 por misterweb »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #11 en: 08 de Enero de 2019, 22:27:24 »

Menudo animalico el RT1020 creo que me llevaria toda una vida comprenderlo.


Que va, es muy sencillo, igual que programar cualquier otro microcontrolador en C. Además, usando el IDE MCUXpresso, tienes las Config Tools que te permiten configurar todos los periféricos y el reloj de manera gráfica, sin tener que escribir una solo linea de código, más fácil imposible, yo estoy encantado con el entorno de trabajo de NXP, es genial.

Lo que ya tiene más miga es el DMA, a mi al menos es un tema que me está costando bastante, pero a base de probar y probar, va saliendo, sobre todo usando los ejemplos que trae el SDK para los micros de NXP.

Acaban de sacar una nueva versión del IDE, la 10.3 y el SDK 2.5 que ya incluye las Peripheral Tools para la serie RT y los Kinetis, con este asistente configurar cualquier periférico es cosa de niños. Quiero mirarlo bien para ver si por fin puedo configurar el DMA sin tener que sufrir leyendo tochos de manuales que no hay quien los entienda, por ahora me he ido salvando a base de trabajar con los programas de ejemplo que trae el SDK, que son muchos.

 

« Última modificación: 08 de Enero de 2019, 22:33:06 por planeta9999 »

Desconectado AleSergi

  • PIC16
  • ***
  • Mensajes: 214
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #12 en: 08 de Enero de 2019, 23:06:11 »
También por lo que cuentas puede que te interese el lenguaje FORTH
y otra vez más, siendo que programe en ese lenguaje, porque no lees de que se trata, es lo más parecido a lo que planteas....
(y existe para pic tambien....)

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #13 en: 09 de Enero de 2019, 04:29:55 »
Reitero lo del FORTH, al menos para que conozcas su filosofía. Te ayudará.

Otro tema semejante es el de las máquinas virtuales de bytecode, como la de java.

Yo estoy haciendo algo semejante, pero para secuenciar luces y servomotores.
Si que tiene muchas aplicaciones, pero en los pic deberías combinarlo con un bootloader para la flash y aprender la teoría que te propongo para que te dé ideas nuevas.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Correr programas en la memoria Ram de un Pic
« Respuesta #14 en: 09 de Enero de 2019, 04:38:31 »
https://es.wikipedia.org/wiki/Forth

Esto es lo que tu quieres y  es una de las implementaciones del FORTH:
https://es.wikipedia.org/wiki/C%C3%B3digo_enhebrado

Algo de máquinas virtuales, la de java es la más conocida:
https://es.wikipedia.org/wiki/M%C3%A1quina_virtual_Java

Tendrás que decidir si haces una máquina orientada a pila o bien orientada a registro:
https://es.wikipedia.org/wiki/M%C3%A1quina_de_registro
https://es.wikipedia.org/wiki/M%C3%A1quina_de_pila

Un saludo.


 

anything