blob: f772b3de6b08ed75e482419bf5364d31905bc5f8 [file] [log] [blame]
Glossary
=============
Boot Image The entire boot image including all headers and the binary image
Headers block First part of boot image that contains all headers
Main header Mandatory part of each boot image (32 bytes). If there are more than
one header in the boot image, the main header always appears first
Secure header Mandatory part of a headers block for secure mode boot images.
Immediately follows the main header.
Register header Optional part of a headers block. Contains pairs of address-value
used for HW registers initialization prior to loading the binary
image. Each header block can contain several register headers.
Binary header Optional part of a header block. Contains ARM executable in a binary
form. Each headers block can contain several binary headers.
The binary header is executed in place without copying into the system
RAM (since the RAM can be not accessible at this stage). This limitation
should be taken into consideration by the binary header preparation
tools during the code linkage stage.
Binary image Second part of a boot image that follows the headers block.
The binary part is an executable code usually containing a secondary
boot loader (like u-boot or UEFI) or an OS image.
Introduction
============
------------
doimage
------------
Doimage tool is used for preparation of specially-formatted image for usage with
BootROM to bring up a secondary boot loader or OS from various types of supported
boot media.
The boot image contains one or more headers and binary (executable) part.
For more details of boot image format please refer to Functional Specification of
specific Marvell HW.
The tool is supplied in source code that is adopted for build on Linux systems.
Supported boot media types:
- SPI/NOR flash
- NAND flash
- SATA disk
- PCI-e (PEX)
- UART
- MMC (eMMC/SD/SDHC)
In addition to a regular boot mode, doimage supports image build for a special
secure boot mode.
In this mode the binary image and all its headers are signed by RSA signatures
that are created with a help of private RSA-2048 key.
All appropriate signatures and a public RSA key needed for image verification during
the boot time are embedded in a special secure image header and prevent unauthorized
boot image replacement or modification inside the boot device.
The RSA public key used for image verification is created by doimage from private
key during the boot image build.
The validity of this RSA public key is verified at boot time against its SHA-256 digest
stored in eFuse.
The binary part of a boot image can be encrypted using AES-128-CBC
algorithm in order to prevent its reverse code engineering.
The BootROM is able to decrypt such image on the fly using symmetric key
that is stored in hidden eFuse.
The boot time AES decription is only supported for images that are copied to DRAM and
not supported for images that are executed direcly from flash device (SPI or NOR).
Please refer to Marvell HW Function Specification document for more information
about eFuse locations and fields description.
------------
hdparser
------------
The "hdparser" utility allows certain level of visualization and full verification of
a boot image created with "doimage" utility.
The "hdparser" utility accepts the boot image file name as input, prints basic headers
and binary image information and do the same verification check as the BootROM during
bootstrap process. If requested, the security segnatures for headers block and binary
image are also verified.
======================
Parameters description
======================
------------
hdparser
------------
Hdparset has only one mandatory parameter - the boot image file name.
hdparser -[t] <boot_image_file_name>
-t
Verify headers block and binary image RSA signatures,
print RSA public key SHA-256 digest for eFuse usage
-any_other_switch
Print command usage information
boot_image_file_name
The boot image file name for verification
------------
doimage
------------
Doimage uses list of parameters supplied in command line.
Some parameters are mandatory and some are optional.
Below is the command line format used by doimage utility:
doimage <mandatory parameters> [optional parameters] <image_in> <image_out> [hdr_out]
---------------------
Mandatory parameters
---------------------
-T image_type
One of the following types: sata\uart\flash\bootrom\nand\hex\pex
According to image type the following output formats are supported:
sata - image for booting from a serial ATA device.
uart - image for loading through serial port using Xmodem protocol
flash - boot image for storage in SPI or NOR flash.
nand - boot image for a NAND flash.
pex - boot image for booting over PCI-e bus in EP mode.
hex - special target for creating HEX images (one symbol per nibble).
bin - special target for creating ROM images (one symbol per bit).
bootrom - special output image format used only for creating BootROM test images.
Note that hex, bin and bootrom image formats should not be used for a normal operation.
-D image_dest
Hexadecimal destination address in system RAM used for copying the binary
image from a boot media during the boot stage. Should be in sync with a value
provided to linker during binary image build.
The destination address can have a value of 0xFFFFFFFF. In this case the boot
image is not copied into the system RAM, but executed in-place, directly from
the boot media. Only SPI and NOR boot devices support this boot mode.
-E image_exec
Hexadecimal address in system RAM used for image execution (entry point).
If selected image type is "flash" and the image destination address is 0xFFFFFFFF,
the image is executed directly from flash media bypassing the copy to RAM stage.
In this case the execution address should be locates in SPI or NOR flash memory space.
-S image_source
Hexadecimal byte offset of binary image part from the start of the boot image.
For SATA devices the offset is counted in 512b sectors.
This parameter is ignored for pex boot device. If omitted, the 0 is assumed and
the binary image is located next to the boot image headers.
The offset must be aligned to 512 bytes boundary for nand boot devices.
-W hex_width
Mandatory only for "hex" and "bin" image types and defines number of bits per row in output file.
Supported values are 8,16,32 and 64 bits.
-P nand_pg_sz
Decimal number defining the NAND page size. Supported values are 512, 2048, 4096 and 8192.
This parameter is mandatory for NAND image type only.
-L nand_blk_size
NAND block size in KBytes (decimal int in range 64-16320).
This parameter is ignored for flashes with 512B pages since all small page flashes always use 16K block size.
This parameter is mandatory for NAND image type only.
-N nand_cell_typ
NAND cell technology type (char: M for MLC, S for SLC).
This parameter defines location of bad block markers - first block page for SLC and
last block page for MLC flash types and it is mandatory for NAND image type only.
----------------------------------------------------------------------------------------------------------------------
NOTE:
----------------------------------------------------------------------------------------------------------------------
The NAND flash parameters from the main header are taken into account only when the main header itself is successfully
read and verified. Until then all NAND settings are either default or defined by Sample at Reset Register (SAR).
For more details about SAR fields please refer to Marvell documentation for the specific device.
For information about default values please refer to BootROM section of the device Functional Specification.
----------------------------------------------------------------------------------------------------------------------
---------------------
Optional parameters
---------------------
-G exec_file
ASCII file name of single binary header with raw ARM code with stripped ELF header.
The header must include array of all its parameters placed before the entry point and
an appropriate ARM code for saving all affected CPU registers to stack at procedure start
and restoring them before return from the routine (similar to a regular function).
The code should be linked to a right SRAM address and take into account the amount of
input parameters and memory alignment.
Single binary header will always follow register header in the boot image.
For including more than one binary header or a special headers order please use "-C" command option.
The example of such binary header creation can be found in u-boot sources under "tools"
directory.
-R regs_file
ASCII file name that contains single list of address-value pairs used for configuring
the device registers before the binary image execution (Register header).
For including more than one register header or a special headers order please use "-C" command option.
-C hdrs_file
ASCII file name that defines order and source filenames for multiple binary and
register headers that should be embedded into the boot image.
-X pre_pad
Hexadecimal number of bytes to be placed before the binary image.
-Y post_pad
Hexadecimal number of bytes to be placed after the binary image.
-H header_mode
The header mode. The default mode is "-H 1". Supported modes:
-H 1 : creates one file (image_out) for header and image
-H 2 : creates two files - (image_out) for image and (hdr_out) for header
-H 3 : creates one file (image_out) for header only
-H 4 : creates one file (image_out) for image only
----------------------
Secure mode parameters
----------------------
-Z prv_key
ASCII file name containing RSA private key of 2048 bit length.
The private RSA key is used for creating signatures for the image header and binary image.
Additionally it allows generation of public RSA key, which is embedded in the image header.
The key file must be in TXT format similar to one generated by rsa_genkey utility supplied with
PolarSSL library as application example.
This parameter activates secure boot mode and enables all other secure mode parameters usage.
-A aes_key
ASCII file name containing AES-128 symmetric key.
The binary part of the boot image will be encrypted using AES-128-CBC algorithm.
The key file must be in binary format (array of 16 bytes).
See the example key file supplied with doimage utility.
-J jtag_delay
Enable JTAG and delay the boot sequence execution by <jtag_delay> * 10 seconds.
Used for overriding the eFuse value for devices with disabled JTAG functionality.
-B hex_box_id
Hexadecimal Box ID in range of 0x0 to 0xFFFFFFFF
-F hex_flash_id
Hexadecimal Flash ID in range of 0x0 to 0xFFFF
=============
File formats
=============
--------------------
RSA private key file
--------------------
RSA-2048 private key file is ACII text file in the same format as produced by rsa_genkey utility
supplied as example with PolarSSL library.
Example of a valid RSA-2048 key file content:
===== Start of file =====
N = 849D09BA6ADF22115D7354774503EDC908687290C9A66E2CE09BCDD39D5815BA6751C07F03EC4584EA8569AE18AA30BF0280CE54DCB687D50250A0FA8D645BC92BB38F59F3182B62AB40B2826F786B77CA78C8541AFED52D7EE8D0B87EBBC0D4A5FBA5B4A8F24A98C90B0C873E1E02E1F9987B10B0F275DA668AD31E4798744888A96AB218A4CD0832FCBE906B5D2A6DF3AABC19A2C2D10DAEC1FE6B004DE7BEA8358515927631724B3C2B6FE9915FBAF612DF3287BD44E0D615D615E04C5FF0A67908E5B7066432C0CE6C012FBA50B15F9DD8943279C9AF83E65A0261EEA9385031B3FB3440B7747905A4327F8E8E1CE96DDC03B70332A4DDAA17D7D8039153
E = 010001
D = 1461F2B1D565505E2CE7E20EA6EBF0AB5A807B4367CB0DDA15F7BC8E0EFC0FF2E3987C26C99A9220D8CF02AC409C3FFBCBCDB268F6B7936F18F8FD9525104CCF41C94A7A3FD3F22F2B35397AB4D96463381A9267E2F2521FB906DDB5CDBCDBE9934D776DAA1DFB7B3A43597C9BFE8EE0DEB5220D31B54289FC02D06A3204EBB253690AA130A19F45D580AC32153FA050359AB54CC0C475B2C9A9EE2479B3A6961A571C60BB5881C166DBDFBDCFD681C4B8997B5B6F72DFA34319BFC2566F61C5BD0DFEC2577871125AF2BEEC95D43E8081336E0DF5570B0951384DF313A579F447F199DFC8584EBA801FCD382BECFF35F8721390B2876C0A00AC49A13194AFB9
P = F49E06036D3D5124BF54AE02F93A7B5D804566E1DF114639CC3C4528BE8A2B8AAFBD180169F0519C890DEC92CF743F0E61FB805805BF417548EEBF0F4DF405FA514DAC3E8B772620CBFB00DC3C084751890FFD012BA12394EA58D1BB608A6090B99EE1B6AFA9CDD04EE08B14B550729F9F0FA565CA37907F13FCD0BB12B2BB47
Q = 8AC8C7EB8152987E5BD48C333D13D3D7DAD5B7D6F5801FED98583C972BAD1BE50F7D91255872D61A83B471B35B51B85E09D4D626B48F2739C56507513C04EF92FDEDA288C4C37496DFA0AB483544E600F9321ADF35955DFE6F1ECC12D07AF03169D8D7C5D8BC0A95538994057D76110B7E4360195C56273B7FC3A28419C56795
DP = B61FB9666FBCC95F4CBCA55A3D691754841E27FD5F71A3118148164DC19F69CFB60C598523F4F32E52B47540D10841B259AD40DF48581F4A4D64C40787087A32E6B9A7D6614BF2AD5471AB304DD9F40F76B6DAAE3667A0F04C929884A3DA230F5DC4375526F08BF5DDE43C68CC9DFAD97139DAF1305FB24B8AFC1E044A659C1D
DQ = 88D011B52A11A05EC06C31A1B94E38820C2AAF466B51D927C20D09FE04826C834CD7FE2410A374494318B91594AA64D3DF613F937C5FBACD8AB863944354A250079F21A12E477841DB466A538E9FD31596933C465A6E5AF09DDE8052F3CE9DC638901975E288CCEE14220617BB6C8EB503CDAB8894AC2194D808A5C71018B859
QP = 6B2700710DCD6A4503A0569F81448D146C4BF1B63D2FDC902C3A801D040AC0DCEF4376C881261DECA3EB5CC64E07B58019789AB02E2A0FC3E2B112161F735267B41127D3BF3C115AE577F27319AB40BB4364C2C86D598D943B07E08BF206D2EC3C1F4DCCB8613025259F45F09E5338E3C8B7B7E92934E2A43F257505D0B48FB7
===== End of file =====
--------------------
AES-128 key file
--------------------
Symmetrical key AES-128 file is a binary file 16 bytes long.
Example of valid AES-128 file content as it shown in HEX editor (first column displays offset):
===== Start of file =====
00000000: 2B 7E 15 16 28 AE D2 A6 | AB F7 15 88 09 CF 4F 3C
===== End of file =====
-----------------------
Headers definition file
-----------------------
Headers list file is a text file that lists multiple binary and register headers and their order.
Each row in this file defines single header type and the header file name.
First 3 symbols in each row defines the header type - BIN or REG. The rest of row contains the filename
used as source for the header creation. Each name is separated from the header type with one or more spaces.
Headers are included in final boot image in the same order as they defined in the headers definition file
and always follows the main header and secure header (in included).
Example:
===== Start of file =====
REG /somewhere/regfile1.txt
REG /somewhere/regfile2.txt
BIN /somewhere/binfile1.bin
REG /somewhere/regfile3.txt
BIN /somewhere/binfile2.bin
===== End of file =====
===============
Usage examples
===============
---------------------
SPI/NOR flash images
---------------------
1. Secure mode is enabled. JTAG support is enabled. Delay boot execution by 10 sec for JTAG probe connection.
Run DRAM registers configuration (REG header) procedure defined in dramregs.txt file followed by single BIN header
execution taken from binhdr.bin file before running U-boot.
Encode binary image using AES-128 key taken from file aes128.bin. Assign BoxID of 0xDEADBEF and FlashID of 0xBABE
to the boot image. Sign headers block and encoded binary image by RSA signatures created with help of RSA private key
defined in file rsa_priv.txt.
Load U-boot into DRAM address 0x600000 and start execution at address 0x6A0000.
doimage -T flash -D 0x600000 -E 0x6A0000 -Z rsa_priv.txt -A aes128.bin \
-J 1 -B 0xDEADBEEF -F 0xBABE -R dramregs.txt -G binhdr.bin u-boot.bin u-boot_flash_dram_secure.bin
2. Non-secure boot mode. Add headers listed in headers_def.txt file to the boot image.
Load U-boot into DRAM address 0x600000 and start execution at address 0x6A0000.
doimage -T flash -D 0x600000 -E 0x6A0000 -C headers_def.txt u-boot.bin u-boot_flash_dram.bin
3. Same as above, but binary image is located at offset 0x10000 from the image location in flash
and not immediately follows the headers block.
doimage -T flash -D 0x600000 -E 0x6A0000 -S 0x10000 -C headers_def.txt u-boot.bin u-boot_flash_dram.bin
4. Non-secure boot mode. Add headers defined in headers_def.txt file to the boot image.
Run U-boot directly from flash without loading it into DRAM at address 0xD4000020.
The entry point is located in SPI address space at offset 0x20, right after main header.
Consult Marvell documentation for address map of specific device.
doimage -T flash -D 0xFFFFFFFF -E 0xD4000020 u-boot.bin u-boot_spi_dram.bin
5. Same as above, but run image directly from NOR flash (see address space map for specific device)
doimage -T flash -D 0xFFFFFFFF -E 0xD2000020 u-boot.bin u-boot_nor_dram.bin
---------------------
NAND flash images
---------------------
1. Flash page size is 2K, block size is 128K, SLC-type. Secure mode is enabled. JTAG support is enabled.
Delay boot execution by 10 sec for JTAG probe connection. Run DRAM registers configuration (REG header)
procedure defined in dramregs.txt file followed by single BIN header execution taken from binhdr.bin file
before running U-boot. Encode binary image using AES-128 key taken from file aes128.bin.
Assign BoxID of 0xDEADBEF and FlashID of 0xBABE to the boot image. Sign headers block and encoded binary
image by RSA signatures created with help of RSA private key defined in file rsa_priv.txt.
Load U-boot into DRAM address 0x600000 and start execution at address 0x6A0000.
doimage -T nand -D 0x600000 -E 0x6A0000 -P 2048 -L 128 -N S -Z rsa_priv.txt -A aes128.bin \
-J 1 -B 0xDEADBEEF -F 0xBABE -R dramregs.txt -G binhdr.bin u-boot.bin u-boot_nand_dram_secure.bin
2. Flash page size is 4K, block size is 256K, MLC-type. Non-secure boot mode.
Add headers listed in headers_def.txt file to the boot image.
Load U-boot into DRAM address 0x600000 and start execution at address 0x6A0000.
doimage -T nand -D 0x600000 -E 0x6A0000 -P 4096 -L 256 -N M -C headers_def.txt u-boot.bin u-boot_nand_dram.bin
-------------
UART image
-------------
Image for UART. Secure mode is disabled.
Run DRAM registers configuration (REG header) procedure defined in dramregs.txt file followed by single BIN header
execution taken from binhdr.bin file before running U-boot.
Load U-boot into DRAM address 0x600000 and start execution at address 0x6A0000.
doimage -T uart -D 0x600000 -E 0x6A0000 -R dramregs.txt -G binhdr.bin u-boot.bin u-boot_uart.bin
---------------------
SATA disk image
---------------------
Secure mode is enabled. JTAG support is enabled. Delay boot execution by 10 sec for JTAG probe connection.
Run DRAM registers configuration (REG header) procedure defined in dramregs.txt file followed by single BIN header
execution taken from binhdr.bin file before running U-boot.
Encode binary image using AES-128 key taken from file aes128.bin. Assign BoxID of 0xDEADBEF and FlashID of 0xBABE
to the boot image. Sign headers block and encoded binary image by RSA signatures created with help of RSA private key
defined in file rsa_priv.txt.
Load U-boot into DRAM address 0x600000 and start execution at address 0x6A0000.
doimage -T sata -D 0x600000 -E 0x6A0000 -Z rsa_priv.txt -A aes128.bin \
-J 1 -B 0xDEADBEEF -F 0xBABE -G bin_hdr.bin u-boot.bin u-boot_sata_img_secure.bin
-----------------------------------------------
hdparser output example for regular boot image
-----------------------------------------------
hdrparser test_image.bin
#####################################################
Marvell Boot Image checker version 1.0
-----------------------------------------------------
Image file:
test_image.bin
File size = 765308 bytes
-----------------------------------------------------
MAIN HEADER
-----------------------------------------------------
[00:00]Image type: SPI/NOR
[01:01]Reserved: 0x00
[03:02]NAND page size: 0 (0x0000)
[07:04]Boot image size: 665500 (0x000A279C)
[08:08]Header version: 1 (0x01)
[11:09]Headers block size: 99808 (0x0185E0)
[15:12]Source address: 0x000185E0
[19:16]Destination address: 0x00600000
[23:20]Execution address: 0x006A0000
[24:24]Reserved: 0x00
[25:25]NAND Block size: 0 (0KB)
[26:26]NAND Technology: 0 (N/A)
[27:27]Reserved: 0x00
[29:28]Reserved: 0x0000
[30:30]Num of ext. headers: 5 (0x05)
[31:31]Header block checksum: 0xCF (GOOD)
-----------------------------------------------------
REGISTER HEADER @ 0x20
-----------------------------------------------------
[0000:0000]Header type: 0x03
[0003:0001]Header length: 144 (0x000090)
[0139:0004]Num of ADDR-VAL pairs: 17 (0x11)
[0140:0140]More headers follow: YES
[0141:0141]Delay(mS): 0x00
[0143:0142]Reserved: 0x0000
-----------------------------------------------------
REGISTER HEADER @ 0xb0
-----------------------------------------------------
[0000:0000]Header type: 0x03
[0003:0001]Header length: 288 (0x000120)
[0283:0004]Num of ADDR-VAL pairs: 35 (0x23)
[0284:0284]More headers follow: YES
[0285:0285]Delay(mS): 0x00
[0287:0286]Reserved: 0x0000
-----------------------------------------------------
BINARY HEADER @ 0x1d0
-----------------------------------------------------
[0000:0000]Header type: 0x02
[0003:0001]Header length: 49572 (0x00C1A4)
[0004:0004]Number of parameters: 2 (0x000002)
[0005:0005]Reserved: 0x00
[0007:0005]Reserved: 0x0000
[0015:0008]Parameters
[0016:49568]ARM Code link offset: 0x1e0
[49568:49568]More headers follow: YES
[49569:49569]Reserved: 0x00
[49570:49571]Reserved: 0x0000
-----------------------------------------------------
REGISTER HEADER @ 0xc374
-----------------------------------------------------
[0000:0000]Header type: 0x03
[0003:0001]Header length: 200 (0x0000C8)
[0195:0004]Num of ADDR-VAL pairs: 24 (0x18)
[0196:0196]More headers follow: YES
[0197:0197]Delay(mS): 0x00
[0199:0198]Reserved: 0x0000
-----------------------------------------------------
BINARY HEADER @ 0xc43c
-----------------------------------------------------
[0000:0000]Header type: 0x02
[0003:0001]Header length: 49572 (0x00C1A4)
[0004:0004]Number of parameters: 2 (0x000002)
[0005:0005]Reserved: 0x00
[0007:0005]Reserved: 0x0000
[0015:0008]Parameters
[0016:49568]ARM Code link offset: 0xc44c
[49568:49568]More headers follow: NOT
[49569:49569]Reserved: 0x00
[49570:49571]Reserved: 0x0000
-----------------------------------------------------
BOOT IMAGE @ 0x185e0
-----------------------------------------------------
Binary image checksum = 0x536C7D26 (GOOD)
************ T E S T S U C C E E D E D ************
-----------------------------------------------
hdparser output example for secure boot image
-----------------------------------------------
./hdrparser -t test_image_secure.bin
#####################################################
Marvell Boot Image checker version 1.0
-----------------------------------------------------
Image file:
test_image_secure.bin
File size = 766420 bytes
-----------------------------------------------------
MAIN HEADER
-----------------------------------------------------
[00:00]Image type: SPI/NOR
[01:01]Reserved: 0x00
[03:02]NAND page size: 0 (0x0000)
[07:04]Boot image size: 665524 (0x000A27B4)
[08:08]Header version: 1 (0x01)
[11:09]Headers block size: 100868 (0x018A04)
[15:12]Source address: 0x00018A20
[19:16]Destination address: 0x00600000
[23:20]Execution address: 0x006A0000
[24:24]Reserved: 0x00
[25:25]NAND Block size: 0 (0KB)
[26:26]NAND Technology: 0 (N/A)
[27:27]Reserved: 0x00
[29:28]Reserved: 0x0000
[30:30]Num of ext. headers: 6 (0x06)
[31:31]Header block checksum: 0xB9 (GOOD)
-----------------------------------------------------
SECURITY HEADER @ 0x20
-----------------------------------------------------
[0000:0000]Header type: 0x01
[0003:0001]Header length: 1060 (0x000424)
[0004:0004]Image is encrypted: YES
[0005:0005]Reserved: 0x00
[0007:0006]Reserved: 0x0000
[0531:0008]Public Key: 30 82 01 0B ...
[0532:0532]JTAG enabled: YES [1]
[0533:0533]Reserved: 0x00
[0535:0534]Reserved: 0x0000
[0539:0536]Box ID: 0xDEADBEEF
[0541:0540]Flash ID: 0xBABE
[0543:0542]Reserved: 0x0000
[0799:0544]Header signature: 3E 09 AB A9 ...
[1055:0800]Image signature: 73 6D D6 EF ...
[1057:1056]More headers follow: YES
[1058:1058]Reserved: 0x00
[1060:1059]Reserved: 0x0000
-----------------------------------------------------
REGISTER HEADER @ 0x444
-----------------------------------------------------
[0000:0000]Header type: 0x03
[0003:0001]Header length: 144 (0x000090)
[0139:0004]Num of ADDR-VAL pairs: 17 (0x11)
[0140:0140]More headers follow: YES
[0141:0141]Delay(mS): 0x00
[0143:0142]Reserved: 0x0000
-----------------------------------------------------
REGISTER HEADER @ 0x4d4
-----------------------------------------------------
[0000:0000]Header type: 0x03
[0003:0001]Header length: 288 (0x000120)
[0283:0004]Num of ADDR-VAL pairs: 35 (0x23)
[0284:0284]More headers follow: YES
[0285:0285]Delay(mS): 0x00
[0287:0286]Reserved: 0x0000
-----------------------------------------------------
BINARY HEADER @ 0x5f4
-----------------------------------------------------
[0000:0000]Header type: 0x02
[0003:0001]Header length: 49572 (0x00C1A4)
[0004:0004]Number of parameters: 2 (0x000002)
[0005:0005]Reserved: 0x00
[0007:0005]Reserved: 0x0000
[0015:0008]Parameters
[0016:49568]ARM Code link offset: 0x604
[49568:49568]More headers follow: YES
[49569:49569]Reserved: 0x00
[49570:49571]Reserved: 0x0000
-----------------------------------------------------
REGISTER HEADER @ 0xc798
-----------------------------------------------------
[0000:0000]Header type: 0x03
[0003:0001]Header length: 200 (0x0000C8)
[0195:0004]Num of ADDR-VAL pairs: 24 (0x18)
[0196:0196]More headers follow: YES
[0197:0197]Delay(mS): 0x00
[0199:0198]Reserved: 0x0000
-----------------------------------------------------
BINARY HEADER @ 0xc860
-----------------------------------------------------
[0000:0000]Header type: 0x02
[0003:0001]Header length: 49572 (0x00C1A4)
[0004:0004]Number of parameters: 2 (0x000002)
[0005:0005]Reserved: 0x00
[0007:0005]Reserved: 0x0000
[0015:0008]Parameters
[0016:49568]ARM Code link offset: 0xc870
[49568:49568]More headers follow: NOT
[49569:49569]Reserved: 0x00
[49570:49571]Reserved: 0x0000
-----------------------------------------------------
BOOT IMAGE @ 0x18a20
-----------------------------------------------------
Binary image checksum = 0x4F5141E2 (GOOD)
RSA key SHA256 digest for eFuse:
BE FULL: c1 9e fc 0a 99 2c 9d a0 be 8a 9c b5 e0 ac d3 1d
de 67 67 fd cf 09 90 3a b8 bc a5 01 8e 99 a0 fb
LE REGS: [0]0afc9ec1 [1]a09d2c99 [2]b59c8abe [3]1dd3ace0
[4]fd6767de [5]3a9009cf [6]01a5bcb8 [7]fba0998e
Header RSA signature verification - PASSED
Image RSA signature verification - PASSED
************ T E S T S U C C E E D E D ************