Watchdogs and MICOM on A series(SH4)


From SamyGO
Revision as of 12:40, 11 May 2011 by Tom van (talk | contribs)
Jump to: navigation, search

There is abundant use of watchdogs/timeouts in LE46A956. I'm not sure if it is because of "quality" of firmware or it is an anti-hacking measure.

Micom is a microcontroller responsible for receiving commands from RC, switching main power supply on and off, resetting main SH4 CPU and so on. It also works as a watchdog. Use

/mtd_boot/MicomCtrl

or

/lib/modules/MicomCtrl

to send commands to Micom. If the main tv process exeDSP is active, a collision between MicomCtrl and exeDSP command can happen - you can repeat MicomCtrl several times to ensure the command is accepted.

Early boot timeout

In the first 14 seconds since boot start Micom expects command Set_Sw_Pvcc (208). exeDSP sends it normally. If you don't want to or can't run exeDSP, use

/mtd_boot/MicomCtrl 208

If this command is not given in time, TV reboots 6 times and after that this watchdog deactivates itself.

Boot finished OK timeout

Micom expects command SetAppInitOk in 60 seconds from boot start otherwise it reboots.

/mtd_boot/MicomCtrl 232 1

Micom periodic watchdog

Periodic WD is disabled in boot time. exeDSP always enables WD during startup and then periodically sends alive message. Timeout is 40 seconds. Commands:

/mtd_boot/MicomCtrl 22      # watchdog enable
/mtd_boot/MicomCtrl 23      # watchdog disable
/mtd_boot/MicomCtrl 24      # alive message
/mtd_boot/MicomCtrl 133 1/0 # watchdog on/off
/mtd_boot/MicomCtrl 135     # get watchdog on/off
hexdump -v -n 9 -e '/1 "%02x "' /dev/ttyAS2 # reads reply packet from serial line

Linux kernel watchdog

Software watchdog with 30 second timeout and /proc/watchdog interface. /proc/watchdog is periodically written from exeDSP internal watchdog thread.

exeDSP internal watchdog

One thread of exeDSP periodically checks the other important threads and if one does not respond, reboots the TV. Watchdog thread can be disabled writing nonzero to address 0x2091164. If the watchdog thread is disabled, /proc/watchdog is not synced anymore.

Other Micom commands

/mtd_boot/MicomCtrl 18      # power off
/mtd_boot/MicomCtrl 29      # system restart (cycles main power off and on)
/mtd_boot/MicomCtrl 143     # CPU reset (TV screen is shifted because GPU is not properly initialized)
/mtd_boot/MicomCtrl 227 0-4 # power LED control 0..off, 1/2/3..slow/medium/fast flashing, 4..on