毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

framebuffer mmap失败

更新时间:2012-5-29:  来源:毕业论文

    int   fbfd,screensize;

//   Open   the   file   for   reading   and   writing

fbfd   =   open(   ptr,   O_RDWR);     //       ptr为/dev/fb0

if   (fbfd   <   0)  

{

printf( "Error:   cannot   open   framebuffer   device.%x\n ",fbfd);

return   ERR_FRAME_BUFFER;

}

printf( "The   framebuffer   device   was   opened   successfully.\n ");

 

vd-> fbfd   =   fbfd; //   保存打开FrameBuffer设备的句柄

 

//   Get   fixed   screen   information 获取FrameBuffer固定不变的信息

if   (ioctl(fbfd,   FBIOGET_FSCREENINFO,   &vd-> finfo))  

{

printf( "Error   reading   fixed   information.\n ");

return   ERR_FRAME_BUFFER;

}


//   Get   variable   screen   information   获取FrameBuffer屏幕可变的信息

if   (ioctl(fbfd,   FBIOGET_VSCREENINFO,   &vd-> vinfo))  

{

printf( "Error   reading   variable   information.\n ");

return   ERR_FRAME_BUFFER;

}


printf( "%dx%d,   %dbpp,   xoffset=%d   ,yoffset=%d   \n ",   vd-> vinfo.xres,   vd-> vinfo.yres,   vd-> vinfo.bits_per_pixel,vd-> vinfo.xoffset,vd-> vinfo.yoffset   );


//   Figure   out   the   size   of   the   screen   in   bytes

screensize   =   vd-> vinfo.xres   *   vd-> vinfo.yres   *   vd-> vinfo.bits_per_pixel   /   8;

printf( "\nscreensize=%d\n ",screensize   );


//   Map   the   device   to   memory

vd-> fbp   =   (char   *)mmap(0,screensizes,PROT_READ|PROT_WRITE,MAP_SHARED,fbfd,0);   //   影射Framebuffer设备到内存

printf( "errno   is:   %d\n ",errno);

if   ((int)vd-> fbp   ==   -1)  

{

printf( "Error:   failed   to   map   framebuffer   device   to   memory.\n ");

return   ERR_FRAME_BUFFER;

}

printf( "The   framebuffer   device   was   mapped   to   memory   successfully.\n ");

return     0;

结果如下  
root@embededsys-computer://work/nfsdir/rootfs#   gcc   -o   video   video.c
video.c:   In   function   ‘udps_respon’:
video.c:418:   warning:   format   not   a   string   literal   and   no   format   arguments
root@embededsys-computer://work/nfsdir/rootfs#   ./video
The   framebuffer   device   was   opened   successfully.
640x480,   4bpp,   xoffset=0   ,yoffset=0  

screensize=153600
errno   is:   22
Error:   failed   to   map   framebuffer   device   to   memory.

可我把vd-> fbp   =   (char   *)mmap(0,screensizes,PROT_READ|PROT_WRITE,MAP_SHARED,fbfd,0);screensizes改成10000后没有报错   我设置的太大了吗
你可以把错误信息打出来看看 现在没设备但我很清楚的记得是22
PS:终于有人来帮我了····
#define EINVAL 22 /* Invalid argument */

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。