I'm trying to call HAB API functions from within U-Boot on an i.MX6DL Quick Start board (Rev B3) and each time I do, U-Boot freezes (2009.08).
U-Boot has been booted using HAB and is at this point working and has the hab_status command from https://community.freescale.com/servlet/JiveServlet/download/325535-259256/secure_boot_on_imx6.pdf , this however, does work.
The first function I'm trying to call is hab_status_t(* entry )(void) - which I'm defining by doing this:
#define HAB_RVT_STATUS_ENTRY (*(uint32_t *) 0x00000098)
typedef hab_status_t hab_rvt_status_entry_t();
#define hab_rvt_status_entry ((hab_rvt_status_entry_t*)HAB_RVT_STATUS_ENTRY)
And then I'm calling hab_rvt_status_entry(); - this is where is freezes.
Other don't work either, I have tested status exit, status check, and image entry.
Any help or ideas would be appreciated
Solved! Go to Solution.
It was hanging because the clock for the CAAM isn't enabled by default and needs to be before calling HAB functions which use it.
It was hanging because the clock for the CAAM isn't enabled by default and needs to be before calling HAB functions which use it.
There seems to be a similar issue with the imx28. The processor is hanging in at the same point in u-boot after the call to the HAB API rvt_status function. Do you have any more details on your fix for the mx6 that might translate? There is a hab_rvt_clock_init function defined in the mainline hab.c for the i.mx6 but doesn't appear to be called.
EDIT: The reference manual RVT address was updated between document revison 1 (2010) and revision 2 (2013).