23 Jul, 2018

1 commit

  • Signing parts of a u-boot imximage for image verification in High
    Assurance Boot (HAB) in a post-build process, requires some
    information from the imximage header. Currently, this information is
    only provided during the image build, which makes the transfer of this
    information to the post-build process harder than necessary.

    The i.MX HAB information (start and length) can be calculated either
    by using information from the image-configuration file, or from the
    information in the flash header of the imximage.
    The advantage of using information from flash header is, that they are
    not only available during image creation, but also available if
    existing images are processed.

    Example:
    $ tools/mkimage -l u-boot.imx
    Image Type: Freescale IMX Boot Image
    Image Ver: 2 (i.MX53/6/7 compatible)
    Mode: DCD
    Data Size: 483328 Bytes = 472.00 KiB = 0.46 MiB
    Load Address: 877ff420
    Entry Point: 87800000
    HAB Blocks: 0x877ff400 0x00000000 0x00071c00
    DCD Blocks: 0x00910000 0x0000002c 0x00000208

    Signed-off-by: Holger Dengler
    Tested-by: Bryan O'Donoghue

    Holger Dengler
     

07 May, 2018

1 commit

  • When U-Boot started using SPDX tags we were among the early adopters and
    there weren't a lot of other examples to borrow from. So we picked the
    area of the file that usually had a full license text and replaced it
    with an appropriate SPDX-License-Identifier: entry. Since then, the
    Linux Kernel has adopted SPDX tags and they place it as the very first
    line in a file (except where shebangs are used, then it's second line)
    and with slightly different comment styles than us.

    In part due to community overlap, in part due to better tag visibility
    and in part for other minor reasons, switch over to that style.

    This commit changes all instances where we have a single declared
    license in the tag as both the before and after are identical in tag
    contents. There's also a few places where I found we did not have a tag
    and have introduced one.

    Signed-off-by: Tom Rini

    Tom Rini
     

26 Apr, 2018

2 commits

  • This reverts commit b5b0e4e351e20a606de22db6a56ad6bc1e2aa8fd.

    Commit f916757300c1 ("imx: Create distinct pre-processed mkimage
    config files") provided a proper fix for the parallel mkimage
    config files build failure, so the original workaround can be
    safely reverted now.

    Signed-off-by: Fabio Estevam
    Reviewed-by: Stefano Babic

    Fabio Estevam
     
  • commit 8519c9c98ad6 ("tools/imximage: use 0x prefix in HAB Blocks line")
    adds an 0x prefix to each HAB Block number to make it easier for host tools
    to process the HAB Block output, however it neglects to apply the same
    prefix to the DCD Blocks directive. You need the DCD Blocks directive if
    you are making a u-boot recovery image which the BootROM will accept via
    the USB upload utility.

    This disparity results in a fruity output like this with HAB Blocks
    prefixed but DCD Blocks not prefixed - which is pretty inconsistent.

    This patch fixes the difference assuming the original commit was a
    legitimate change.

    Old:
    Image Type: Freescale IMX Boot Image
    Image Ver: 2 (i.MX53/6/7 compatible)
    Mode: DCD
    Data Size: 430080 Bytes = 420.00 KiB = 0.41 MiB
    Load Address: 877ff420
    Entry Point: 87800000
    HAB Blocks: 0x877ff400 0x00000000 0x00066c00
    DCD Blocks: 00910000 0000002c 000001d4

    New:
    Image Type: Freescale IMX Boot Image
    Image Ver: 2 (i.MX53/6/7 compatible)
    Mode: DCD
    Data Size: 430080 Bytes = 420.00 KiB = 0.41 MiB
    Load Address: 877ff420
    Entry Point: 87800000
    HAB Blocks: 0x877ff400 0x00000000 0x00066c00
    DCD Blocks: 0x00910000 0x0000002c 0x000001d4

    Signed-off-by: Bryan O'Donoghue
    Cc: Rasmus Villemoes
    Cc: Fabio Estevam
    Cc: Breno Lima
    Cc: Stefano Babic
    Reviewed-by: Fabio Estevam

    Bryan O'Donoghue
     

15 Apr, 2018

1 commit

  • The u-boot-ivt.img.log file contains 0x prefixes in the HAB Blocks line,
    while the SPL.log does not. For consistency, and to make it easier to
    extract and put into a .csf file for use with NXP's code signing tool,
    add 0x prefixes here.

    Signed-off-by: Rasmus Villemoes
    Reviewed-by: Fabio Estevam
    Tested-by: Breno Lima

    Rasmus Villemoes
     

09 Mar, 2018

1 commit

  • Sometimes imximage throws the following error:

    CFGS board/freescale/vf610twr/imximage.cfg.cfgtmp
    CFGS board/freescale/vf610twr/imximage.cfg.cfgtmp
    MKIMAGE u-boot-dtb.imx
    Error: No BOOT_FROM tag in board/freescale/vf610twr/imximage.cfg.cfgtmp
    arch/arm/mach-imx/Makefile:100: recipe for target 'u-boot-dtb.imx' failed

    Later on, when running mkimage for the u-boot.imx it will succeed in
    finding the IVT offset.

    Looks like some race condition happening during parallel build when
    processing mkimage for u-boot-dtb.imx and u-boot.imx.

    A proper fix still needs to be implemented, but as a workaround let's
    remove the error when the IVT offset is not found.

    It is useful to have such message, especially during bring-up phase,
    but the build error that it causes is severe, so better avoid the
    build error for now.

    The error checking can be re-implemented later when we have a proper
    fix.

    Reported-by: Breno Lima
    Reported-by: Thomas Petazzoni
    Signed-off-by: Fabio Estevam

    Fabio Estevam
     

20 Mar, 2017

1 commit


27 Jan, 2017

1 commit

  • We can use the same header length calculations for both imximage v1 and
    v2. This addresses TODO comments about imximage v1 in the current code.

    With this patch applied, *header_size_ptr in imximage_set_header() will
    have the correct value for both imximage v1 and v2. This is necessary
    for people wanting to add proprietary data behind the created imximage.

    Signed-off-by: Martin Kaiser
    Cc: sbabic@denx.de

    Martin Kaiser
     

29 Nov, 2016

1 commit

  • These values can be used to sign a U-Boot image for use when
    loading an image through the Serial Download Protocol (SDP).

    Note that the address of 0x910000 is usable with the stock
    configuration of imx_usb_loader on i.MX6 and i.MX7 SOCs:

    https://github.com/boundarydevices/imx_usb_loader/blob/master/mx6_usb_work.conf#L3

    Refer to the section on imx_usb_loader in this post for more
    details:

    https://boundarydevices.com/high-assurance-boot-hab-dummies/

    Signed-off-by: Eric Nelson

    Eric Nelson
     

05 Nov, 2016

1 commit

  • Check return value when open the plugin file.

    Coverity report:
    ** CID 153926: Error handling issues (NEGATIVE_RETURNS)
    /tools/imximage.c: 542 in copy_plugin_code()

    ifd = open(plugin_file, O_RDONLY|O_BINARY);
    >>> CID 153926: Error handling issues (NEGATIVE_RETURNS)
    >>> "ifd" is passed to a parameter that cannot be negative.

    Signed-off-by: Peng Fan
    Cc: Stefano Babic
    Cc: Tom Rini
    Reported-by: Coverity (CID: 153926)
    Reviewed-by: Tom Rini

    Peng Fan
     

24 Oct, 2016

1 commit


17 May, 2016

1 commit


07 Oct, 2015

2 commits


02 Sep, 2015

1 commit

  • When dcd_len is 0 the Write Data command that the set_dcd_rst_v2() routine
    generates is empty. This causes HAB to complain that the command is invalid.

    --------- HAB Event 1 -----------------
    event data:
    0xdb 0x00 0x0c 0x41 0x33 0x06 0xc0 0x00
    0xcc 0x00 0x04 0x04

    To fix this set the DCD pointer in the IVT to NULL in this case. The DCD header
    itself is still needed for detect_imximage_version() to determine the image
    version.

    Signed-off-by: Baruch Siach
    Acked-by: Stefano Babic

    Baruch Siach
     

26 Jul, 2015

1 commit

  • * Extend imximage DCD version 2 to support DCD commands
    CMD_WRITE_CLR_BIT 4 [address] [mask bit] means:
    while ((*address & ~mask) != 0);
    CMD_CHECK_BITS_SET 4 [address] [mask bit] means:
    while ((*address & mask) != mask);
    CMD_CHECK_BITS_CLR 4 [address] [mask bit] means:
    *address = *address & ~mask;
    * Add set_dcd_param_v2 helper function to set DCD
    command parameters

    Signed-off-by: Adrian Alonso
    Signed-off-by: Peng Fan

    Adrian Alonso
     

10 Feb, 2015

2 commits


30 Jan, 2015

1 commit


03 Nov, 2014

1 commit

  • In system boot chapter of i.MX6 reference manual, the "Image Vector Table"
    figure shows the bootdata.start points to the beginning of the destination
    memory. It means the bootdata.size should contain the IVT offset part,
    but the calculation in imximage tool does not have.

    We found this issue when booting from QuadSPI NOR on i.MX6SX. The u-boot
    runs into abnormal (crash or stop) after booting. After checked the destination
    memory where the image is loaded to, there are hundreds of bytes at
    the image end are not loaded into memory. Since there is a 4096 bytes
    round in the calculation, for the booting devices using smaller IVT offset,
    such as SD and SPI booting, they are not easy to reproduce.

    Signed-off-by: Ye.Li

    Ye.Li
     

09 Sep, 2014

1 commit

  • The load region size of EIM-NOR are defined to 0. For this case,
    the parameter "imximage_init_loadsize" must be calculated.
    The imximage tool implements the calculation in the "imximage_generate"
    function, but the following function "imximage_set_header" resets the value
    and not calculate. This bug cause some fields of IVT head are not
    correct, for example the boot_data and DCD overlay the application area.

    Signed-off-by: Ye.Li

    Ye.Li
     

13 Dec, 2013

1 commit

  • In order to avoid duplicating code and keep only one point of modification,
    the functions, structs and defines useful for "dumpimage" were moved from
    "mkimage" to a common module called "imagetool".

    This modification also weakens the coupling between image types (FIT, IMX, MXS,
    and so on) and image tools (mkimage and dumpimage). Any tool may initialize the
    "imagetool" through register_image_tool() function, while the image types
    register themselves within an image tool using the register_image_type()
    function:

    +---------------+
    +------| fit_image |
    +--------------+ +-----------+ | +---------------+
    | mkimage |--------> | | | |
    Signed-off-by: Simon Glass

    Guilherme Maciel Ferreira
     

15 Oct, 2013

1 commit


27 Sep, 2013

1 commit


05 Sep, 2013

1 commit


31 Aug, 2013

5 commits

  • Add support for setting the CSF (Command Sequence File) pointer
    which is used for HAB (High Assurance Boot) in the imximage by
    adding e.g.

    CSF 0x2000

    in the imximage.cfg file.

    This will set the CSF pointer accordingly just after the padded
    data image area. The boot_data.length is adjusted with the
    value from the imximage.cfg config file.

    The resulting u-boot.imx can be signed with the FSL HAB tooling.
    The generated CSF block needs to be appended to the u-boot.imx.

    Signed-off-by: Stefano Babic

    Stefano Babic
     
  • Implement function vrec_header to be able to pad the final
    data image file according the what has been calculated for
    boot_data.length.

    Signed-off-by: Stefano Babic

    Stefano Babic
     
  • Change to dynamically allocate the imx_header to correctly
    allocate the IVT, Boot Data and DCD at correct locations
    depending on the boot media.

    Also check that the Image Vector Table Offset + IVT +
    Boot Data + DCD

    Stefano Babic
     
  • This better reflects the naming from the Reference Manual
    as well as fits better since "flash" is not really applicabe
    for SATA.

    Signed-off-by: Stefano Babic

    Stefano Babic
     
  • Doing a make distclean; make mx6qsabresd_config; make
    and hexdump -C u-boot.imx | less

    ...
    00000360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
    *
    000003f0 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 |................|
    ^^^^^^^^^^^
    00000400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
    *
    00001000 13 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 |...ê.ð.å.ð.å.ð.å|
    ...

    shows the flash_offset value being written into the final
    generated image, wich is not correct.

    Instead create flash_offset as static variable such that the
    generated image is "clean".

    00000360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
    *
    00001000 13 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 |...ê.ð.å.ð.å.ð.å|

    Signed-off-by: Stefano Babic

    Stefano Babic
     

17 Aug, 2013

1 commit

  • Commit 669dfc2e adds libfdt_env.h to HOSTCPPFLAGS. It causes stdio.h
    to be included before _GNU_SOURCE is defined in C files. On some old hosts
    some prototypes are protected by #ifdef __USE_GNU, which is set when
    _GNU_SOURCE is defined.

    Signed-off-by: York Sun
    Acked-by: Simon Glass

    York Sun
     

24 Jul, 2013

1 commit


05 May, 2013

1 commit


28 Apr, 2013

1 commit

  • Implement BOOT_OFFSET command for imximage. This command is parallel
    to current BOOT_FROM command, but allows more flexibility in configuring
    arbitrary image header offset. Also add an imximage.cfg with default
    offset values into arm/arch/imx-common/ so the board-specific imximage.cfg
    can include this file to avoid magic constants.

    The syntax of BOOT_OFFSET command is "BOOT_OFFSET ".

    Signed-off-by: Marek Vasut
    Cc: Albert ARIBAUD
    Cc: Benoît Thébaudeau
    Cc: Fabio Estevam
    Cc: Scott Wood
    Cc: Stefano Babic
    Cc: Tom Rini
    Acked-by: Stefano Babic
    Acked-by: Stefan Roese

    Marek Vasut
     

28 Jan, 2013

1 commit


06 Jan, 2013

1 commit

  • In order to mx53 ROM to properly load the U-boot image, its header size should
    be multiple of 512 bytes.

    This issue was observed with gcc 4.6.2/4.7.3, which caused data aborts:

    U-Boot 2013.01-rc2-00172-gf8cfcf1-dirty (Dec 26 2012 - 13:13:28)

    Board: MX53 LOCO
    I2C: ready
    DRAM: 1 GiB
    MMC: FSL_SDHC: 0, FSL_SDHC: 1
    In: serial
    Out: serial
    Err: serial
    CPU: Freescale i.MX53 family rev2.1 at 1000 MHz
    Reset cause: WDOG
    Net: FEC
    Warning: FEC using MAC address from net device

    Hit any key to stop autoboot: 0
    data abort

    MAYBE you should read doc/README.arm-unaligned-accesses

    pc : [] lr : []
    sp : af565e20 ip : af566918 fp : 00000000
    r10: 00000003 r9 : affabb5b r8 : af565f58
    r7 : 00000000 r6 : 36747fff r5 : af5668e8 r4 : 36747fff
    r3 : af5668ec r2 : af5668eb r1 : 00000000 r0 : af5668e8
    Flags: NzcV IRQs off FIQs off Mode SVC_32
    Resetting CPU ...

    resetting ...

    ,and this patch fixes it.

    Also, even though the ROUND macro is already defined in common.h,
    the reason for redefining it in image.h is explained by Stefano Babic:

    "I will remark a previous comment - even if including common.h seems a
    good idea to avoid duplications, it makes tools like mkimage to depend
    on the selected board, because _config must run. Even if this is
    not a problem for us u-boot developers, it becomes an issue when these
    tools are included in distros (like u-boot-tools in Ubuntu) and cannot
    be packaged."

    Signed-off-by: Troy Kisky
    Signed-off-by: Fabio Estevam

    Fabio Estevam
     

20 Oct, 2012

4 commits