我是靠谱客的博主 内向老虎,最近开发中收集的这篇文章主要介绍linux fb0测试,在Ubuntu 10.10版本中如何利用framebuf来驱动fb0设备,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

虽然framebuffer有很多局限性,比如在内核启动之后就无法修改分辨率,但是通过framebuffer这个内核抽象出来的设备文件可以很方便的控制显卡,显示图像。

由于framebuffer是显卡的抽象,因此向 /dev/fb0(假设是fb0),就相当于向显存写数据,因此无论你是在什么环境下屏幕都会被覆盖掉,但是同时还有其他进程和你争抢显卡的显示权,因此需要一种方式独占显卡的使用权限,这个也是我找了很久才发现的。

对framebuffer的操作很容易从网上找到例子,我这里简单说一下

1.在未开启framebuffer的linux系统下开启framebuffer(以Ubuntu 9.04alpha6为例)

开启framebuffer需要修改以下几个文件,你可以在在命令行里用vi编辑,也可以个用gedit,我个人还是推荐后者。

注意在进行下一步操作之前必须先改一下文件的权限,默认是只读。

sudo gedit /etc/initramfs-tools/modules

在最后面新起两行加入

fbcon

vesafb

在这个文件中里面好多#,记住上面要加的两行前面不能有#,否则给注释掉了。

sudo gedit /etc/modprobe.d/blacklist-framebuffer.conf

执行上面指令之前必须先得修改权限。默认是只读的。

注释掉(前面添加一个#)

blacklist vesafb

这个很容易发现,直接注释掉就可以。

同时还要注释掉你的显卡驱动,我的是nVidia

补充:找不见可以用该指令查看:sudo lshw

这里再补充说一下,你可以在windows下查看自己的显卡型号(N或T)在里面找到注释掉就可以了。

sudo gedit /boot/grub/menu.lst

这一行指令,在ubuntu10.10版本中没有meun.lst了现在改成了grub.cfg,所以在这必须这样来:sudo gedit /boot/grub/grub.cfg

在kernel启动参数的行末尾添上 vga=0x317 (1024x768,16位,你也可以使用别的分辨率模式)

注:vga=0×314 即为800*600 16位

终端的分辨率可以用fbset设置。

|640x480 800x600 1024x768 1280x1024

----+-------------------------------------

256 | 0x301   0x303 0x305 0x307

32k | 0x310   0x313 0x316 0x319

64k | 0x311   0x314 0x317 0x31A

16M |0x312  0X315  0x318 0X31B

上面这些我没有测试过,我用的是0X31B,你们自己根据自己显卡设置。

在ubuntu10.10中的grub.cfg中没有了kernel了,在里面找到这条语句:

linux   /boot/vmlinuz-2.6.35-25-generic root=UUID=cabcaf02-31fd-487d-b90c-08c8faaaa2d8 ro   quiet splash (vga=0x31B)括号里面是自己加上的,估计这个文件也得改权限。特别提示在里面找可以用“splash”作为关键词查找或定位。

然后

sudo update-initramfs -u

重新启动就可以了!

到这基本就搞定了。

最后

以上就是内向老虎为你收集整理的linux fb0测试,在Ubuntu 10.10版本中如何利用framebuf来驱动fb0设备的全部内容,希望文章能够帮你解决linux fb0测试,在Ubuntu 10.10版本中如何利用framebuf来驱动fb0设备所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部