FBTFT源码解析

文件结构

目录:drivers/staging/fbtft
其中文件分为核心驱动与面板驱动

  • 核心(通用件,共性):fbtft-core.c, fbtft-bus.c, fbtft-sysfs.c, fbtft-io.c, fbtft.h
  • 面板驱动(下级,特性):(e.g.) fb_st7789v.c

    fbtftops

    write_reg -> fbtftops.write_register
    fbtftops.write_register -> fbtft_write_reg8_bus8 -> fbtft_write_buf_dc -> fbtftops.write
    fbtft_update_display -> fbtftops.write_vmem -> fbtft_write_vmem16_bus8 -> fbtftops.write
    reg,value对本质上就是两个u8参数.

    fbtft_merge_fbtftops

    用于覆盖默认的ops

    fbtft_update_display

    这个是更新整个屏幕的核心函数,首先调用特定的display驱动的set_addr_win,来指定行列起始(x start/end; y start/end)
    在设置完起始后write_reg(par, MIPI_DCS_WRITE_MEMORY_START);来直接写入屏幕的VRAM
    流程图如下(MIPI_DCS_WRITE_MEMORY_START)(0x2C)(RAMWR)

    deferred_io 上层接口

    deferred_io 每次调用会回调fbtftops.update_display来更新屏幕. deferred_io 是整个驱动的上层接口
    见https://docs.kernel.org/fb/deferred_io.html

    dirty机制以及局部更新

    TBD

    注册流程 registration process

    TBD
    fbtft.h有一个FBTFT_REGISTER_DRIVER宏,在每个display驱动里面调用这个.

Leave a Reply

Your email address will not be published. Required fields are marked *