Author |
Topic |
|
erasmussen
15 Posts |
Posted - 12 Jun 2009 : 16:43:34
|
We have an existing application running on BitsyX which re recently ported to BitsyXb and appeared to run fine in all areas. We have recently discovered that the watchdog is not kicking in when it should be on multiple systems and I am wondering if there was a change between bitsyx and bitsyxb regarding the watchdog.
When I say multiple systems I mean the two systems we have in hand.
Any help is appreciated!! |
|
beitman
63 Posts |
Posted - 15 Jun 2009 : 14:22:50
|
I called erasmussen to discuss this, we are looking into why the watchdog isn't working. For those of you interested in this problem, the watchdog is working on BitsyXb for erasmessen if the timeout value is ~2 minutes, but it is failing if the timeout is ~17 minutes.
When we know more, I will update this post.
Bruce |
|
|
erasmussen
15 Posts |
Posted - 16 Jun 2009 : 12:27:39
|
Update: I took the Watchdog sample from the forums, modified WD_TIMEOUT to be 120 seconds, and at the end of TriggerWatchdog.cpp, changed it to look like this:
RETAILMSG(1,(L"Waiting for watchdog reset....\r\n"));
RETAILMSG(1,(L"Entering Suspend...\r\n")); GwesPowerOffSystem(); RETAILMSG(1,(L"...Exiting Suspend\r\n"));
return 0;
I compiled for both BitsyX and BitsyXB and ran the test on both systems side by side.
Both systems ran the application, displayed the "Entering Suspend..." message and went to sleep. I then woke them both up with a hardware Wakeup and they both displayed the "...Exiting Suspend" message.
Two minutes later the BitsyX reset, the the BitsyXB never reset.
It appears that the behavior of the Watchdog has changed between BitsyX and BitsyXB. Is there some settings: registry, setup config, switches, ADSLOAD.REG, ADSLOAD.HWT, etc that I may be missing that might be different between the systems?
If there is some change I can make in settings that will keep the BitsyX behavior of preserving the Enabled state of the Watchdog upon return from sleep that will help us a lot as we will not need to make a whole new release of our software for all of our new BitsyXB customers...
...or if we can confirm that the behavior has changed then I can stop looking and get onto the business of making a new version that enables watchdog on return from sleep.
Thank you in advance!! |
Edited by - erasmussen on 16 Jun 2009 12:28:02 |
|
|
beitman
63 Posts |
Posted - 17 Jun 2009 : 10:08:54
|
You are correct. It turns out that we implemented a method to disable the watchdog which requires a suspend/resume. The result is that the watchdog is not re-enabled after resume unless you are using some new APIs provided by the kernel. We will work on documenting the new APIs and have them posted this week.
Thank you for the background work that you did to help us identify this key difference. Note that a workaround for this is to add code to the WatchDog::Pet() function to enable the watchdog when you pet the dog.
Bruce |
|
|
beitman
63 Posts |
Posted - 18 Jun 2009 : 15:02:43
|
Celine added an application in topic 2792 that shows how to use ADSAPI to manage the watchdog. If you use these watchdog APIs the watchdog will be re-enabled on resume and the timeout will be set to the full timeout value. |
|
|
|
Topic |
|
|
|