S6J3110 / S6S3120 Series ウォッチドッグタイマの設定

S6J3110 / S6S3120 Series
ウォッチドッグタイマの設定方法
32-Bit Microcontroller
Spansion® TraveoTM Family
APPLICATION NOTE
Publication Number S6J3110_AN708-00012
CONFIDENTIAL
Revision 1.0
Issue Date June 24, 2015
v1.1
A P P L I C A T I O N
N O T E
対象製品
本操作マニュアルに記載されている内容の対象製品は、下記のとおりです。
シリーズ名
2
CONFIDENTIAL
品種型格(パッケージサフィックスは除く)
S6J3110
S6J3118, S6J3119, S6J311A, S6J311B, S6J311C, S6J311D, S6J311E
S6J3120
S6J3128, S6J3129, S6J312A
S6J3110_AN708-00012-1v0-J, June 24, 2015
v1.1
A P P L I C A T I O N
N O T E
Table of Contents
1.
2.
3.
4.
5.
はじめに ......................................................................................................................................... 4
1.1
この文書について................................................................................................................ 4
ウォッチドッグタイマ概要 ............................................................................................................ 5
ウォッチドッグの設定手順 ............................................................................................................ 6
3.1
ソフトウェアウォッチドッグタイマの設定手順 ................................................................. 6
3.1.1
サンプルソフトのソフトウェアウォッチドッグタイマ設定手順 ....................... 7
3.1.2
ソフトウェアウォッチドッグタイマのクリア手順 ............................................. 8
3.2
ハードウェアウォッチドッグタイマの設定手順 ................................................................. 9
3.2.1
サンプルソフトのハードウェアウォッチドッグタイマ設定手順 ..................... 10
3.2.1
ハードウェアウォッチドッグタイマのクリア手順 ........................................... 10
参考文書 ....................................................................................................................................... 12
主な変更内容 ................................................................................................................................ 13
June 24, 2015, S6J3110_AN708-00012-1v0-J
CONFIDENTIAL
3
V1.1
A P P L I C A T I O N
N O T E
1. はじめに
1.1
この文書について
本アプリケーションノートは、スパンション製マイコン Traveo ファミリ S6J3110 / S6J3120 series の利用
を検討されている方を対象としています。
本アプリケーションノートでは、ソフトウェアウォッチドッグタイマとハードウェアウォッチドッグタイマ
の設定方法について説明します。
4
CONFIDENTIAL
S6J3110_AN708-00012-1v0-J, June 24, 2015
v1.1
A P P L I C A T I O N
N O T E
2. ウォッチドッグタイマ概要
ウォッチドッグタイマはプログラム暴走を検出する為に使用する機能です。ウォッチドッグタイマにはソフ
トウェアウォッチドッグタイマとハードウェアウォッチドッグタイマがあります。
Table2-1 に双方の主な相違点を示します。
Table 2-1 ソフトウェアウォッチドッグタイマとハードウェアウォッチドッグタイマの主な相違点
項目
起動方法
ウォッチドッグカウンタの
ソースクロック
レジスタ設定方法
PSS モードでの動作
ソフトウェアウォッチドッグタイマ
リセット解除後に自動起動
-High Speed CR Clock
-Low Speed CR Clock
ユーザプログラムのレジスタ設定にて有
効/無効の選択可能
動作停止
June 24, 2015, S6J3110_AN708-00012-1v0-J
CONFIDENTIAL
ハードウェアウォッチドッグタイマ
ユーザプログラムのレジスタ設定で起動
-High Speed CR Clock
-Low Speed CR Clock
-Main Clock
ユーザプログラムにて設定
BootROM マーカにて設定
(BootROM は、リセット後にユーザプロ
グラムの前に実行される組込みファー
ムウェアです)
5
V1.1
A P P L I C A T I O N
N O T E
3. ウォッチドッグの設定手順
S6J3110 / S6J3120 series のウォッチドッグタイマを設定するためには固有の手順が必要になります。
本章では、ソフトウェアウォッチドッグタイマとハードウェアウォッチドッグタイマの設定方法について説
明します。
3.1
ソフトウェアウォッチドッグタイマの設定手順
Figure 3-1 にソフトウェアウォッチドッグタイマの設定手順例を示します。
Figure 3-1 ソフトウェアウォッチドッグタイマ設定手順例
START
SWDGn_RSTCAUSE に
予め、SWDGn_CFG:LOCK=0 であることを確認しておく
リセット要因のクリア
0x0 を設定
SWDGn_INT の設定
割込み設定
SWDn_TRG0CFG と
カウンタクリア値の設定
SWDGn_TRG1CFG の設定
SWDGn_RUNLLS と
SWDGn_PROT=0xEDAC_CE55 を設定
SWDGn_RUNULS の設定
RUN モード時のウインドウ上限値/下限値の設定
後に各ウォッチドッグレジスタを設定
SWDGn_PSSLLS と
PSS モード時のウインドウ上限値/下限値の設定
SWDGn_PSSULS の設定
SWDGn_RSTDLY の設定
SWDGn_CFG の設定
SWDGn_CFG:LOCK に
0x1 を設定
リセットディレイ時間の設定
ソフトウェアウォッチドッグタイマ動作の設定
ソフトウェアウォッチドッグタイマ設定を終了する際は、
SWDGn_CFG:LOCK=1 にする
END
6
CONFIDENTIAL
S6J3110_AN708-00012-1v0-J, June 24, 2015
v1.1
A P P L I C A T I O N
3.1.1
N O T E
サンプルソフトのソフトウェアウォッチドッグタイマ設定手順
Figure 3-2 にサンプルソフトにおけるソフトウェアウォッチドッグタイマ設定手順を示します。
Figure 3-2 サンプルソフトのソフトウェアウォッチドッグタイマ設定手順
swdg.c
/* SWDG configuration registers can be written only once */
if (SWDG0_CFG_LOCK != 0)
{
SWDGn_CFG:LOCK=0 であることを確認
return Error;
}
/* Clear reset cause */
リセット要因のクリア
SWDG0_PROT = SWDG_PROT_UNLOCK;
SWDG0_RSTCAUSE = 0x00000000;
/* Set the configuration of the interrupt */
割込み設定
SWDG0_PROT = SWDG_PROT_UNLOCK;
SWDG0_INT = unInt.u32Register;
/* Set WDG trigger values */
カウンタクリア値の設定
SWDG0_PROT = SWDG_PROT_UNLOCK;
SWDG0_TRG0CFG = pstcConfig->u8TriggerKey0;
SWDG0_PROT = SWDG_PROT_UNLOCK;
カウンタクリア値の設定
SWDG0_TRG1CFG = pstcConfig->u8TriggerKey1;
RUN モード時のウインドウ下限値の設定
/* Set window lower limit for RUN mode */
SWDG0_PROT = SWDG_PROT_UNLOCK;
SWDG0_RUNLLS = pstcConfig->stcRunModeSettings.u32WindowLowerLimit;
RUN モード時のウインドウ上限値の設定
/* Set window upper limit for RUN mode */
SWDGn_PROT=
0xEDAC_CE55 を設定後に
各ウォッチドッグレジスタ
を設定
SWDG0_PROT = SWDG_PROT_UNLOCK;
SWDG0_RUNULS = pstcConfig->stcRunModeSettings.u32WindowUpperLimit;
PSS モード時のウインドウ下限値の設定
/* Set window lower limit for PSS mode */
SWDG0_PROT = SWDG_PROT_UNLOCK;
SWDG0_PSSLLS = pstcConfig->stcPssModeSettings.u32WindowLowerLimit;
/* Set window upper limit for PSS mode */
PSS モード時のウインドウ上限値の設定
SWDG0_PROT = SWDG_PROT_UNLOCK;
SWDG0_PSSULS = pstcConfig->stcPssModeSettings.u32WindowUpperLimit;
/* Set delay cycle for Reset or NMI. */
SWDG0_PROT = SWDG_PROT_UNLOCK;
リセットディレイ時間の設定
SWDG0_RSTDLY_WDGRSTDLY = pstcConfig->u16ResetDelay;
/* Set WDG configuration */
SWDG0_PROT = SWDG_PROT_UNLOCK;
SWDG0_CFG = unCfg.u32Register;
/* Lock WDG configuration */
SWDG0_PROT = SWDG_PROT_UNLOCK;
ソフトウェアウォッチドッグタイマ
動作の設定
ソフトウェアウォッチドッグタイマ
の設定を終了する際は、SWDGn_CFG:LOCK=1 にする
SWDG0_CFG_LOCK = 1;
June 24, 2015, S6J3110_AN708-00012-1v0-J
CONFIDENTIAL
7
V1.1
A P P L I C A T I O N
3.1.2
N O T E
ソフトウェアウォッチドッグタイマのクリア手順
予め SWDG0_TRG0CFG と SWDG0_TRG1CFG に設定した値を SWDG0_TRG0 と SWDG0_TRG1 に書込
むことで、ソフトウェアウォッチドッグタイマのカウンタをクリアします。
Figure 3-2 にサンプルソフトにおけるソフトウェアウォッチドッグタイマのクリア手順を示します。
Figure 3-3 サンプルソフトのソフトウェアウォッチドッグタイマのクリア手順
swdg.c
en_result_t Swdg_Clear(uint8_t u8TrgVal0, uint8_t u8TrgVal1)
{
uint32_t cnt;
/* --------------- Check parameters and conditions ---------------- */
cnt = Swdg_GetCounterValue();
if (cnt < SWDG0_RUNLLS )
{
return Error;
}
/* ---------------
Access registers ---------------- */
/* Clear SWDG */
IRQ_DISABLE_LOCAL();
SWDG0_TRG0 = u8TrgVal0;
SWDG0_TRG1 = u8TrgVal1;
ソフトウェアウォッチドッグタイマの
カウントクリア
IRQ_RESTORE();
return Ok;
}
8
CONFIDENTIAL
S6J3110_AN708-00012-1v0-J, June 24, 2015
v1.1
A P P L I C A T I O N
3.2
N O T E
ハードウェアウォッチドッグタイマの設定手順
Table 3-1 にハードウェアウォッチドッグタイマ設定用の BootROM のマーカ一覧表を示します。
ハードウェアウォッチドッグタイマの一部のレジスタを設定する際には、これらのマーカを使用します。
WDR_CEM マーカが有効な場合、BootROM マーカの値が対応するレジスタに設定されます。
WDR_CEM マーカが無効の場合、各レジスタはハードウェアマニュアルに記載されている初期値となりま
す。
Table 3-1 ハードウェアウォッチドッグタイマ設定用 BootROM マーカ一覧表
マーカ名
WDR_INTM
割込み設定用マーカ
WDR_TRG0CFGM
WDR_TRG1CFGM
カウンタクリア値設定用マーカ
カウンタクリア値設定用マーカ
WDR_RUNLLM
WDR_RUNULM
RUN モード時の下限値設定用マーカ
RUN モード時の上限値設定用マーカ
WDR_PSSLLM
WDR_PSSULM
PSS モード時の下限値設定用マーカ
PSS モード時の上限値設定用マーカ
WDR_RSTDLYM
WDR_CFGM
リセットディレイ時間設定用マーカ
ハードウェアウォッチドッグタイマ動作設定用マーカ
WDR_CEM
ハードウェアウォッチドッグタイマ設定有効用マーカ
June 24, 2015, S6J3110_AN708-00012-1v0-J
CONFIDENTIAL
概要
9
V1.1
A P P L I C A T I O N
3.2.1
N O T E
サンプルソフトのハードウェアウォッチドッグタイマ設定手順
Figure 3-4 にサンプルソフトにおけるハードウェアウォッチドッグタイマ設定手順を示します。
Figure 3-4 サンプルソフトのハードウェアウォッチドッグタイマ設定手順
flash_marker.asm
;************************************************************************
;* 5.4 Watchdog Description Record (WDR)
*
;************************************************************************
;* Hardware Watchdog Interrupt Configuration Marker
;* Reset Enable Marker
;* If set to MARKER_ENABLE, a reset is generated when a watchdog error occurs.
;* Otherwise, an NMI interrupt is generated in the same condition.
;* < set to MARKER_DISABLE or MARKER_ENABLE
リセット生成有効
#define WDR_INTM_RSTENM_ENABLE
(MARKER_ENABLE)
;* Prior Warning Interrupt Enable Marker
;* If set to MARKER_ENABLE, prior warning interrupt is enabled.
;* Otherwise, it is disabled.
事前警告割込み有効
;* < set to MARKER_DISABLE or MARKER_ENABLE
#define WDR_INTM_IRQENM_ENABLE
(MARKER_ENABLE)
;* Watchdog Trigger 0 Configuration Marker
;* Following values are used to clear hardware watch dog timer.
;* Valid range: 0x00...0xFF
#define WDR_TRG0CFGM_WDGTRG0CFGM_SETTING
(0x00)
#define WDR_TRG1CFGM_WDGTRG0CFGM_SETTING
(0x00)
カウンタクリア値として
0x00 を設定
;* Hardware Watchdog Lower Limit RUN Setting Marker
;* This value defines the lower border of the Watchdog window for RUN state.
;* When set to "0x00000000", the window function does not work.
#define WDR_WDR_RUNLLM_SETTING
(0x00000000)
RUN モード時のウインドウ
下限値の設定
(無効)
;* Hardware Watchdog Upper Limit RUN Setting Marker
;* This value defines the upper border of the Watchdog window for RUN state.
#define WDR_WDR_RUNULM_SETTING
(0x01000000)
RUN モード時のウインドウ
上限値の設定
;* Hardware Watchdog Lower Limit PSS Setting Marker
;* This value defines the lower border of the Watchdog window for PSS state.
;* When set to "0x00000000", the window function does not work.
#define WDR_WDR_PSSLLM_SETTING
(0x00000000)
;* Hardware Watchdog Upper Limit PSS Setting Marker
;* This value defines the upper border of the Watchdog window for PSS state.
#define WDR_WDR_PSSULM_SETTING
(0x80000000)
;* Hardware Watchdog Reset Delay Counter Marker
;* This value defines the delay to be inserted
;* in Watchdog reset/NMI generation in case of a Hardware Watchdog error.
;* valid range: 0 to 65535 (0xFFFF)
#define WDR_RSTDLYM_WDGRSTDLYM_SETTING
(0x0000)
PSS モード時のウインドウ
下限値の設定
(無効)
PSS モード時のウインドウ
上限値の設定
リセットディレイ
時間の設定
;* Clock Selection Marker
;* This value is used to select a source clock of the watchdog counter.
;* < set to WDR_CFGM_CLKSELM_LOW_SPEDD_CR or WDR_CFGM_CLKSELM_HIGH_SPEDD_CR
#define WDR_CFGM_CLKSELM_CLK_SELECTION
(WDR_CFGM_CLKSELM_LOW_SPEDD_CR)
;* Hardware Watchdog Configuration Enable Marker
カウントクロックの設定
;* If set to MARKER_ENABLE, the hardware watchdog is started based
(Low Speed CR Clock)
;* on the settings defined with the WDR.
;* Otherwise, the hardware watchdog operates based on the default settings.
;* < set to MARKER_DISABLE or MARKER_ENABLE
//#define WDR_CEM_ENABLE
#define WDR_CEM_ENABLE
10
CONFIDENTIAL
(MARKER_DISABLE)
ハードウェア
ウォッチドッグタイマの
マーカ設定有効
(MARKER_ENABLE)
S6J3110_AN708-00012-1v0-J, June 24, 2015
v1.1
A P P L I C A T I O N
3.2.2
N O T E
ハードウェアウォッチドッグタイマのクリア手順
予め WDR_TRG0CFGM と WDR_TRG1CFGM に設定した値を HWDG_TRG0 と HWDG_TRG1 に書込むこ
とで、ハードウェアウォッチドッグタイマのカウンタをクリアします。
Figure 3-5 にサンプルソフトにおけるハードウェアウォッチドッグタイマのクリア手順を示します。
Figure 3-5 サンプルソフトのハードウェアウォッチドッグタイマのクリア手順
main.c
int main(void)
{
// Finalize initialization to default settings.
// (this will do IRQ and NMI initialization and global IRQ/NMI enable)
Start_Init();
// Endless loop
for (;;)
{
ClearWatchdog();
}
}
static void ClearWatchdog(void)
{
// Clear hardware watchdog
IRQ_DISABLE_LOCAL();
HWDG_TRG0 = HWDG_TRG0_VALUE;
ハードウェアウォッチドッグタイマの
カウントクリア
HWDG_TRG1 = HWDG_TRG1_VALUE;
IRQ_RESTORE();
}
June 24, 2015, S6J3110_AN708-00012-1v0-J
CONFIDENTIAL
11
V1.1
A P P L I C A T I O N
4.
N O T E
参考文書
[1]. 32-BIT MICROCONTROLLER Spansion Traveo Family S6J3110 series HARDWARE MANUAL
[2]. 32-BIT MICROCONTROLLER Spansion Traveo Family S6J3120 series HARDWARE MANUAL
12
CONFIDENTIAL
S6J3110_AN708-00012-1v0-J, June 24, 2015
v1.1
A P P L I C A T I O N
N O T E
5. 主な変更内容
ページ
場所
-
-
変更箇所
Revision 1.0
June 24, 2015, S6J3110_AN708-00012-1v0-J
CONFIDENTIAL
Initial release
13
V1.1
A P P L I C A T I O N
N O T E
免責事項
本資料に記載された製品は、通常の産業用, 一般事務用, パーソナル用, 家庭用などの一般的用途 (ただし、用途の限定はあ
りません) に使用されることを意図して設計・製造されています。(1) 極めて高度な安全性が要求され、仮に当該安全性が
確保されない場合、社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途 (原子力施設における
核反応制御, 航空機自動飛行制御, 航空交通管制, 大量輸送システムにおける運行制御, 生命維持のための医療機器, 兵器シ
ステムにおけるミサイル発射制御等をいう) 、ならびに(2) 極めて高い信頼性が要求される用途 (海底中継器, 宇宙衛星等を
いう) に使用されるよう設計・製造されたものではありません。上記の製品の使用法によって惹起されたいかなる請求また
は損害についても、Cypress は、お客様または第三者、あるいはその両方に対して責任を一切負いません。半導体デバイス
はある確率で故障が発生します。当社半導体デバイスが故障しても、結果的に人身事故, 火災事故, 社会的な損害を生じさ
せないよう、お客様において、装置の冗長設計, 延焼対策設計, 過電流防止対策設計, 誤動作防止設計などの安全設計をお願
いします。本資料に記載された製品が、外国為替及び外国貿易法、米国輸出管理関連法規などの規制に基づき規制されてい
る製品または技術に該当する場合には、本製品の輸出に際して、同法に基づく許可が必要となります。
商標および注記
このドキュメントは、断りなく変更される場合があります。本資料には Cypress が開発中の Cypress 製品に関する情報が記
載されている場合があります。Cypress は、それらの製品に対し、予告なしに仕様を変更したり、開発を中止したりする権
利を有します。このドキュメントに含まれる情報は、現状のまま、保証なしに提供されるものであり、その正確性, 完全性,
実施可能性および特定の目的に対する適合性やその市場性および他者の権利を侵害しない事を保証するものでなく、また、
明示, 黙示または法定されているあらゆる保証をするものでもありません。Cypress は、このドキュメントに含まれる情報を
使用することにより発生したいかなる損害に対しても責任を一切負いません。
Copyright © 2015 Cypress Semiconductor Corp. All rights reserved.
商標:Cypress, Cypress ロゴ,Spansion®, Spansion ロゴ (図形マーク), MirrorBit®, MirrorBit® Eclipse™, ORNAND™, Easy
DesignSim™, Traveo™及びこれらの組合せは、米国・日本ほか諸外国における Cypress Semiconductor Corp.の商標です。第三
者の社名・製品名等の記載はここでは情報提供を目的として表記したものであり、各権利者の商標もしくは登録商標となっ
ている場合があります。
14
CONFIDENTIAL
S6J3110_AN708-00012-1v0-J, June 24, 2015
v1.1