AnsweredAssumed Answered

Imx28 HAB 0x80501001 DCP Error Code

Question asked by bruce chen on Jun 19, 2016
Latest reply on Jun 27, 2016 by Yuri Muhin

Hello all:

     Now I am use Imx28 HAB secure boot, but use Mfgtool programming the imx28_ivt_linux.sb, the imx28  serial port output 0x80501001 DCP, I am check the ROM ERROR Code docment, The 0x80501001 error code is DCP reported a status error. but I don't know how can i made the right imx28_ivt_liunx.sb. accordding to AN4555.pdf doccument like below step:

  a、use otp_burner.py create OtpInit.sb file and burner to OTP use imx_otp_tools.

  b、Acorrding to AN4555.pdf document create digital signature imx_ivt_linux.sb and updater_ivt.sb files.

  c、Copy imx_ivt_linux.sb and updater_ivt.sb to MfgTool.

  d、Programming failed and imx28 serial port output ROM error code 0x80501001.

 

I am use imx-bootlets-src-10.12.01 and I am modify some source code and linker script:

     a. add new source file hab_ivt.c, the like content below

          #include "hab.h"

struct my_ivt {

    uint32_t header;

    uint32_t *entry;

    uint32_t reserved1;

    uint32_t *dcd;

    uint32_t *boot_data;

    uint32_t *self;

    uint32_t *csf;

    uint32_t reserved2;

    uint32_t img_len;

};

 

extern char __hab_data;

extern char __hab_data_end;

extern void* _start;

//extern char BASE_ADDR;

#define BASE_ADDRESS 0x40000100

 

const struct my_ivt input_ivt __attribute__((section(".data"),aligned(4))) = {

    0x402000d1,

    (uint32_t*) (&_start),

    NULL,

    NULL,

    NULL,

    (uint32_t*) (&input_ivt),

    (uint32_t*) (&__hab_data),

    0,

    (const void*) (&__hab_data_end) - BASE_ADDRESS,

};

 

b. modify boot_prep/link.lds script

OUTPUT_ARCH(arm)

ENTRY(_start)

SECTIONS

{

        . = 0x00000010;

        . = ALIGN(4);

        . = 0x40000100;

        BASE_ADDR = .;

        .text : { *(.text) }

        .data : { *(.data) }

        . = BASE_ADDR + 0x2A000;

        __hab_data = .;

        . = . + 0x2000;

        __hab_data_end = .;

        . = ALIGN(4);

        .bss  : { *(.bss) }

}

 

c. Modify the boot_prep/Makefile for compile hab_ivt.c file

 

 

I don't know my add the IVT methods is right? please help me thanks.

Original Attachment has been moved to: linux_ivt_kone.bd.zip

Original Attachment has been moved to: link.lds.zip

Original Attachment has been moved to: hab_ivt.c.zip

Original Attachment has been moved to: updater_ivt_kone.bd.zip

Outcomes