Scale

该示例演示PPE的缩放功能。

环境需求

该示例支持以下开发套件:

开发套件

硬件平台

设备名称

RTL87x2G HDK

RTL87x2G EVB

更多信息请参考快速入门

硬件连线

配置选项

编译和下载

该示例的工程路径如下:

Project file: samples\peripheral\ppe\scale\proj\rtl87x2g\mdk

Project file: samples\peripheral\ppe\scale\proj\rtl87x2g\gcc

请按照以下步骤操作构建并运行该示例:

  1. 打开工程文件。

  2. 按照 Quick Start编译APP Image 给出的步骤构建目标文件。

  3. 编译成功后,在路径 mdk\bin 下会生成 app bin app_MP_xxx.bin 文件。

  4. 按照 Quick StartMPTool下载 给出的步骤将app bin烧录至EVB内。

  5. 按下复位按键,开始运行。

测试验证

  1. 运行代码后在DebugAnalyzer工具内观察到日志即为渲染成功。

PPE scale test passed 0

代码介绍

该章节分为以下几个部分:

  1. 源码路径

  2. 初始化函数将在 初始化 章节介绍。

  3. 初始化后的功能实现将在 功能实现 章节介绍。

源码路径

  • 工程路径: sdk\samples\peripheral\ppe\scale\proj

  • 源码路径: sdk\samples\peripheral\ppe\scale\src

该工程的工程文件代码结构如下:

└── Project: scale
    └── ppe
        ├── config                   include project construct configuration
        ├── display                  include the peripheral drivers related with display
        └── Device                   includes startup code
            ├── startup_rtl.c
            └── system_rtl.c
        ├── CMSIS                    includes CMSIS header files
        ├── CMSE Library             Non-secure callable lib
        ├── lib                      includes all binary symbol files that user application is built on
        ├── peripheral               includes all peripheral drivers and module code used by the application
        └── APP                      soucrce code of PPE scale sample
            ├── main_ns.c
            └── ppe_test.c

初始化

初始化流程包含在 PPE_scale_test() 中。

  1. 初始化被缩放图片与存储空间的数据。

  2. 初始化包含缩放功能输入输出的PPE结构体

source.address = (uint32_t)pic_data;
source.memory = (uint32_t *)pic_data;
source.color_key_en = DISABLE;
source.color_key_value = 0;
source.format = PPE_RGB888;
source.width = 25;
source.height = 25;

target.address = (uint32_t) target_buf;
target.memory = (uint32_t *) target_buf;
target.color_key_en = DISABLE;
target.color_key_value = 0;
target.format = PPE_RGB888;
  1. 决定缩放比例后,调用接口 PPE_Scale() 执行缩放功能,在下方示例中进行了x与y方向2倍的放大。

PPE_ERR err = PPE_Scale(&source, &target, 2, 2);

小技巧

判断缩放是否出错的方式,详见 常见问题

功能实现

执行 PPE_Scale() 时,会逐像素填充输出buffer。当代码执行完成,代表PPE已完成工作。

常见问题

判断缩放是否出错

在执行完 PPE_Scale() 函数后,缩放完成的内存区域会进行逐像素的检查,并与标准数据比对。若出现任一错误,能够在DebugAnalyzer工具的窗口中看到如下日志:

PPE scale error

并且在最后一行日志能够观察到错误码:

PPE scale test passed ‘error code’