[U-Boot] BeagleBoard B7 (OMAP3530) fails to boot with the current U-Boot master branch

Siarhei Siamashka siarhei.siamashka at gmail.com
Sun Mar 5 12:51:54 UTC 2017


Hello All,

I have just unexpectedly found an old Beagleboard B7 in my closet and
tried to compile the current U-Boot master branch for it. Appears that
it is broken since almost 2 years ago:

   https://lists.denx.de/pipermail/u-boot/2015-July/220332.html
   https://lists.denx.de/pipermail/u-boot/2016-May/253777.html

And after trying to narrow it down, looks like the failure happens in
the prcm_init() function from 'arch/arm/mach-omap2/omap3/clock.c' when
it is compiled as Thumb2. At least the SPL can successfully boot after
the following change (GCC6 is needed for this pragma):


diff --git a/arch/arm/mach-omap2/omap3/clock.c b/arch/arm/mach-omap2/omap3/clock.c
index 006969e..8064fa6 100644
--- a/arch/arm/mach-omap2/omap3/clock.c
+++ b/arch/arm/mach-omap2/omap3/clock.c
@@ -592,6 +592,8 @@ static void iva_init_36xx(u32 sil_index, u32 clk_index)
 	wait_on_value(ST_IVA2_CLK, 1, &prcm_base->idlest_pll_iva2, LDELAY);
 }
 
+#pragma GCC target ("arm")
+
 /******************************************************************************
  * prcm_init() - inits clocks for PRCM as defined in clocks.h
  *               called from SRAM, or Flash (using temp SRAM stack).
@@ -700,6 +702,8 @@ void prcm_init(void)
 	sdelay(5000);
 }
 
+#pragma GCC target ("thumb")
+
 /*
  * Enable usb ehci uhh, tll clocks
  */


Now it's very interesting to figure out what exactly is wrong
there. OMAP3530 and DM3730 have different code paths in this
function, so it's not very surprising that only OMAP3530 is
broken.

Yes, I know that OMAP3530 has a very old and buggy Cortex-A8 core.
But I tried to apply all the Thumb2 related errata workarounds early
in 'arch/arm/cpu/armv7/start.S'. And also enforced single-issue
execution (bit 10 in the AUXCR) as a workaround for the most nasty
erratum (657417: A 32-bit branch instruction that spans two 4K regions
can result in an incorrect operation) just because I don't fully trust
the linker.

-- 
Best regards,
Siarhei Siamashka


More information about the U-Boot mailing list