Tux
Communication
Mailing lists
Documentation
User Manual
Target board info.
Target chip info.
Support
Linux support
Bugzilla
Downloads
STLinux
Updates
Search
Google


The web
stlinux.com
Kernel Porting Guide
Heartbeat LED
ST Logo
Previous   Contents  


Heartbeat LED

If there is a spare LED on the board it is strongly recommended that the Heartbeat function is implemented. This indicates when the processor is functioning, and is very useful when debugging. There is a stub in led.c where appropriate code can be inserted. For example:

#include <linux/config.h>
#include <asm/io.h>
 
static void mach_led(int position, int value)
{
/* Do something here to switch the LED on or off depending on value */
}
 
#ifdef CONFIG_HEARTBEAT
 
#include <linux/sched.h>
 
/* acts like an actual heart beat -- ie thump-thump-pause... */
void heartbeat_saruman(void) {
static unsigned cnt = 0, period = 0, dist = 0;
 
if (cnt == 0 || cnt == dist)
mach_led( -1, 1);
else if (cnt == 7 || cnt == dist+7)
mach_led( -1, 0);
 
if (++cnt > period) {
cnt = 0;
/* The hyperbolic function below modifies the heartbeat period
* length in dependency of the current (5min) load. It goes
* through the points f(0)=126, f(1)=86, f(5)=51,
* f(inf)->30. */
period = ((672<<FSHIFT)/(5*avenrun[0]+(7<<FSHIFT))) + 30;
dist = period / 4;
}
}
#endif

Previous   Contents  
Valid HTML 4.01! Last updated: 2005/09/29 14:43:17
© Copyright STMicroelectronics Limited, 2005
Printer