[U-Boot] supported image compression types?

Robert P. J. Day rpjday at crashcourse.ca
Mon Jul 18 12:16:15 CEST 2016


  reading u-boot wiki page on image formats:

http://www.denx.de/wiki/view/DULG/UBootImages

wherein one reads:

"Compression Type (Provisions for uncompressed, gzip, bzip2, lzo;
Currently supported: uncompressed, gzip, bzip2, lzo)."

clearly, that wiki page list is incomplete, but there's more here.

  first, the full list appears to live in include/image.h:

  /*
   * Compression Types
   */
  enum {
        IH_COMP_NONE            = 0,    /*  No   Compression Used       */
        IH_COMP_GZIP,                   /* gzip  Compression Used       */
        IH_COMP_BZIP2,                  /* bzip2 Compression Used       */
        IH_COMP_LZMA,                   /* lzma  Compression Used       */
        IH_COMP_LZO,                    /* lzo   Compression Used       */
        IH_COMP_LZ4,                    /* lz4   Compression Used       */

        IH_COMP_COUNT,
  };

but how those types are selected seems a bit inconsistent.

  first, gzip appears to be automatic(?) for everyone, from
include/config_defaults.h:

    #define CONFIG_GZIP 1

however, of all 5 types of compression, only one has a Kconfig file
entry, LZ4, in lib/Kconfig:

  menu "Compression Support"

  config LZ4
        bool "Enable LZ4 decompression support"
        help
          If this option is set, support for LZ4 compressed images
          is included. The LZ4 algorithm can run in-place as long as the
          compressed image is loaded to the end of the output buffer, and
          trades lower compression ratios for much faster decompression.

          NOTE: This implements the release version of the LZ4 frame
          format as generated by default by the 'lz4' command line tool.
          This is not the same as the outdated, less efficient legacy
          frame format currently (2015) implemented in the Linux kernel
          (generated by 'lz4 -l'). The two formats are incompatible.

  endmenu

for consistency, isn't it standard for any CONFIG_* settings to be
defined in Kconfig files? the other compression types seem to be
selectable simply by manually setting them in config files, as in:

  $ grep -r "define CONFIG_LZMA" *
  include/configs/bfin_adi_common.h:#define CONFIG_LZMA
  include/configs/VCMA9.h:#define CONFIG_LZMA
  include/configs/ap143.h:#define CONFIG_LZMA
  include/configs/qemu-mips.h:#define CONFIG_LZMA
  include/configs/iconnect.h:#define CONFIG_LZMA
  include/configs/ap121.h:#define CONFIG_LZMA
  include/configs/nsa310s.h:#define CONFIG_LZMA
  include/configs/mv-plug-common.h:#define CONFIG_LZMA
  include/configs/ib62x0.h:#define CONFIG_LZMA
  include/configs/qemu-mips64.h:#define CONFIG_LZMA
  include/configs/tplink_wdr4300.h:#define CONFIG_LZMA
  include/configs/sandbox.h:#define CONFIG_LZMA
  include/configs/smdk2410.h:#define CONFIG_LZMA
  $

should not all compression types get their own entries in lib/Kconfig?
anyway, i'll at least update the wiki page.

  movin' on ...

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================



More information about the U-Boot mailing list