Decompress

该示例演示IMDC的解压缩功能。

环境需求

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

开发套件

硬件平台

设备名称

RTL87x2G HDK

RTL87x2G EVB

更多信息请参考快速入门

硬件连线

配置选项

编译和下载

该示例的工程路径如下:

Project file: samples\peripheral\imdc\decompress\proj\rtl87x2g\mdk

Project file: samples\peripheral\imdc\decompress\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工具内观察LOG即为解压成功。

decompress procedure succeeded

代码介绍

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

  1. 源码路径

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

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

源码路径

  • 工程路径: sdk\samples\peripheral\imdc\decompress\proj

  • 源码路径: sdk\samples\peripheral\imdc\decompress\src

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

└── Project: decompress
    └── imdc
        ├── 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
            └── rtl87x2g_io.lib
        ├── Peripheral               includes all peripheral drivers and module code used by the application
            ├── rtl_rcc.c
            ├── rtl_pinmux.c
        └── APP                      soucrce code of IMDC sample
            ├── main_ns.c
            └── imdc_test.c

初始化

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

  1. 解析压缩图片的信息。

小技巧

对于图片格式的选择,详见 常见问题

  1. 配置需要解压的图片范围。

IMDC_decode_range range;
range.start_column = 0;
range.end_column = header->raw_pic_width - 1;
range.start_line = 0;
range.end_line = header->raw_pic_height - 1;
  1. 指定需要使用的DMA通道和存储解压后数据的位置。

IMDC_DMA_config dma_cfg;
dma_cfg.output_buf = (uint32_t *)buf;
dma_cfg.RX_DMA_channel_num = 0;
dma_cfg.TX_DMA_channel_num = 1;

功能实现

执行 IMDC_Decode() 后,解压完成的数据会与标准数据进行比对。如果产生错误,能够观察到产生错误的地址和数据。

常见问题

选取待解压图片

在文件 imdc_test_source.h 中找到需要解压的格式,并将该格式前的宏定义改写为1,同时确保该文件中其他宏定义全部为0。