在做USB摄像头采集数据并显示到屏幕上的时候,由于之前没有学过openCV之类的界面编程,所以只能使用FrameBuffer进行显示了。下面对FrameBuffer进行一下总结。
FrameBuffer的作用我的理解和/dev/mem的作用的是相似的。/dev/mem是一个pcie总线所有设备的用户层驱动,即/dev/mem能操作pcie总线设备中的任何内存,可以对其进行读写。FrameBuffer是显卡内存的一个映像,即我们可以通过FrameBuffer设备对显卡进行直接读写操作。
那么,这里有一个问题是,既然是通过FrameBuffer对显卡进行操作的,那么是不是就不用到显卡的实际驱动了,我的理解这里是没有用到显卡的实际驱动的,这在后面会有验证。
1,在设置Framebuffer的过程中,出现了一个问题,就是设置命令行界面的分辨路。晚上有很多教程,对于centos6,只需要在grub的启动控制文件/boot/grub/menu.lst里添加vga=?就可以实现:
kernel /vmlinuz-2.6.32-573.22.1.e16.x86_64 ro root =/dev/mapper/VolGroup-lv_root....quiet vga=0x31B
这里vga=0x31B本意是设置命令行终端的分辨率为1280x1024x32,但是在我使用的这个主机中,一直不成功,直到后来我查看/var/log/messages文件看启动日志,在日志里面有一行:
fb: conflicting fb hw