2010.11.5
今天用FrameBuffer来刷屏幕,显示图像,mmap语法没有什么问题,但是编译报错:invalid argument.
老师找了老久最后发现屏幕分辨率,有个bits_per_pixel 为4bits。显卡没有支持4bits的
下面是转一个帖子的内容:
1.开启内核对framebuffer的支持
我发现有很多种framebuffer模式,不太明白它们之间有什么区别,不过我的机器在Ubuntu 10.04下,vesafb和nvidiafb都没搞好,能用,但是颜色分辨率低(可能是我用的方式不对),www.linuxidc.com最后还是看了别人帖子,改用uvesafb就OK了。
总之,做三个事情,一个是装uvesafb要用的东西,一个是开启内核对uvesafb的支持,还有要设置并更新grub2设置让内核用framebuffer启动。
装uvesafb要用的东西,看下你的显卡支持哪些fb的分辨率::
sudo apt-get install v86d hwinfo
sudo hwinfo --framebuffer
修改内核配置:
sudo gedit /etc/initramfs-tools/modules
在末尾加一行
uvesafb mode_option=1600x900-24 mtrr=3 scroll=ywrap
更新内核配置:
sudo update-initramfs -u
修改grub2配置:
sudo gedit /etc/default/grub
改:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1600x900-24,mtrr=3,scroll=ywrap "
GRUB_GFXMODE= 1600x900
红色部分是改动的,分辨率按上面用hwinfo看到的选一个自己喜欢的。(前面的“#”如果有一定要去掉。)
更新grub2配置:
sudo update-grub