Ver la versión completa : Trasteando con la memoria
Hola:
Con vistas a portar algún juego que necesitará más de 32MB, me he puesto a intentar escribir en los 32 megas de memoria que no son accesibles directamente por el kernel. Me he hecho un programa sencillito que hace un mmap de /dev/mem para acceder a esa memoria (concretamente he probado los 48MB desde 16MB hasta 64MB), y luego escribe aleatoriamente en toda esa zona.
Mi problema es que no se como está mapeada la memoria y estoy machacando la memoria de video al ejecutar el programa. ¿Hay documentación sobre esto? ¿O hay que ir probando? Me iría bastante bien saber donde están mapeadas las cosas para no cargarmelas... :confused:
Seguro que esto ya estaba respondido por el foro, pero he hecho unas cuantas búsquedas (lo juro!) y no he encontrado nada...
Venga, muchas gracias!
MKL
A.r.R.c.H.E.r
14/01/2006, 18:39
Puedes modificar tu programa para que cuando detecte que se modifica el primer pixel de la pantalla que pare y te de la direccion de memoria, asi ya tendrias la direccion de la pantalla... alomejor e dicho una gilipolles :D
Bueno... supongo que podría hacerse. Pero no hay por ahi disponible en algún manual el mapa de memoria completo de la GP2X? Para asegurarme de que zonas de memoria puedo usar y cuales no... Porque seguro que hay más cosas mapeadas por ahi y me las estoy cargando XD
MKL
Puck2099
14/01/2006, 19:06
Bueno... supongo que podría hacerse. Pero no hay por ahi disponible en algún manual el mapa de memoria completo de la GP2X? Para asegurarme de que zonas de memoria puedo usar y cuales no... Porque seguro que hay más cosas mapeadas por ahi y me las estoy cargando XD
MKL
¿Has mirado los documentos del FTP?
Uhm... no había mirado los documentos, no sabía que estuvieran en el FTP.
He encontrado el mapa de memoria por fin (lo adjunto) y la verdad es que ahora todavía entiendo menos lo que está pasando... Dónde se supone que estan los 32 megas no accesibles por el kernel?
Bueno, seguiré haciendo pruebas a ver si hago que sirva de algo.
Gracias por las respuestas!
MKL
Edit: Por lo que veo, el código y las variables se ponen enseguida a partir de la posición 0, pero la pila está por ahi en 0xBCFFFFFF (?) Es esto correcto? Porque cada vez me parece más raro todo esto o_O
En mi opinión, lo que estás intentando hacer es una burrada. No deberías tocar la memoria del kernel, puedes provocar un problema muy grande, desde que sencillamente se cuelgue, hasta que sobreescriba la NAND o algo peor. Es mucho mejor que intentes optimizar tu programa para que consuma menos memoria.
Habrá que correr el riesgo...
Yo he pagado por 64MB! ;)
Pero bueno, ya intentaré andarme con cuidado.
LukStarkiller
15/01/2006, 00:26
***** digo yo que el kernel se podra cargar en menos de 16MB, sino vaya porqueria de sistema para portatil.
Yo creo que con 8MB pa SO tienen espacio y el resto pa los juegos coñe, igualemnte es absurdo eso dde no dar acceso, que es RAM, el SO i los jeugos se deberian cargar seguidos sin ningun problema. A no ser que meste liando yo he entendido por lo que he leido akiq ue el SO lo carga en esos 32MB no disponibles para juegos y me parece una idiotez.
***** digo yo que el kernel se podra cargar en menos de 16MB, sino vaya porqueria de sistema para portatil.
Yo creo que con 8MB pa SO tienen espacio y el resto pa los juegos coñe, igualemnte es absurdo eso dde no dar acceso, que es RAM, el SO i los jeugos se deberian cargar seguidos sin ningun problema. A no ser que meste liando yo he entendido por lo que he leido akiq ue el SO lo carga en esos 32MB no disponibles para juegos y me parece una idiotez.
Creo que si te estas liando un poco :) , de los 32 megas ( 30480 kbytes realmente ) de ram que se pueden usar actualmente , el sistema usa 7888 kbytes por lo que nos quedan 22592 kbytes, el motivo por el que "solo" tenemos disponibles 32 megas de los teoricos 64 es por que el cacharro inicialmente iva a tener esa cantidad de ram y la ampliación fue algo de ultima hora , ahora falta saber si finalmente y como decian sacaran una version de firmware que soporte esos 64 o existe una limitacion de hard y nos vendieron la moto.
El uso de la nand para almacenar datos por el usuario de una forma directa y facil , de momento y visto lo visto mejor que lo sigan limitando porque la cantidad de ladrillos podria ser impresionante , quien quiera usar la nand y sepa como ya puede hacerlo, el resto mejor que no hagan.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.