Watchdog: Difference between revisions
mNo edit summary |
mNo edit summary |
||
(10 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
The watchdog | [[File:Doge.jpg|thumb|The watchdog can be physically disabled for troubleshooting purposes by connecting pin {{Sig|DOGE|DOGE}} (watch'''DOG E'''nable, {{Chipname|NEO-B1}} pin 94, J2 jumper on some boards) to ground.]] | ||
The watchdog is an automatic reset system to prevent games from freezing due to a bug or a hardware fault. It's a common feature of arcade hardware and many electronic systems. | |||
A constantly resetting system produces a typical clicking sound, giving a clue for solving boot issues. | On the NeoGeo, it consists of an internal frame counter which resets the whole system if it goes over a certain value. To avoid this, the software needs to regularly reset the counter by writing any value to {{Reg|REG_DIPSW|REG_DIPSW}} (to "kick" the watchdog). [[68k interrupts|VBlank]] routines typically take care of this task, so care has to be taken when the interrupt is disabled. | ||
A constantly resetting system produces the [[click of death]]: a typical clicking sound, giving a clue for solving boot issues. | |||
The NeoGeo CD 2 also has a watchdog timer ? | The NeoGeo CD 2 also has a watchdog timer ? | ||
==Timings== | |||
This isn't verified. | |||
Charles mvstech.txt specifies this: | |||
<pre> | <pre> | ||
/RESET low 3 244 030 cycles | |||
/RESET high 8 120 860 cycles | |||
Total time 11 364 890 cycles | |||
</pre> | </pre> | ||
The watchdog is used as a form of | [[MAME]]'s source says that a 0.128762s long loop '''sometimes''' resets the system. | ||
The counter is clocked by the {{Sig|CHBL|BNKB}} signal. | |||
*3244030 cycles corresponds to 8 [[Framerate|frames]]. | |||
*8120860 cycles corresponds to 20 frames (- 7 lines). | |||
*128762µs is 3090288 cycles, which corresponds to about 7.6 frames. | |||
A looping watchdog reset gives a steady 3.7Hz {{Sig|RESET|RESET}} signal, matching the duration of 2 times 8 frames (135.17ms). | |||
==As a security measure== | |||
The watchdog is used as a form of protection on a number of games, previously this was implemented as a specific hack which locked a single address of [[Battery-backed RAM|SRAM]]. If the game doesn't find valid data in the backup ram it will initialize it, then sit in a loop. The watchdog should then reset the system. If the watchdog fails to reset the system the code will continue and set a value in backup ram to indiate that the protection check has failed. | |||
[[Category:Code]] | [[Category:Code]] | ||
[[Category: | [[Category:Base system]] |
Latest revision as of 20:16, 9 May 2019
The watchdog is an automatic reset system to prevent games from freezing due to a bug or a hardware fault. It's a common feature of arcade hardware and many electronic systems.
On the NeoGeo, it consists of an internal frame counter which resets the whole system if it goes over a certain value. To avoid this, the software needs to regularly reset the counter by writing any value to REG_DIPSW (to "kick" the watchdog). VBlank routines typically take care of this task, so care has to be taken when the interrupt is disabled.
A constantly resetting system produces the click of death: a typical clicking sound, giving a clue for solving boot issues.
The NeoGeo CD 2 also has a watchdog timer ?
Timings
This isn't verified.
Charles mvstech.txt specifies this:
/RESET low 3 244 030 cycles /RESET high 8 120 860 cycles Total time 11 364 890 cycles
MAME's source says that a 0.128762s long loop sometimes resets the system.
The counter is clocked by the CHBL signal.
- 3244030 cycles corresponds to 8 frames.
- 8120860 cycles corresponds to 20 frames (- 7 lines).
- 128762µs is 3090288 cycles, which corresponds to about 7.6 frames.
A looping watchdog reset gives a steady 3.7Hz RESET signal, matching the duration of 2 times 8 frames (135.17ms).
As a security measure
The watchdog is used as a form of protection on a number of games, previously this was implemented as a specific hack which locked a single address of SRAM. If the game doesn't find valid data in the backup ram it will initialize it, then sit in a loop. The watchdog should then reset the system. If the watchdog fails to reset the system the code will continue and set a value in backup ram to indiate that the protection check has failed.