Difference between revisions of "Example watchdog"
(11 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | {{todo| | + | {{todo|Complete (01.03.14-11:32->JG+);(01.03.14-11:42->MD-);(02.04.14-19:30->MD);(02.06.14-17:32->BS+);(02.06.14-19:15->MD+);(04.07.14-10:15->BS+);(04.10.14-11:50->BS+);(11.10.15-15:30->MG+)|Brian Serrano|project=oe 4,oe 5,bs,md,SEOKWREV,Complete}} |
+ | {{#seo: | ||
+ | |title=Example watchdog | ||
+ | |titlemode=append | ||
+ | |keywords=Example watchdog,watchdog timer,watchdog test,Linux watchdog | ||
+ | |description=This is a guide to the <code>watchdog</code> C example project included in the EMAC OE SDK. | ||
+ | }} | ||
This is a guide to the <code>watchdog</code> C example project included in the EMAC OE SDK. | This is a guide to the <code>watchdog</code> C example project included in the EMAC OE SDK. | ||
Line 13: | Line 19: | ||
For information on opening the project from within Eclipse, please see [[Importing the EMAC OE SDK Projects with Eclipse]]. Then, follow [[Using the EMAC OE SDK Projects with Eclipse]] for information on how to build, upload and execute the example. | For information on opening the project from within Eclipse, please see [[Importing the EMAC OE SDK Projects with Eclipse]]. Then, follow [[Using the EMAC OE SDK Projects with Eclipse]] for information on how to build, upload and execute the example. | ||
− | Alternatively, the <code>Makefile</code> can be used with the <code>make</code> command from the commandline to build and upload the example. For | + | Alternatively, the <code>Makefile</code> can be used with the <code>make</code> command from the commandline to build and upload the example. For information on this method, please see [[Using EMAC OE SDK Example Projects]]. |
+ | ====EMAC SDK 5.X==== | ||
+ | |||
+ | For information on opening the project from within QtCreator, please see [[Getting_Started_With_Qt_Creator#Adding_Source_Files | QtCreator: Adding Source Files]]. Then, follow [[Getting Started With Qt Creator]] for information on how to build, upload and execute the example. | ||
+ | |||
+ | Alternatively, the <code>CMakefile.txt</code> can be used with the <code>cmake</code> command from the commandline to build and upload the example. For information on this method, please see [[Getting_Started_with_the_EMAC_OE_SDK#Target_Machine_Compiling | Getting Started with the EMAC OE SDK]]. | ||
+ | |||
+ | Code can be found at http://git.emacinc.com/OE/example-projects | ||
==Usage and Behavior== | ==Usage and Behavior== | ||
A '''watchdog timer''' is a hardware circuit that can reset the computer system in case of a software fault. The <code>watchdog-test</code> application can enable, disable, activate, configure and interrupt the '''watchdog timer'''. | A '''watchdog timer''' is a hardware circuit that can reset the computer system in case of a software fault. The <code>watchdog-test</code> application can enable, disable, activate, configure and interrupt the '''watchdog timer'''. | ||
− | {{ | + | {{note| Activating watchdog invokes system reset (after timeout)}} |
===Hardware Requirements=== | ===Hardware Requirements=== | ||
Line 26: | Line 39: | ||
===<code>watchdog</code> Usage=== | ===<code>watchdog</code> Usage=== | ||
− | + | {{cli | ./watchdog-test [-det] | hostname=emac-oe}} | |
;-d:Disable watchdog. | ;-d:Disable watchdog. | ||
Line 36: | Line 49: | ||
This will activate <code>watchdog</code> and initiate a periodic interrupt to keep it from timing out. | This will activate <code>watchdog</code> and initiate a periodic interrupt to keep it from timing out. | ||
− | + | {{clo}} | |
− | + | {{clio | pwd=/tmp | hostname=emac-oe | ./watchdog-test }} | |
Watchdog Ticking Away! | Watchdog Ticking Away! | ||
− | + | {{clos}} | |
Every second <code>watchdog-test</code> is sending an IOCTL to the watchdog driver, which in turn ticks <code>watchdog</code> to reset its internal timer so it doesn't timeout and trigger a system reset. | Every second <code>watchdog-test</code> is sending an IOCTL to the watchdog driver, which in turn ticks <code>watchdog</code> to reset its internal timer so it doesn't timeout and trigger a system reset. | ||
Line 46: | Line 59: | ||
===Usage Example. Disabling <code>watchdog</code>=== | ===Usage Example. Disabling <code>watchdog</code>=== | ||
− | + | {{clo}} | |
− | + | {{clio | pwd=/tmp | hostname=emac-oe | ./watchdog-test -d }} | |
Watchdog card disabled. | Watchdog card disabled. | ||
− | + | {{clos}} | |
− | |||
− | |||
After running the <code>./watchdog-test -d</code> command, the program exits normally. | After running the <code>./watchdog-test -d</code> command, the program exits normally. | ||
Line 59: | Line 70: | ||
This will enable and activate <code>watchdog</code> but it won't perform a periodic timeout interrupt (see the first usage example, above). So when you run it the program activates <code>watchdog</code> and then <code>watchdog</code> resets the system. | This will enable and activate <code>watchdog</code> but it won't perform a periodic timeout interrupt (see the first usage example, above). So when you run it the program activates <code>watchdog</code> and then <code>watchdog</code> resets the system. | ||
− | + | {{clo}} | |
− | + | {{clio | pwd=/tmp | hostname=emac-oe | ./watchdog-test -e }} | |
Watchdog card enabled. | Watchdog card enabled. | ||
− | + | {{clos}} | |
After running the <code>./watchdog-test -e</code> command, the system resets. | After running the <code>./watchdog-test -e</code> command, the system resets. | ||
Line 70: | Line 81: | ||
This will activate <code>watchdog</code> and set it to timeout in 5 seconds. | This will activate <code>watchdog</code> and set it to timeout in 5 seconds. | ||
− | + | {{clo}} | |
− | + | {{clio | pwd=/tmp | hostname=emac-oe | ./watchdog-test -t }} | |
Watchdog timeout set to 5 seconds! | Watchdog timeout set to 5 seconds! | ||
− | + | ||
+ | {{clos}} | ||
After running the <code>./watchdog-test -t</code> command, the program exits normally. Once it exits, 5 seconds will elapse, and then the system resets. | After running the <code>./watchdog-test -t</code> command, the program exits normally. Once it exits, 5 seconds will elapse, and then the system resets. | ||
Line 79: | Line 91: | ||
==Summary== | ==Summary== | ||
− | The <code>watchdog</code> C example project demonstrates how to use the '''watchdog timer'''. | + | The <code>watchdog</code> C example project demonstrates how to use the '''watchdog timer'''. The '''watchdog timer''' is there to help ensure that your system will return to a functional state should your program get stuck while executing. |
− | + | EMAC provides examples of how to enable, disable, activate, configure and interrupt the <code>watchdog</code> hardware circuit. To use <code>watchdog</code> peripheral in Linux you will need a <code>watchdog</code> driver, and a <code>watchdog</code> device file. A device file is a special kind of virtual file which marks the device node in your root filesystem. Normally it's called <code>/dev/watchdog</code> . |
Latest revision as of 14:22, 30 November 2022
This is a guide to the watchdog
C example project included in the EMAC OE SDK.
A watchdog timer (WDT) is a hardware circuit that can reset the computer system in case of a software fault. This is an example test for the Linux watchdog API.
For more information about the protocol see the following page: http://en.wikipedia.org/wiki/Watchdog_timer
The watchdog
project builds one executable: watchdog-test
.
Opening, Building and Uploading the Project Files
For information on opening the project from within Eclipse, please see Importing the EMAC OE SDK Projects with Eclipse. Then, follow Using the EMAC OE SDK Projects with Eclipse for information on how to build, upload and execute the example.
Alternatively, the Makefile
can be used with the make
command from the commandline to build and upload the example. For information on this method, please see Using EMAC OE SDK Example Projects.
EMAC SDK 5.X
For information on opening the project from within QtCreator, please see QtCreator: Adding Source Files. Then, follow Getting Started With Qt Creator for information on how to build, upload and execute the example.
Alternatively, the CMakefile.txt
can be used with the cmake
command from the commandline to build and upload the example. For information on this method, please see Getting Started with the EMAC OE SDK.
Code can be found at http://git.emacinc.com/OE/example-projects
Usage and Behavior
A watchdog timer is a hardware circuit that can reset the computer system in case of a software fault. The watchdog-test
application can enable, disable, activate, configure and interrupt the watchdog timer.
NOTE |
Activating watchdog invokes system reset (after timeout) |
Hardware Requirements
watchdog
will run on any system for which it can be compiled and implements the standard Linux watchdog
API.
watchdog
Usage
root
@
emac-oe
:
~
#
./watchdog-test [-det]
- -d
- Disable watchdog.
- -e
- Enable watchdog.
- -t
- Set the watchdog timeout (to a value specified in code. Default is five seconds).
Usage Example. Activating watchdog
with a periodic interrupt
This will activate watchdog
and initiate a periodic interrupt to keep it from timing out.
root
@
emac-oe
:
/tmp
#
./watchdog-test
Watchdog Ticking Away!
Every second watchdog-test
is sending an IOCTL to the watchdog driver, which in turn ticks watchdog
to reset its internal timer so it doesn't timeout and trigger a system reset.
Now we will stop interrupting watchdog
and let it trigger a computer reset by pressing Ctrl+C.
Usage Example. Disabling watchdog
root
@
emac-oe
:
/tmp
#
./watchdog-test -d
Watchdog card disabled.
After running the ./watchdog-test -d
command, the program exits normally.
Usage Example. Enabling watchdog
This will enable and activate watchdog
but it won't perform a periodic timeout interrupt (see the first usage example, above). So when you run it the program activates watchdog
and then watchdog
resets the system.
root
@
emac-oe
:
/tmp
#
./watchdog-test -e
Watchdog card enabled.
After running the ./watchdog-test -e
command, the system resets.
Usage Example. Setting watchdog
timeout
This will activate watchdog
and set it to timeout in 5 seconds.
root
@
emac-oe
:
/tmp
#
./watchdog-test -t
Watchdog timeout set to 5 seconds!
After running the ./watchdog-test -t
command, the program exits normally. Once it exits, 5 seconds will elapse, and then the system resets.
Summary
The watchdog
C example project demonstrates how to use the watchdog timer. The watchdog timer is there to help ensure that your system will return to a functional state should your program get stuck while executing.
EMAC provides examples of how to enable, disable, activate, configure and interrupt the watchdog
hardware circuit. To use watchdog
peripheral in Linux you will need a watchdog
driver, and a watchdog
device file. A device file is a special kind of virtual file which marks the device node in your root filesystem. Normally it's called /dev/watchdog
.