Linux下的FrameBuffer驱动框架

这篇具有很好参考价值的文章主要介绍了Linux下的FrameBuffer驱动框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、RGB LCD经典显示器件介绍
1、LCD屏幕的重要属性参数
① 分辨率:也就是屏幕上的像素点的个数;
② 像素格式:即单个像素点RGB三种颜色的表达方式,包括RGB888、ARGB8888和RGB565等。
③ LCD屏幕硬件接口这里指的是RGB LCD排线接口如下图所示
linux spi 显示屏 framebuffer,Linux系统,linux,嵌入式,驱动开发
linux spi 显示屏 framebuffer,Linux系统,linux,嵌入式,驱动开发
R[7:0]、G[7:0]和B[7:0]这24根是数据线,DE、VSYNC、HSYNC和PCLK这四根是控制信号线 。RGB LCD一般有两种驱动模式DE模式和HV模式,这两个模式的区别是DE模式需要用到DE信号线,而HV模式不需要用到DE信号线, 在DE模式下是可以不需要HSYNC信号线的( DE与HSYNC功能相同 ,即使不接HSYNC信号线LCD也可以正常工作。
///
2、LCD的时间参数:( 重要
       如果将LCD显示一帧图像的过程想象成绘画,那么在显示的过程中就是用一根“笔”在不同的像素点画上不同的颜色。 这根笔按照 从左至右、从上到下 的顺序扫描每个像素点,并且在像素画上对应的颜色,当画到最后一个像素点的时候一幅图像就绘制好了。 假设一款LCD屏幕的分辨率为1024*600,如下图所示
linux spi 显示屏 framebuffer,Linux系统,linux,嵌入式,驱动开发
       HSYNC是水平同步信号,也叫做行同步信号,当产生此信号的话就表示开始显示新的一行数据; VSYNC信号是垂直同步信号,也叫做帧同步信号,当产生此信号的话就表示开始显示新的一帧图像了。 当显示完一行以后会发出HSYNC信号,此时电子枪就会关闭,然后迅速的移动到屏幕的左边,当HSYNC信号结束以后就可以显示新的一行数据了,电子枪就会重新打开在HSYNC信号结束到电子枪重新打开之间会插入一段延时,这段延时就图 50.1.5中的HBP;当显示完一行以后就会关闭电子枪等待HSYNC信号产生,关闭电子枪到HSYNC信号产生之间会插入一段延时,这段延时就是图 50.1.5中的HFP信号。同理, 当显示完一帧图像以后电子枪也会关闭,然后等到VSYNC信号产生期间也会加入一段延时,这段延时就是图 50.1.5中的VFP;VSYNC信号产生,电子枪移动到左上角,当VSYNC信号结束以后电子枪重新打开,中间也会加入一段延时,这段延时就是图 50.1.5中的VBP
///
3、RGB LCD屏幕的时序( 底层核心
① 行显示的时序
linux spi 显示屏 framebuffer,Linux系统,linux,嵌入式,驱动开发
HSYNC:行同步信号,当此信号有效的话就表示开始显示新的一行数据,查阅所使用的LCD数据手册可以知道此信号是低电平有效还是高电平有效, 假设此时是低电平有效
HSPW:有些地方也叫做thp,是HSYNC信号宽度, 也就是HSYNC信号持续时间。HSYNC信号不是一个脉冲,而是需要持续一段时间才是有效的, 单位为CLK
HBP:有些地方叫做thb,前面已经讲过了,术语 叫做行同步信号后肩单位是CLK
HOZNAL:有些地方叫做thd, 显示一行数据所需的时间,假如屏幕分辨率为1024*600,那么HOZVAL就是1024, 单位为CLK
HFP:有些地方叫做thf,前面已经讲过了,术语叫做行 同步信号前肩单位是CLK
    显示一行所需要的时间就是:HSPW + HBP + HOZVAL + HFP。单位:CLK。
② 帧显示的时序
linux spi 显示屏 framebuffer,Linux系统,linux,嵌入式,驱动开发
VSYNC帧同步信号,当此信号有效的话就表示开始显示新的一帧数据,查阅所使用的LCD数据手册可以知道此信号是低电平有效还是高电平有效, 假设此时是低电平有效
VSPW:些地方也叫做tvp,是VSYNC信号宽度,也就是 VSYNC信号持续时间单位为1行的时间( 多少个HSYNC
VBP:有些地方叫做tvb,前面已经讲过了,术语叫做 帧同步信号后肩单位为1行的时间
LINE:有些地方叫做tvd, 显示一帧有效数据所需的时间,假如屏幕分辨率为1024*600,那么LINE就是600行的时间。 单位是1行的时间
VFP:有些地方叫做tvf,前面已经讲过了,术语叫做 帧同步信号前肩单位为1行的时间
      显示一帧所需要的时间就是:VSPW+VBP+LINE+VFP个行时间。
显示完整一帧图像的 clk时间 :T = (VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP)。
///
//
二、Linux的FrameBuffer驱动框架
1、驱动框架的介绍
        帧缓冲(framebuffer)是Linux为显示设备提供的一个接口, 把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。所以在Linux系统中,凡是显示设备都被称为FrameBuffer设备(帧缓冲设备),所以LCD自然而言就是FrameBuffer设备。
         FrameBuffer设备对应的设备文件为/dev/fb*Linux下可支持多个FrameBuffer设备,最多可达32个,分别为/dev/fb0到/dev/fb31,如果没有指定系统所使用的显示设备,通常指向/dev/fb0,在嵌入式系统中支持一个显示设备就够了。在Linux系统中,FrameBuffer设备为标准字符设备,主设备号为29,次设备号则从0到31。分别对应/dev/fb0-/dev/fb31。
        在Linux系统中,FrameBuffer设备也有对应的设备驱动框架,我们把它叫做FrameBuffer驱动框架,所以Linux下编写LCD驱动我们就可以使用FrameBuffer驱动框架。 FrameBuffer驱动架构其实也是基于字符设备驱动来开发的,其内核源码位置在 drivers/video/fbdev/core/fbmem.c中。 其原理大概如下
① 内核源码基于字符设备驱动 在/dev目录下挂载fbxx设备,其 主设备号为29,此设备0~31
② 最多允许同时存在32个显示设备
③ 在字符设备的file_operations中, 实现了open、release、read、write以及memey、ioctl等函数
④ 这些函数其本质是调用了内核链表的一种 结构体对象struct fb_info
⑤ 作为驱动开发者,实际上 我们就是要描述并挂载一个struct fb_info对象,并初始化配置一下外设
2、LCD驱动开发的基本流程( 基于ZYNQ开发板
① 根据实际

文章来源地址https://www.toymoban.com/news/detail-794225.html

到了这里,关于Linux下的FrameBuffer驱动框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【嵌入式Linux内核驱动】SPI子系统 | 硬件原理 | 应用编程 | 内核驱动 | 总体框架

    1.1 SPI通信协议 SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线 四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select) 同步,全双工 支持总线挂载多设备(一主多从) 1.2 硬件连接 多NSS独立片选方式 菊花

    2024年02月16日
    浏览(48)
  • 【STM32】SPI通讯控制ILI9341显示屏

    ILI9341是一款分辨率为 240x320 分辨率 的a- tft液晶显示单片SOC驱动,由720通道源驱动、320通道门驱动、 172800字节GRAM (240RGBx320点位图形显示数据)和电源电路组成。 ILI9341支持并行8-/9-/16-/18位数据总线MCU接口,6-/16-/18位数据总线RGB接口和3 /4线串行外围接口 SPI通讯 。通过窗口地址函

    2024年01月21日
    浏览(36)
  • STM32F103模拟SPI控制6针/7针0.96寸OLED显示屏

    OLED主要参数 1、高分辨率:128 64(和12864LCD相同分辨率,但该OLED屏的单位面积像素点多)。 2、广可视角度:大于160°。 3、低功耗:正常显示时0.04W。 4、宽供电范围:直流3.3V-5V。 5、工业级:工作温度范围-30°℃~70°℃。 6、体积小:28.8mm 28.5mm。 7、通信方式:lIC、SPI。 8、亮

    2024年02月04日
    浏览(128)
  • STM32F103硬件SPI控制6针/7针0.96寸OLED显示屏

    OLED主要参数 1、高分辨率:128 64(和12864LCD相同分辨率,但该OLED屏的单位面积像素点多)。 2、广可视角度:大于160°。 3、低功耗:正常显示时0.04W。 4、宽供电范围:直流3.3V-5V。 5、工业级:工作温度范围-30°℃~70°℃。 6、体积小:28.8mm 28.5mm。 7、通信方式:lIC、SPI。 8、亮

    2024年02月17日
    浏览(70)
  • Linux设备驱动之SPI驱动

    Linux下SPI驱动分成两部分:主机驱动和设备驱动。 主机驱动:         主机侧SPI控制器使用 struct spi_master 描述,该结构体中包含了SPI控制器的序号(很多SoC中存在多个SPI控制器),片选数量,SPI信息传输的速率,配置SPI模式的函数指针(4种模式),实现数据传输的函数指针

    2023年04月11日
    浏览(42)
  • Linux SPI 驱动

    Linux 内核将 SPI 驱动分为两部分: SPI 总线驱动 : SOC 的 SPI 控制器驱动,也叫做 SPI 适配器驱动。一旦编写完成就不再需要再做修改,其他的SPI 设备直接调用主机驱动提供的API 函数完成读写操作即可。 SPI 设备驱动 :SPI 设备驱动就是针对具体的SPI 设备而编写的驱动。 Linux 内

    2023年04月18日
    浏览(23)
  • 【STM32篇】驱动LCD显示屏

    本次使用的硬件设备为野火的霸道V2开发板,显示器控制芯片型号为ILI9341,实际型号为ST7789V。在编写代码时参考的是ILI9341数据手册,二者差别不大,都是240*320分辨率。         ILI9341是一个用于TFT液晶显示的单芯片控制驱动器,具有262144色的240RGB x 320像素显示解决方案。

    2024年02月12日
    浏览(30)
  • Linux 下spi设备驱动

    参考: Linux kernel 有关 spi 设备树参数解析 - 走看看 Linux SPI驱动框架(1)——核心层_linux spi驱动模型_绍兴小贵宁的博客-CSDN博客 Linux SPI驱动框架(2)——控制器驱动层_全志h3 spi驱动_绍兴小贵宁的博客-CSDN博客 Linux SPI驱动框架(3)——设备驱动层_linux spi字符设备驱动_绍兴小贵宁的

    2024年02月09日
    浏览(26)
  • linux的SPI设备驱动程序

            串行外设接口(SPI)是四线总线:MOSI、MISO、串行时钟SCK和片选CS。它常用于连接闪存、AD/DA转换器。主设备生成时钟和管理片选CS,速度可达80MB,远超I2C总线。         SPI设备在内核中表示为struct spi_device{},管理他们的驱动程序的实例是struct spi_driver{}。spi的拓扑结构

    2024年02月13日
    浏览(30)
  • Linux驱动开发:SPI子系统

    MISO:主设备数据输入,从设备数据输出。 MOSI:主设备数据输出,从设备数据输入。 SCLK:时钟信号,由主设备产生。 CS:    从设备片选信号,由主设备控制。 CPOL(时钟极性) :   0:时钟起始位低电平      1:时钟起始为高电平   CPHA(时钟相位) :0:第一个时钟周期采样   1

    2024年02月06日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包