🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
3 messages
3 total messages Started by orlando balbuena Thu, 02 Mar 2006 19:58
hola a todos, soy nuevo y traigo dudas
#1239
Author: orlando balbuena
Date: Thu, 02 Mar 2006 19:58
22 lines
1980 bytes
Hola amigos del grupo, lo que me trae a escribir es una duda sobre el
acceso amemoria en linux el tema es que realice un programa en c bajo
windows (tc++ 3.0) para acceder a escribir directamete sobre la ram de
video, la instruccion es la siguiente:
.
char far *ini_pant=(char far *)0xB8000000; /* puntero al inicio de
pantalla */
.

anda perfecto ya que luego de los calculos para la posicion del
caracter, solo hago *ini_pant=caracter;.

Pero no puedo hacer lo mismo en linux ya que no me reconoce el far *,
viendo alguna info vi que no es ANSI-C por lo que lo elimine, compilo
sin problema pero al ejecutar me aparece el error Segmentation
Fault(coredump) ,
En que estoy fallando? acaso es la forma de direccionar la RAM, o la
direccion de video es otra? Estare agradecido cualquier ayuda.


gracias 
Orlando
Re: hola a todos, soy nuevo y traigo dudas
#1244
Author: Leto Atreides
Date: Fri, 03 Mar 2006 09:28
32 lines
2660 bytes
orlando balbuena escribi�:
> Hola amigos del grupo, lo que me trae a escribir es una duda sobre el
> acceso amemoria en linux el tema es que realice un programa en c bajo
> windows (tc++ 3.0) para acceder a escribir directamete sobre la ram de
> video, la instruccion es la siguiente:
> .
> char far *ini_pant=(char far *)0xB8000000; /* puntero al inicio de
> pantalla */
> .
> 
> anda perfecto ya que luego de los calculos para la posicion del
> caracter, solo hago *ini_pant=caracter;.
> 
> Pero no puedo hacer lo mismo en linux ya que no me reconoce el far *,
> viendo alguna info vi que no es ANSI-C por lo que lo elimine, compilo
> sin problema pero al ejecutar me aparece el error Segmentation
> Fault(coredump) ,
> En que estoy fallando? acaso es la forma de direccionar la RAM, o la
> direccion de video es otra? Estare agradecido cualquier ayuda.
> 

Tu problema es que Linux protege los diferentes dispositivos y sus 
respectivas zonas de memoria. En MS-DOS no habia ningun control al 
respecto y podias acceder directamente a la zona de memoria reservada 
para la tarjeta de video. Asi que, tu no puedes acceder a ninguna zona 
de memoria (como la 0xB8000000) si que la hayas reservado primero.

El problema es que no creo que puedas reservar esa zona de memoria 
porque pertenece al sistema y puedes vulnerar la estabilidad de este. 
Pero si no me equivoco, existe una libreria en linux que te permite 
trabajar con la tarjeta de video en modo texto (creo que es la 
aalib-devel pero no estoy nada seguro).
Re: hola a todos, soy nuevo y traigo dudas
#1245
Author: Gonzalo Pérez de Olaguer Córdoba
Date: Fri, 03 Mar 2006 11:00
33 lines
2593 bytes
Hola "orlando balbuena" <orlandobalbuena@gmail.com>
el 2 Mar 2006 11:58:44 -0800 escribiste:

> Hola amigos del grupo, lo que me trae a escribir es una duda sobre el
> acceso amemoria en linux el tema es que realice un programa en c bajo
> windows (tc++ 3.0) para acceder a escribir directamete sobre la ram de
> video, la instruccion es la siguiente:
> .
> char far *ini_pant=(char far *)0xB8000000; /* puntero al inicio de
> pantalla */
> .
> 
> anda perfecto ya que luego de los calculos para la posicion del
> caracter, solo hago *ini_pant=caracter;.
> 
> Pero no puedo hacer lo mismo en linux ya que no me reconoce el far *,
> viendo alguna info vi que no es ANSI-C por lo que lo elimine, compilo
> sin problema pero al ejecutar me aparece el error Segmentation
> Fault(coredump) ,
> En que estoy fallando? acaso es la forma de direccionar la RAM, o la
> direccion de video es otra? Estare agradecido cualquier ayuda.

Creo que lo que quieres hacer es posible, pero primero tendrás que
pedirle al kernel que te mappee la memoria de vídeo (que puede ser
cualquier dirección) al espacio de direcciones de tu programa, y te
pase un puntero.

¿Cómo se hace eso de manera portable? No sé, pero me suenan dos cosas
que te pueden servir: svgalib y frame buffers.

-- 
Gonzalo Pérez de Olaguer Córdoba <gpoc@iies.es>
PGP key 2861C704 --- F206 5671 6789 425D 111C  1302 214F 1934 2861 C704
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads