[Armadillo:09369] Re: Armadillo-420 リセット要因を知る方法

HSC:熊谷 貴広 email@hidden
2013年 12月 17日 (火) 19:12:20 JST


いつもお世話になっております。熊谷です。

想定通りの動作で対処できそうなので助かりました。

大変ありがとうございます!

以上です。
  ________
 〆 引用 メール φ \
|           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|From    :  竹之下航洋 <email@hidden>
|Cc      :  
|Date    :  2013/12/17 11:50:01
|Subject :  Armadillo-420 リセット要因を知る方法
|________________________________________________________________
|
|竹之下です。
|
|> |- b: ウォッチドッグタイマのタイムアウトによるリセット
|>
|> ⇒このウォッチドックタイマとは、
|>  ハードウェア・ソフトウェアの両方を指示しておりますか?
|ハードウェアウォッチドッグタイマを意図しています。
|
|> |- c: rebootコマンドによるリブート
|> ⇒上記タイミングによりリブートされたことを pic することは可能でしょうか?
|>  例)void arch_reset(char mode)関数等で
|cの場合、以下の処理がおこなわれます。
|
|1: /etc/inittabのshutdownアクションに指定されている、/etc/init.d/rebootが実行される
|2: rebootシステムコールが実行される
|3: 以下の順番でカーネルの関数がコールされる。
|- linux-2.6.26-at/kernel/sys.c::sysreboot(cmd=LINUXREBOOTCMDRESTART)
|- linux-2.6.26-at/kernel/sys.c::kernel_restart()
|- linux-2.6.26-at/arch/arm/kernel/process.c::machine_restart()
|- linux-2.6.26-at/arch/arm/kernel/process.c::armmachinerestart()
|- linux-2.6.26-at/arch/arm/mach-mx25/system.c::arch_reset()
|- linux-2.6.26-at/arch/arm/plat-mxc/wdog.c::mxcwdreset()
|- リセットがかかる。
|
|ですので、ご指摘の通りarch_rest()等の関数でフックすることができます。
|
|
|2013年12月17日 11:16 HSC:熊谷 貴広 <email@hidden>:
|> いつもお世話になっております。熊谷です。
|>
|> ご回答いただきありがとうございます。
|>
|> 起動時に RCSR レジスタによるリセット要因を判別することは不可能。
|> ということですので、
|> リセット前に何かしらのファイルに吐き出す処理を埋め込み
|> 実現するよう検討いたします。
|>
|>
|> |- b: ウォッチドッグタイマのタイムアウトによるリセット
|>
|> ⇒このウォッチドックタイマとは、
|>   ハードウェア・ソフトウェアの両方を指示しておりますか?
|>
|> |- c: rebootコマンドによるリブート
|> ⇒上記タイミングによりリブートされたことを pic することは可能でしょうか?
|>   例)void arch_reset(char mode)関数等で
|>
|> 以上、よろしくお願いいたします。
|>
|>
|>   ________
|>  〆 引用 メール φ \
|> |           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|> |From    :  竹之下航洋 <email@hidden>
|> |Cc      :
|> |Date    :  2013/12/17 10:26:20
|> |Subject :  Armadillo-420 リセット要因を知る方法
|> |________________________________________________________________
|> |
|> |竹之下です。
|> |
|> |Armadillo-400シリーズの(再)起動の方法には、以下の3種類があります。
|> |
|> |- a: 電源投入によるパワーオンリセット
|> |- b: ウォッチドッグタイマのタイムアウトによるリセット
|> |- c: rebootコマンドによるリブート
|> |
|> |Armadillo-400シリーズの場合、a、b、cいずれの場合も最終的に
|> |ハードウェア的なリセットがかかるため、CPUのレジスタ等で
|> |リセット要因を判定することはできないような作りになっています。
|> |
|> |
|> |2013年12月16日 22:44 HSC:熊谷 貴広 <email@hidden>:
|> |> いつもお世話になっております。熊谷です。
|> |>
|> |> お教えいただいたレジスタについて、
|> |> SoftWatchDog リセットを発生させ、
|> |> 以下の2点で読み出したのですが、リセット要因が設定されていないようでした。
|> |> 起動時(①)はリセット要因クリアされている可能性があるため、
|> |> リセット発生時(②)にはリセット要因が設定されているものと考えていたので
|> |> すが、タイミング(読み出す)は全く異なるのでしょうか。
|> |>
|> |> -------------------------------------------------------------------------
|> |>
|> |> ■読み出し箇所
|> |>     ①Armadillo 起動時
|> |>         arch/arm/mach-mx25/armadillo400.c
|> |>         static void __init armadillo400_init(void)
|> |>
|> |>
|> |>     ②WatchDog リセット発生時
|> |>         arch/arm/mach-mx25/system.c
|> |>         void arch_reset(char mode)
|> |>
|> |> ■読み出し結果
|> |>   ①の場合
|> |>         Machine: Armadillo-420
|> |>         Memory policy: ECC disabled, Data cache writeback
|> |>
|> |>         ~略~
|> |>
|> |>         MXC WDOG1 Enabled
|> |>         @@@@ reg_rcsr = 0x1000800
|> |>         CPU is i.MX25 Revision 1.2
|> |>         Clock input source is 24000000
|> |>         MXC GPIO hardware
|> |>
|> |>   ②の場合
|> |>     SoftDog: Initiating system reboot.
|> |>     0x1000800
|> |>
|> |>     期待値:0x*******2
|> |>
|> |>     <コード>
|> |>         int reg_rcsr;
|> |>
|> |>         reg_rcsr = __raw_readl(MXC_CCM_CRSR);
|> |>         printk(KERN_INFO "reg_rcsr = 0x%x\n", reg_rcsr);
|> |>
|> |> 以上、よろしくお願いいたします。
|> |>   ________
|> |>  〆 引用 メール φ \
|> |> |           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|> |> |From    :  Shin-ya Koga <email@hidden>
|> |> |Cc      :
|> |> |Date    :  2013/12/08 11:05:40
|> |> |Subject :  Armadillo-420 リセット要因を知る方法
|> |> |________________________________________________________________
|> |> |
|> |> |サムシングプレシャスの古賀です。
|> |> |
|> |> |熊谷さん([Armadillo:09341]):
|> |> |>Arimadillo のリセット要因(Power-on reset、Cold/Warm reset)を
|> |> |>任意ファイル(/dev/xxxxx.inf)に格納し、
|> |> |>ユーザランド側からファイルを参照し、
|> |> |>そのリセット要因に沿った初期起動処理を分岐させたいと考えております。
|> |> |>
|> |> |>下記資料(※1・※2)を見る限り、
|> |> |>リセット要因を「POR_B」/「RESET_B」から読み取れるようですが、
|> |> |>可能なのでしょうか。
|> |> |
|> |> |i.MX257 の CCM (Clock Controller Module) の RCSR レジスタの
|> |> |値を読み、その REST フィールドの値でリセット要因を判定できる
|> |> |かと思います。
|> |> |
|> |> |IMX25RM.pdf の、"15.3.3.11 CCM Status Register (RCSR)" を
|> |> |ご覧ください。
|> |> |
|> |> |--
|> |> |古賀信哉 (株)サムシングプレシャス
|> |> |
|> |> |_______________________________________________
|> |> |armadillo mailing list
|> |> |email@hidden
|> |> |http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
|> |> |
|> |>
|> |>
|> |> _______________________________________________
|> |> armadillo mailing list
|> |> email@hidden
|> |> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
|> |
|> |_______________________________________________
|> |armadillo mailing list
|> |email@hidden
|> |http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
|>
|>
|> _______________________________________________
|> armadillo mailing list
|> email@hidden
|> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
|
|_______________________________________________
|armadillo mailing list
|email@hidden
|http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo






armadillo メーリングリストの案内