Q&A: How to enable MX28 HAB Problems?

Document created by Yixing Kong Employee on Sep 25, 2013
Version 1Show Document
  • View in full screen mode

Question:

How to enable HAB on the MX28, following the recommendations of AN4555 to get the "get_hab_status()" function working, but has run into an issue.

Question #1

They believe they have all the HAB components worked out that are inputs to the efltosb tool as they are able to successfully run U-boot to the interactive prompt.  However, at the point where they:

    - call the rvt_report_status() function, their board says "### ERROR ### Please RESET the board ###".
     - call the rvt_entry(), their board
prints some garbage characters on the screen and then hangs. This suggests that there is something wrong with the clock that in turn affects the baudrate on the serial console causing the above behavior.

Question #2
Is there a concept of a "Bound Signature" in HABv4 as there is in HABv3?

 

Any chance the addresses for the rvt_ calls are incorrect? Can you provide the u-boot source?

 

Either Bound signature verification or UID is never mentioned in the HABv4 Application Note. So I suppose it is not supported.

 

We have made assumptions about the RVT function pointer offsets.  The HAB 4 API does not explicitly say the offsets but uses a rvt_base::function_name notation.  We have assumed that function pointers are placed in order, at every word offset beyond the RVT header.  We have confirmed the RVT header exists at the latest address in the reference manual based on a memory dump but we cannot be certain the function offsets we have setup are correct.

As far as source code, we modeled our changes for our mx28 board off of the hab.c and hab.h files available from the mainline u-boot for the mx6 architecture. This is basically the same code get_hab_status code that is written in the AN4555 document.  We did HAB API function pointer addresses to match the updated RVT base address and assumed offsets.

 

Answer:

Here are the first 3 instructions from report_status(), could your customer check the instructions from the address which they called is correct?

 

<report_status>:

:   b087b570        addlt   fp, r7, r0, ror r5

:   1c0e1c05        stcne   12, cr1, [lr], {5}

:   22182433        andscs  r2, r8, #855638016      ; 0x33000000

1 person found this helpful

Attachments

    Outcomes