Reset on Beaglebone Black has become unreliable/broken
Ahmad Fatoum
a.fatoum at pengutronix.de
Tue Dec 10 13:52:04 PST 2024
Hi,
On 04.12.24 17:29, Konstantin Kletschke wrote:
> On Wed, Dec 04, 2024 at 07:14:17AM +0100, Ahmad Fatoum wrote:
>
>> Very interesting. You can now try to move the 4 putc_ll`s to a later point in the
>> startup code and then see which line of barebox code needed the delay in front of
>> it.
> I _think_ this is the critical path, I have more putc_ll() inserted, but
> they are not important.
> If by any chance it is better readable for anyone I could provide a
> complete diff, of course.
>
> So, when I power up, I get:
>
> 2>6ABCDEF%G-%|!_H-%|!_I-%|!_%%%%JKLMNOPQZSwitch to console [cs0]
>
> before the banner.
>
> When I reset, S1, blabla, I get:
>
>> 6ABCDEF%G-%|
>
> So I assume it dies at
>
> BUG_ON(!IS_ALIGNED(virt_addr, PAGE_SIZE));
You can print hex numbers with puthex_ll(), although by now you are
already relocated, so you can add
pbl_set_putc((void (*)(void *, int))debug_ll_ns16550_putc, uart0);
after omap_debug_ll_init(), enable CONFIG_DEBUG_PBL and then you can
use normal printf and also see the panic message if the BUG() indeed
triggers.
> So each warm restart method gives me a proper reboot.
> With an additional putc_ll() in lowlevel.c in beaglebone_sram_init().
> The later debug putc_ll() have no influence on starting not starting.
Getting stuck inside the BUG_ON doesn't make much sense. It may be interesting
to find out what the value of virt_addr is.
I suspect the RAM controller itself may be acting funky after a warm reboot
and letting some time go by fixes that :/
Cheers,
Ahmad
>
> Kind regards
> Konsti
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list