Heartbeat LED during init script

barebox+mailing at cookiesoft.de barebox+mailing at cookiesoft.de
Wed Feb 17 07:44:59 EST 2021


Hey Sasha,

thanks for the answer.

> barebox doesn't support interrupts. LED blinking is done in pollers

That explains the obversation.

> add a ctrlc() call to your memtester code inside some loop.
> That will cause the poller to run.

I'm not entirely sure, if I understand you correctly or you didn't understand me.

I use the memtest command[0] from barebox so there is nothing custom written or any loop that I can control.
However, if I understand you correctly one could add the `ctrlc` command in all of these[1] three loops inside the `mem_test_moving_inversions` function. Is that correct? Or is there an other way to not listen on ctrl+c but let the poller itself run?

Greetings,
Marcel

[0]: https://barebox.org/doc/latest/commands/mem/memtest.html
[1]: https://git.pengutronix.de/cgit/barebox/tree/common/memtest.c#n387

> Sascha Hauer <sha at pengutronix.de> hat am 17.02.2021 13:35 geschrieben:
> 
>  
> On Wed, Feb 17, 2021 at 01:22:32PM +0100, barebox+mailing at cookiesoft.de wrote:
> > Hey everyone,
> > 
> > we use the barebox bootloader in on of our products.
> > Because of some norms we need to make a memtest of the RAM. To do that, we use the provided memtest tool.
> > So one of our our scripts is `/env/init/10-memtest`, which has just `memtest -tc` in it.
> > 
> > 
> > The other script is `/env/init/05-heartbeat` which contains 
> > 
> > #!/bin/sh
> > 
> > led -b board-red 100 1000
> > 
> > So, at first the 05 script is executed, afterwards the memtest script.
> > 
> > The problem is, that during the memtest the led does not blink, but flashes red the whole time. After the memtest is done, the blinking is done perfectly fine, but not during the memtest.
> > 
> > I create a small video to showcase this exact problem: https://imgur.com/a/9sxHTcm
> > 
> > Can anybody tell me why the barebox isn't able to keep up with the blinking as well as how to mitigate that?
> 
> barebox doesn't support interrupts. LED blinking is done in pollers,
> that are little function that run each time a timing related function is
> called. What you can do is to add for example add a ctrlc() call to your
> memtester code inside some loop. That will cause the poller to run.
> 
> Sascha
> 
> -- 
> 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