Our new product failed ESD testing when it locked up after application of ESD to a metal connector housing on the rear of the unit. As a short term fix I’ve been asked to implement a watchdog. The pxa270 we’re using has a built-in watchdog timer which asserts RESET. This is known to work since we already use it to implement a programmed warm-boot after a software upgrade.
We don’t know exactly what causes the product to freeze up when ESD strikes, or if the failure mode is the same every time.
Watchdogs always seem to be a pain, but the customer wants one so a discussion of the best way to implement them on a QNX system might be useful.
My thinking is that the lowest priority user process in the system could loop and continuously reload the watchdog countdown timer. If a few seconds were to go by when it didn’t get scheduled the reboot would occur. It seems like this would work in most cases as long as long as the system has a few idle cycles to spare.
There is probably no foolproof way to implement a watchdog but I’d be interested in hearing of successful approaches others might have used to do this sort of thing.