Framebuffer DISP配置

Version 1.0


1. FB环境配置


1.1. 配置脚本

FB相关配置在project/board/m6/$BOARD_NAME/config/fbdev.ini中。

板子的目录为/config/fbdev.ini

相关配置信息如下:

# FBDEV 将会根据[FB_DEVICE]项目的定义生成fbdev设备节点
# 可以有多个[FB_DEVICE],并生成多个fbdev设备节点
[FB_DEVICE]
# 该fbdev使用的gop(graphic hardware) ID
FB_HWLAYER_ID = 1
# fbdev的framebuffer使用的gop graphic window ID
FB_HWWIN_ID = 0
# gop 输出的叠加位置设定 (support chip: p3  0 / 1)
FB_HWLAYER_DST = 0
# 该fbdev的framebuffer使用的颜色格式
# RGB565 = 1
# ARGB4444 = 2
# ARGB8888 = 5
# ARGB1555 = 6
# YUV422 = 9
# I8 = 4
# I4 = 13
# I2 = 14
FB_HWWIN_FORMAT = 5
# gop 输出的颜色空间设定 ( 0: RGB  1: YUV)
FB_HWLAYER_OUTPUTCOLOR = 1
# 该fbdev的framebuffer的初始化xres 
FB_WIDTH = 1280
# 该fbdev的framebuffer的初始化yres
FB_HEIGHT = 720
# 在自动获取到当前的显示timing之前使用的初始化gop输出timing 
FB_TIMMING_WIDTH = 1920
# 在自动获取到当前的显示timing之前使用的初始化gop输出timing 
FB_TIMMING_HEIGHT = 1080
# 如果系统的mmap有layout项目为E_MMAP_ID_FB
# 那么FBDEV的framebuffer 将使用此处的内存
FB_MMAP_NAME = E_MMAP_ID_FB
# 如果系统的mmap没有为FBDEV layout一块内存
# 那么FBDEV的framebuffer将申请如下长度的内存作为framebuffer
# FB_BUFFER_LEN >= xres*yres*bytesperpixel*displayBufCnt
FB_BUFFER_LEN = 8192
#unit:Kbyte,4096=4M, fbdev.ko alloc size = FB_BUFFER_LEN*1024

# FBDEV 支持的硬件鼠标配置
[FB_CURSOR]
# 鼠标层使用的gop ID
FB_HWLAYER_ID = 0
# 鼠标层使用的gop graphic window ID
FB_HWWIN_ID = 0
# gop 输出的叠加位置设定 (support chip: p3  0 / 1)
FB_HWLAYER_DST = 0
# 鼠标层使用的颜色格式
# RGB565 = 1
# ARGB4444 = 2
# ARGB8888 = 5
# ARGB1555 = 6
# YUV422 = 9
# I8 = 4
# I4 = 13
# I2 = 14
FB_HWWIN_FORMAT = 6
# gop 输出的颜色空间设定 ( 0: RGB  1: YUV)
FB_HWLAYER_OUTPUTCOLOR = 1
# 如果系统的mmap有layout项目为E_MMAP_ID_FB
# 那么FBDEV的鼠标层 将使用此处的内存
# 如果系统的mmap没有为FBDEV layout一块内存
# 那么FBDEV的鼠标层将自己申请128K内存
FB_MMAP_NAME = E_MMAP_ID_HW_CURSOR

# deprecated,fbdev 设备之间的z order(谁显示在上层或者下层)
[LAYER_ZORDER]
LAYER_ZORDER0 = 0
LAYER_ZORDER1 = 1
LAYER_ZORDER2 = 2
LAYER_ZORDER3 = 3
LAYER_ZORDER4 = 4

1.2. 注意

Framebuffer和Region模块使用的是同一套底层硬件,在同一个通道上,FB和Region可以混合使用,需要注意的是,FB使用最大的GWIN ID,则FB的内容永远在最底层显示,反之则在最上层显示。多个GWIN叠加不支持ALPHA叠加效果,如果上层的Region使用了Color key不显示且有与FB重叠的部分,则重叠部分不显示。


2. Demo测试


2.1. 代码位置

代码路径:sdk\verify\mi_demo\source\fb


2.2. 编译及执行

  1. 首先全编译一遍ALKAID,然后进入sdk/verify/mi_demo/source。

  2. Make fb

  3. 编译成功后把sdk\verify\mi_demo\out\demo\app\prog_fb拷贝到板子。将/project/release/chip/m6/ipc/common/glibc/9.1.0/modules/4.9.227/fbdev.ko拷贝到板子上

  4. Insmod fbdev.ko,执行 ./prog_fb 即可