From 83afdbdc154fe013bfe35ce5ecf1d61570b04ed6 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 5 Nov 2009 21:45:00 -0800 Subject: [PATCH] Add reboot command. This resets the processor using the watchdog timer. Signed-off-by: Keith Packard --- src/ao.h | 1 + src/ao_cmd.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/ao.h b/src/ao.h index 508ed37a..2df81d2a 100644 --- a/src/ao.h +++ b/src/ao.h @@ -107,6 +107,7 @@ ao_start_scheduler(void); #define AO_PANIC_LOG 5 /* Failing to read/write log data */ #define AO_PANIC_CMD 6 /* Too many command sets registered */ #define AO_PANIC_STDIO 7 /* Too many stdio handlers registered */ +#define AO_PANIC_REBOOT 8 /* Reboot failed */ /* Stop the operating system, beeping and blinking the reason */ void diff --git a/src/ao_cmd.c b/src/ao_cmd.c index 81a52708..58039f3a 100644 --- a/src/ao_cmd.c +++ b/src/ao_cmd.c @@ -199,6 +199,17 @@ echo(void) lex_echo = ao_cmd_lex_i != 0; } +static void +ao_reboot(void) +{ + ao_cmd_white(); + if (!ao_match_word("eboot")) + return; + WDCTL = WDCTL_EN | WDCTL_MODE_WATCHDOG | WDCTL_INT_64; + ao_sleep(AO_SEC_TO_TICKS(2)); + ao_panic(AO_PANIC_REBOOT); +} + static void version(void) { @@ -292,6 +303,7 @@ __code struct ao_cmds ao_base_cmds[] = { { '?', help, "? Print this message" }, { 'T', ao_task_info, "T Show task states" }, { 'E', echo, "E <0 off, 1 on> Set command echo mode" }, + { 'r', ao_reboot, "r eboot Reboot" }, { 'v', version, "v Show version" }, { 0, help, NULL }, }; -- 2.30.2