点屏程序说明


1. 点屏功能场景介绍

  • 场景1:GUI rotate 功能演示

    file -> gfx -> fb -> disp

    gfx 读480x800 BGRA8888格式文件,对图片依次进行0/90/180/270度旋转且通过FB显示到GOP,可设置单/双buffer模式

  • 场景2:GUI pattern 功能演示

    gfx -> fb -> disp

    gfx 绘制绿蓝红渐变三色图,且通过FB显示到GOP,可设置单/双buffer模式


2. 编译环境说明

这里以 Comake PI D1 开发板的 dispcam_pcupid.emmc.glibc-12.4.0-arm-squashfs.comake.pi.d1.1024.dual_sensor.bga_ddr4_riscv_defconfig 为例说明

Note

一般默认板端已经打包好了相应程序,因此程序编译并非必须。你可以直接在板端 /customer/sample_code/gfx_gfx_demo 文件夹中找到prog_gfx_gfx_demo。如果你没有找到文件或有自己修改程序的需求,可参考如下步骤。

  1. 在 project/board/pcupid/COMAKE-PI-D1/config/config_fb.json 中 disp_path 的参数修改为使用屏参,以720*1280为例:(下列参数解释可参照 MI FB API

    "fb_device_disp_path": [
        {
            ...
            "fb_hwlayer_outputcolor": 0,
            "fb_width": 720,
            "fb_height": 1280,
            "fb_timing_width": 720,
            "fb_timing_height": 1280,
            "fb_mmap_name": "E_MMAP_ID_FB",
            "fb_buffer_len": 28800
        }
    ],
    
  2. 配置屏幕dts

    以Comake PI D1的defconfig + mipi屏为例,需在kernel/arch/arm/boot/dts/pcupid-comake-pi-d1-dual-sensor-padmux.dtsi中添加以下内容:

    #if 1
        // MIPIDSI 4 LANE
        <PAD_OUTP_CH0            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_P_CH0>,
        <PAD_OUTN_CH0            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_N_CH0>,
        <PAD_OUTP_CH1            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_P_CH1>,
        <PAD_OUTN_CH1            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_N_CH1>,
        <PAD_OUTP_CH2            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_P_CH2>,
        <PAD_OUTN_CH2            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_N_CH2>,
        <PAD_OUTP_CH3            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_P_CH3>,
        <PAD_OUTN_CH3            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_N_CH3>,
        <PAD_OUTP_CH4            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_P_CH4>,
        <PAD_OUTN_CH4            PINMUX_FOR_MIPI_TX_MODE_1        MDRV_PUSE_TX_MIPI_N_CH4>,
        <PAD_GPIOD_01            PINMUX_FOR_I2C4_MODE_1           MDRV_PUSE_I2C4_SCL>,
        <PAD_GPIOD_02            PINMUX_FOR_I2C4_MODE_1           MDRV_PUSE_I2C4_SDA>,
    #endif
    
  3. 根据选择defconfig进行整包编译,并烧录到Comake PI D1的板端;

  4. 进到sdk/verify/sample_code目录执行make clean && make source/pcupid/gfx/gfx_demo进行编译;

  5. sample_code/out/arm/app/prog_gfx_gfx_demo获取可执行文件,并将可执行文件放置到板端的/customer目录下;

  6. 将可执行文件prog_gfx_gfx_demo放到板子,/customer/sample_code/gfx_gfx_demo路径上,修改权限777。


3. 运行环境说明

  • 板端环境

    COMAKE-PI-D1:

    连接mipi屏和触摸板:在板端CON9与CON8 接口上插入触摸屏与MIPI屏FPC线

    CON8 MIPI屏为FPC上接,注意不要接反,如下左图所示。

    CON9 靠近屏幕侧为FPC下接,靠近主板侧为FPC上接,注意不要接反,如下右图所示。

Note

如果你下载使用的是我们提供的代码包且使用了例中的defconfig进行编译,那么以下bootargs配置和输入文件不用执行。

  • bootargs配置

    从内存池中为 fb 单独划分内存使用,在uboot中进行环境变量配置:

    setenv bootargs ${bootargs} mma_heap=mma_heap_fb,miu=0,sz=0x1D00000; saveenv;

  • 输入文件

    需要source/pcupid/gfx/gfx_demo/resource/input/路径下文件;

    resource目录放置于板端与可执行文件prog_gfx_gfx_demo同一路径,demo会读取以下文件

    ./resource/input/480x800.rgb
    ./resource/input/YUV420SP_320_240.yuv
    

4. 运行说明

执行 cd /customer/sample_code/gfx_gfx_demo 。到文件相应路径。

  1. 命令./prog_gfx_gfx_demo 0 0/1(ttl/mipi) 0/1(single/double buffer)运行场景1 gfx rotate 功能演示;
  2. 命令./prog_gfx_gfx_demo 1 0/1(ttl/mipi) 0/1(single/double buffer)运行场景2 gfx pattern 功能演示;

    其中参数1代表要运行的demo场景,参数2代表显示屏幕类型,参数3代表fb是否运行双buffer模式。

    若运行rotate场景,mipi屏幕,单buffer模式,可执行:

    ./prog_gfx_gfx_demo 0 1 0
    

5. 运行结果说明

  • 效果查看

    运行成功后两个demo将在屏幕上显示结果。

    rotate场景:

    • 板端测试命令

      cd /customer/sample_code/gfx_gfx_demo/

      ./prog_gfx_gfx_demo 0 1 0

    • 测试结果

      程序正常启动,如果平台接入屏幕,会看到中间的红框图片旋转,如下图:

    pattern场景:

    • 板端测试命令

      cd /customer/sample_code/gfx_gfx_demo/

      ./prog_gfx_gfx_demo 1 1 0

    • 测试结果

      程序正常启动,如果平台接入屏幕,会看到中间的红框图片从下往上移动,如下图:

  • 退出命令

    输入q即可退出demo