文件IO学习笔记第十章:Framebuffer的解读和应用

      大家好,我是小智!

单词

英文 中文 备注
get 获取
put 设置
virtual 虚拟
fixed 固定
screen 屏幕
info 信息
bit per pixel(bpp) 色深 色深的单位是比特

硬件参数

      在Linux系统下是利用Framebuffer子系统来驱动显示设备的,所以Framebuffer子系统会读取LCD屏的硬件信息并存储在内核空间中,关于LCD的硬件参数都是定义在/usr/include/linux/fb.h头文件中。

image

image

      通过fb.h可以看到头文件中存在三个比较重要的结构体,分别是struct fb_fix_screeninfo以及struct fb_var_screeninfo以及struct fb_bitfield,除了这三个结构体之外,可以发现头文件中存在大量的宏定义,用户可以通过这些宏定义来指定读取LCD的部分信息。

struct fb_fix_screeninfo结构体

      struct fb_fix_screeninfo结构体主要用于获取FrameBuffer的固定参数,用户无法在应用层修改这些参数,只能通过系统调用ioctl函数使用宏定义FBIOGET_FSCREENINFO去获取这些参数。

image

image

struct fb_var_screeninfo结构体

      struct fb_var_screeninfo结构体主要用于获取和设置FrameBuffer的可变屏幕参数,包括分辨率、像素位深、像素格式等。这些信息可以通过ioctl函数使用宏定义FBIOGET_VSCREENINFO获取,也可以通过宏定义FBIOPUT_VSCREENINFO修改。

image

image

image

image

文件控制

      Linux系统提供了一个ioctl(input/output control)函数,该函数是一个专用于设备输入输出操作的系统调用,该调用传入一个跟设备有关的请求码,系统调用的功能完全取决于请求码。

image

image

      请求码是通过宏定义的方式写入到硬件的驱动程序中,当驱动安装成功后,用户就可以通过头文件中的请求码向内核中的驱动程序发出请求,然后内核通过请求码去访问硬件,再把访问结果返回给用户。

练习

  • 设计程序,利用ioctl函数获取LCD的硬件参数,把LCD屏幕的宽和高以及色深的位数输出到屏幕,下载程序到开发板并进行验证。

提示:必须包含该头文件 <linux/fb.h>

image

posted @ 2025-05-23 01:49  努力赚钱的小智  阅读(112)  评论(0)    收藏  举报