トップ «前の日記(2014年04月30日) 最新 次の日記(2014年05月12日)» 編集
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2014年05月01日

WDTを外付けする話

WDT(watch dog timer)いわゆる番犬。コンピュータが故障した時に出力が出っぱなしでハングアップするとかなりヤバい。例えばアクセル踏みっぱなし、モーターが回りっぱなし、ドアが開きっぱなし、毒物の排出弁が開きっぱなし。。。機械である以上は故障モードについて考慮する必要があり、壊れたときには停止(off)のモードに強制的に移らねばならない。そのために利用されるのがWDTである。


WDTは一定時間内(通常なら数秒以内)にクリア命令を発行しなければコンピュータを強制的にリセットするものである。コンピュータが故障していないときは常時WDTをクリアし続けている。たいていのCPUにはWDTが内蔵されている。CPUに内蔵されたWDTはCPUクロックを基準に動いている。つまりCPUクロックの故障モードには無防備なのである。


CPUクロックの原発振水晶が故障するモードではCPUも停止するしWDTもカウントアップしなくなる。出力が出っぱなしで固まってしまう。fail safeにならない。水晶発振器やその負荷容量、CPU(最近ではSoC)内の発振アンプやPLL、周波数ディバイダの故障モードでも同じくfale safeにならない。SoCそのものの故障モードにも対応できない。


CPU(SoC)内蔵のWDTはあくまでも簡易的なfail safeであって、わずかなコストをケチらず外付けWDTを搭載することは自動車業界やガス検知器といった、(ちょっとヤバそうな)組込み業界では要求基準になっている。


外付けWDTの故障モードへの対策は? はい、CPU(SoC)内蔵WDTも当然併用します。両方同時に故障した場合は? その時はきっとI/Oも壊れていて出力も止まるよ。きっとたぶん。