在使用Linux系统函数mmap(),将FrameBuffer映射到内存上来实现一个简单的贪吃蛇游戏时,在自己的Redhat 6.4上测试时,运行程序结果却提示:“No such device”。可是在/dev/下可以查看到fb0与fb都是存在的,并且操作权限是足够的。刚开始没有想到是驱动的问题,在网上站到了解决方案:问题是FrameBuffer驱动程序没有激活。
问题截图如下:
这里写图片描述
解决方案:
打开/boot/grub/menu.lst文件,文件如下:
这里写图片描述

在文件16行的末尾加上“vga=0x0317”并保存退出,然后reboot(下图是重启后的截图,可以看到文本颜色是发生了一些变化的,因为其RGB变化了)。
这里写图片描述
至于为什么是0x0317这个值,是因为我的显示器是1024*768(16bit(RGB655)),测试如下:
这里写图片描述
而不同分辨率与不同显示色数对应的这个vga值是不同的,如下:

VGA parameter table:
  Mode 0x0300:   640x400 (+640), 8 bits
  Mode 0x0301:   640x480 (+640), 8 bits
  Mode 0x0303:   800x600 (+800), 8 bits
  Mode 0x0305:   1024x768 (+1024), 8 bits
  Mode 0x0307:   1280x1024 (+1280), 8 bits
  Mode 0x030e:   320x200 (+640), 16 bits
  Mode 0x030f:    320x200 (+1280), 24 bits
  Mode 0x0311:   640x480 (+1280), 16 bits
  Mode 0x0312:   640x480 (+2560), 24 bits
  Mode 0x0314:   800x600 (+1600), 16 bits
  Mode 0x0315:   800x600 (+3200), 24 bits
  Mode 0x0317:   1024x768 (+2048), 16 bits
  Mode 0x0318:   1024x768 (+4096), 24 bits
  Mode 0x031a:   1280x1024 (+2560), 16 bits
  Mode 0x031b:   1280x1024 (+5120), 24 bits
  Mode 0x0330:   320x200 (+320), 8 bits
  Mode 0x0331:   320x400 (+320), 8 bits
  Mode 0x0332:   320x400 (+640), 16 bits
  Mode 0x0333:   320x400 (+1280), 24 bits
  Mode 0x0334:   320x240 (+320), 8 bits
  Mode 0x0335:   320x240 (+640), 16 bits
  Mode 0x0336:   320x240 (+1280), 24 bits
  Mode 0x033d:   640x400 (+1280), 16 bits
  Mode 0x033e:   640x400 (+2560), 24 bits
  Mode 0x0345:   1600x1200 (+1600), 8 bits
  Mode 0x0346:   1600x1200 (+3200), 16 bits
  Mode 0x0347:   1400x1050 (+1400), 8 bits
  Mode 0x0348:   1400x1050 (+2800), 16 bits
  Mode 0x0349:   1400x1050 (+5600), 24 bits
  Mode 0x034a:   1600x1200 (+6400), 24 bits
  Mode 0x0352:   2048x1536 (+8192), 24 bits
  Mode 0x0360:   1280x800 (+1280), 8 bits
  Mode 0x0361:   1280x800 (+5120), 24 bits
  Mode 0x0362:   768x480 (+768), 8 bits
  Mode 0x0364:   1440x900 (+1440), 8 bits
  Mode 0x0365:   1440x900 (+5760), 24 bits
  Mode 0x0368:   1680x1050 (+1680), 8 bits
  Mode 0x0369:   1680x1050 (+6720), 24 bits
  Mode 0x037c:   1920x1200 (+1920), 8 bits
  Mode 0x037d:   1920x1200 (+7680), 24 bits

重启之后,我们再运行程序,问题完美解决了(VESA FrameBuffer 驱动程序已经被激活)。
这里写图片描述

感谢yeqishi博主原创作品给予的帮助:(开启linux(redhat、ubuntu) FrameBuffer )链接:http://blog.csdn.net/yeqishi/article/details/5573097

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐