HOWTO: Use IVT Tool To Create A Blob Image

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

HOWTO: Use IVT Tool To Create A Blob Image

HOWTO: Use IVT Tool To Create A Blob Image

The Image Vector Table (IVT) image is a set of pointers to other images which are required by the BootROM.

It typically contains the following images, though not all are required to create a valid IVT image:

  • DCD
  • Self-Test DCD
  • HSE
  • Application Bootloader

The IVT Tool enables configuration and generation of the IVT image as specified in the BootROM reference manual.

Prerequisites

Before using the IVT Tool, it will be useful to have already generated the binary image from your application project, it will be an input to the IVT. It may also be necessary to include a DCD image, for example, to initialize the SRAM.

Procedure

  1. With desired project open in project explorer (C/C++ perspective), switch to IVT perspective. Click on 'Open IVT'.

    pastedImage_1.png

  2. In the Boot Configuration section, check that the correct Boot Target is selected. For the demonstration here, M7_0 is the correct selection.

    pastedImage_2.png

  3. Check the 'Interface selection' section. If your intended boot device is SD, MMC or eMMC, then change the setting from QuadSPI Serial Flash. If your intended boot device is QuadSPI AND you do not have a QuadSPI parameter file to specify, then uncheck the box for 'Configure QuadSPI parameters'. QuadSPI parameters change some flash registers' settings away from the default setting and are generally required for larger memory sizes (for ex. applications over 1 MB in size, for some supported devices).

    pastedImage_4.pngpastedImage_17.png

  4. From the Image Table section, depending on your configuration, turn off all unused images. For the demonstration here, the following will be changed to Reserved: Self-Test DCD, Self-Test DCD (backup), DCD (backup), Application bootloader (backup). The following images will remain enabled: DCD, Application bootloader.

    pastedImage_5.png
    pastedImage_4.png
  5. In DCD section of the Image Table, click 'Browse File' and select the DCD binary file. Some of the fields may become red shaded after the file is loaded. This is OK as it is showing the memory layout is no longer aligned. This will be resolved in a later step. 

    pastedImage_6.png

    pastedImage_3.png

  6. Scroll down to the Application bootloader section, again use  'Browse File' and select the application binary.

    pastedImage_5.png

    pastedImage_4.png

  7. When the application boot image is loaded, the tool processes the file to check if it contains the header for the application bootloader image. If the header is not found, it means that the file is only the raw code (the bin generated by S32 Design Studio) and it will be necessary to provide the values for RAM start & entry addresses (code length is automatically calculated), as noted with the expanded view and red shading.

    pastedImage_1.png

    To set the RAM start pointer and entry pointer addresses, from to the C/C++ perspective:
    1. From Project Explorer on the C/C++ perspective, open the linker file (in this case: hello_world\Project_Settings\Linker_Files\<device_name>_common_ram.ld) and locate the RAM start address and enter it in both the RAM start pointer AND RAM entry pointer fields in the IVT Tool.

      pastedImage_8.png

    2. Use copy and paste to add the values to the Application Boot Image settings.

      pastedImage_9.png

  8. Since the application binary file which was loaded for this example is just a raw binary file, it is necessary to generate the full application bootloader image. The Export Image function takes the values entered for the RAM start & entry pointers and the automatically calculated Code length, then generates the Application bootloader header. This header is added to the raw binary file producing a new image, the full application bootloader image file. Within the Application bootloader section, click 'Export Image' and enter a meaningful name for the image file. In addition to being a necessary source component of the IVT image, this file can more easily be shared or re-used to as an input to other IVT images.

    pastedImage_9.png

    pastedImage_6.png

    After the file has been generated, you will notice that the address settings section has collapsed. This is because it has replaced the file you originally selected with the newly generated one and the tool has recognized that the file contains the required header information.

    pastedImage_7.png

  9. Before the Blob image can be generated, all of the images must be properly aligned within the memory map. You will likely also see error messages regarding segment overlaps, but even without this error it is good to check that the alignment is correct. In the Automatic Align section, if you have a dedicated area of the memory you can specify the start address and then click 'Align'. If you don't have a dedicated area, then use the default automatic align start address of 0x0 (QSPI), or 0x1000 (SD, MMC, eMMC). Click 'Align' to automatically align the images to this address. Upon successful completion of the alignment, all of the red shading will be removed.

    pastedImage_11.png

    pastedImage_16.png

  10. Click 'Export Blob Image' to generate the blob image file. This is what will be flashed to the target.

    pastedImage_13.png

    pastedImage_9.png

  11. Now that the Blob Image is generated, the 'Flash Image' button could be used to program the image to the target over serial connection, or use the S32 Flash Tool.

    pastedImage_3.png

    pastedImage_10.png
Comments

Hello @mikedoidge

is it possible to launch IVT Tool commands, as a part of 'Post-build steps'?
See also: executing-multiple-commands-as-post-build-steps-in-eclipse 

I know we can configure the project to 'Create Flash Image' to generate .bin
But it would be good if we can also automatically generate the application bootloader image (with the right RAM start/entry pointer) and then export the (QSPI) blob image directly

Kind regards, 

Alexander van Luijpen
BL-RFP, PL-ADAS, Barracuda CAS Team

No ratings
Version history
Last update:
‎02-19-2020 12:21 PM
Updated by: