¿Cómo puedo leer/escribir memoria SRAM 4Mb desde el PC?

Hola a todos, mi problema es el siguiente:

Quisiera poder leer y escribir una memoria SRAM de 4Mb desde mi PC de la misma forma que se usa el Icprog o el winpic 800, es decir, con un botón leo los datos, los muestra en la pantalla, modifico los datos que quiero y con otro botón escribo los datos.

Para ello surgen varios problemas:

1.- Al ser una memoria volátil necesito mantener la memoria siempre alimentada para que no se pierdan esos datos. Solucionado: me hice un adaptador para tener a mano todos los pines y mantener la tensión con un pila CR2032

2.- No tengo un lector de memorias de tantos pines (16 para datos y 16 para direcciones). Solucionado: un pequeño circuito con un pic controla el bus de direcciones, lee el dato y lo envía a través del puerto serie. No hay problemas para añadir una rutina al pic y hacer que escriba el dato para el proceso inverso

3.- Hace falta un software que reciba esos bytes por puerto serie y me los muestre en pantalla.

Por más que busco no encuentro un software que reciba los datos del puerto serie de un chip desconocido y me lo muestre en pantalla.

¿A alguien se le ocurre una solución posible o le ha pasado algo parecido?
 
3.- Hace falta un software que reciba esos bytes por puerto serie y me los muestre en pantalla.
Por lo que veo, resuelves todo, menos lo más elemental que requieres.
Por más que busco no encuentro un software que reciba los datos del puerto serie de un chip desconocido y me lo muestre en pantalla.
Para casos así de especiales, también hace falta saber programar las aplicaciones.
¿A alguien se le ocurre una solución posible o le ha pasado algo parecido?
Yo pienso que debes de empezar por aprender a programar aplicaciones.
 
pues no es descabellado hace años hice algo parecido con una SRAM de 16kb para poder cargar juegos a un atari2600

lo de la SRAM se resuelve con una bateria CR2032 como dices, la idea es enviar un paquete de bytes en modo grabar luego en modo leer revisar que los bytes hayan llegado sin perdida.

https://www.forosdeelectronica.com/f26/grabador-memorias-paralelo-usb-110360/

la idea es abrir un archivo en modo binario el binario se puede cargar todo en un string o enviar en grupos de bytes hasta terminar de leer el binario.

se puede representar el binario en un textbox para ver los bytes como si se tratara de un editor.

para enviar bytes debes hacer un eco es decir debes enviar un comando para que el pic entre en modo grabar y el pic debe enviar un comando para indicar que esta listo para grabar , envias un grupo de bytes y el pic envia el mismo grupo de bytes para saber que llegaron bien y sin errores.

y asi hasta acabar con el binario.

lo mismo pasa para leer la RAM
 
1) Supongo que lo has tenido en cuenta. Si sólo alimentas con una pila se te correrán los datos más pronto que tarde. Debes de desactivar las líneas de selección de chip y la de escritura mientas trasteado el chip.
2) Que el pic formatee la salida con comas o algo así
3) Necesitas un programa terminal con capacidad de escribir lo que recibe en un archivo y viceversa.
Se llama hoja de cálculo , por ejemplo, importas el CSV y ya lo ves.
También puedes hacer la salida en .hex o semejante desde el pic,


En su día utilizaba .hex para reprogramar el micro mientras seguía funcionando la aplicación IAP.

 
"chip desconocido" esta es la parte complicada, siempre es mejor saber de que chip o memoria se trata. para no volverte loco, te combiene usar el UART interno del pic, leer dato por dato en 8 bits, este dato lo pasas a lagun puerto de 8 bits por ej: PORTA = DATO, y usas la memoria en 8 bits en vez de 16. Luego necesitas un puerto de direccion que en tu caso puede ser acumulador, por ej: PORTB=PORTB + 1; EL problema de usar estos chips de forma paralela es que cuando te queres acordar no hay pic que le alcancen las patas!

Aparte con este dato que das "(16 para datos y 16 para direcciones)" las cuentas no me cierran, este dato da a entender que tu memoria tiene un maximo absoluto de 1 Mega Bit y vos queres grabar 4Mb creo que te faltan un poco de calculos de espacio antes de lanzarte a hacer esto. replantea lo que buscas hay memorias muy baratas y de muchisima mas capacidad en formato serie como por ej: 25q64fw de WINBOND
 
a lo mejor son 4M bits y no 4Mbytes, es lo hace mas simple de comprender.

lo que yo hice hace unos ayeres fue usar RS232 y escribi algunas directivas en el pic y la terminal escrita en turbo C.

la idea era muy simple abrir mi binario hasta EOF cuando llegaba a EOF enviaba al pic un comando de acabe.

es decir debia hacer una trama que estaba hecha mas o menos asi:

simbolo,un paquete de 8 bits
algo parecido a esto
#,AA,AF,0F,22,EF,FF,43,A1

la trama tenia un simbolo inicial que le decia al pic # escribe , $ acabe
y el paquete de 8 bytes se enviaban a un string que el pic se encargaba de meterlos a la memoria
cuando acababa de escribir el pic me enviaba un simbolo $ de acabe enviame mas datos hasta EOF.

el direccionamiento lo hice con integrados contadores binarios CD4040 pero no se me habia ocurrido usar integrados de registro de corrimiento como el 74hc595 para hacer direccionamientos especiales como usados en las memorias flash.

despues hice algo mas practico un entorno escrito en visual C++ y el pic18f4550 para usarlo en modo USB-HID

la idea es basicamente la misma debes jugar con CS, CE W y R de la RAM para poder escribir o leer sin perder datos el entorno de enviar los bytes por la PC es algo mas simple.

no necesariamente debes hacer un .HEX para abrir con la PC ni hacer formatos raros como formato S ni formato intel HEX.

basta con abrir el archivo en modo binario y enviar los bytes crudos por la terminal, para verlos en forma HEX solo basta por imprimir en pantalla
 
Gracias por las respuestas. Intentaré aclarar un poco más lo que estoy buscando.

Por supuesto que si supiera programar yo mismo podría hacerme el programa a medida, pero no es el caso. Esperaba que alguien me diera una idea sobre algún software que yo ahora mismo desconozco pero que es posible que alguien tenga localizado.

La comunicación entre el pic y la memoria no me da ningún problema. Incluso la forma en que el pic entrega los datos por puerto serie me es sencillo de modificar. Al pic puedo mandarle por puerto serie que lea o escriba un byte o incluso la memoria completa.

Scooter es el que creo que mejor me ha entendido. Me recomienda un programa terminal que al fin y al cabo me muestra los datos que recibe el puerto serie en pantalla. De hecho es la solución que estoy usando para la lectura. Pero sigo con el problema de modificar con facilidad un dato y volver a grabar la memoria. Lo ideal sería una interfaz tipo icprog o winpic800

PHelectronica tiene razón en que he sido poco exacto con los datos del bus de direcciones. Exactamente son 18 pines para las direcciones y 16 pines para los datos. Es una memoria 4M SRAM (256-kword × 16-bit)

Gracias por vuestra ayuda.
 
Atrás
Arriba