跳转至

XZDEC使用参考


REVISION HISTORY

Revision No.
Description
Date
1.0
  • Initial release
  • 04/18/2023
    1.0
  • 更新文档内容增加说明
  • 11/25/2025

    1. 概述

    本文讲述Sgs XZDEC使用方法,为SPINOR、SPINAND(FLASH ECC)载入压缩档时,提供高效的解压;压缩数据不需要先载入到dram,再由CPU进行解压;而是利用bdma建立SPI与XZDEC的数据传输,压缩数据由bdma 从spi载入到XZDEC,XZDEC将解压后的数据写入dram

    2. 关键字说明

    • dtr

      双边沿数据读取。

    • xzdec

      sgs 解压缩的硬件IP。

    • sz

      sgs 特有的文件压缩格式,对应sgs xzdec硬件解压。

    3. project配置

    3.1. 查看当前defconfig使用的IMAGE_CONFIG

    进入project目录确认使用的CONFIG_IMAGE_CONFIG:

    /# make ipc_iford.nor.glibc-11.1.0-squashfs.ssc029a.512.bga12_ddr4_defconfig
    /# cat .config |grep IMAGE
    CONFIG_IMAGE_CONFIG="spinand.squashfs.partition.config"
    

    3.2. 修改“spinand.squashfs.partition.config”

    3.2.1 uboot压缩格式选择

    3.2.2 kernel压缩镜像格式选择

    kernel编译的时候,会自动生成.xz、.sz压缩格式的文件。project编译的时候会把kernel/arch/链接到kbuild/$(KERNEL_VERSION)/arch下,修改kernel$(RESOURCE),就可以选择使用的kernel镜像格式

    4. uboot xzdec命令使用方法介绍

    命令实现文件boot/cmd/sgs/loados.c

    使用方式一:

    使用命令mtdparts查看分区状态
    
    loados nand/nor addr partname size
    
    将分区名为“partname”分区的数据加载“size”大小到地址为“addr”的内存中
    

    使用方式二:

    使用命令mtdparts查看分区状态
    
    loados nand/nor by_header partname by_header
    
    将分区名为“partname”分区的数据根据预先打包时开始64bytes 中填充的size和地址进行读取
    

    该命令通常在bootcmd中,如:

    bootcmd=dcache on; sf probe 0; loados nor 0x23000000 KERNEL by_header; bootm 0x23000000;
    

    5. xzdec效率说明

    该测试使用spinor flash作为存储介质,flash采用dtr 四线读取模式,并且测试场景不同测试结果会有差异,以下结果仅供参考:

    uncompression xz(cpudec) sz(xzdec)
    image u-boot.img.bin u-boot.xz.img.bin u-boot.sz.img.bin
    image_size 428696 146900 168138
    Pcompression_type NA memory xz LMAZ2
    time(ms) 4.443 81.353 2.234