FreeCalypso > hg > freecalypso-tools
diff target-utils/flash-boot-test/watchdog.c @ 490:3d7b546c710c
target-utils/flash-boot-test: more watchdog experimentation commands
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 21 May 2019 23:48:26 +0000 |
parents | cd900b885eb2 |
children |
line wrap: on
line diff
--- a/target-utils/flash-boot-test/watchdog.c Tue May 21 21:25:07 2019 +0000 +++ b/target-utils/flash-boot-test/watchdog.c Tue May 21 23:48:26 2019 +0000 @@ -1,9 +1,48 @@ +#include <sys/types.h> #include "types.h" void -cmd_watchdog_disable() +cmd_wd() { /* stop/disable the watchdog timer */ *(volatile u16 *)0xFFFFF804 = 0xF5; *(volatile u16 *)0xFFFFF804 = 0xA0; } + +void +cmd_we() +{ + /* watchdog enable */ + *(volatile u16 *)0xFFFFF804 = 0x8000; +} + +void +cmd_wr() +{ + /* read and display watchdog downcount register */ + printf("%04X\n", *(volatile u16 *)0xFFFFF802); +} + +void +cmd_ww(argbulk) + char *argbulk; +{ + /* single or double write to WATCHDOG_TIM_MODE */ + char *argv[3]; + u_long w1, w2; + + if (parse_args(argbulk, 1, 2, argv, 0) < 0) + return; + if (parse_hexarg(argv[0], 4, &w1) < 0) { + printf("ERROR: arg1 must be a valid 16-bit hex value\n"); + return; + } + if (argv[1] && parse_hexarg(argv[1], 4, &w2) < 0) { + printf("ERROR: arg2 must be a valid 16-bit hex value\n"); + return; + } + /* do it */ + *(volatile u16 *)0xFFFFF804 = w1; + if (argv[1]) + *(volatile u16 *)0xFFFFF804 = w2; +}