XZDEC使用参考¶
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 1.0 | 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 |