こんにちは、初めて投稿させて頂きます。
みなさまのお知恵を貸してください。
mbed 環境で nucleo-stm32f767ZIT のプログラムを開発しました。
nucleo-STM32f767ZITでは問題なく動作しています。
UARTへ ”Hellow”を出力する簡単なプログラムです。
コンパイルした bin ファイルを同じシリーズのMCU STM32F777IIK へ書き込んで
みたところ以下のエラーが表示されてしまいます。
++ MbedOS Error Info ++
Error Status: 0x80FF0100 Code: 256 Module: 255
Error Message: Fatal Run-time error
Location: 0x8007BDD
Error Value: 0x0
++ MbedOS Fault Handler ++
STM32F777IIK は FLASH/RAM サイズが同じ で、
異なるのは、暗号モジュールが追加されているだけなので、
STM32F767 動作するのではないかと考えていました。
しかし、上のエラーが表示されてしまいます。
何とか動作させる方法は無いでしょうか?
以上、よろしくお願いします。
MACRUM
(Toyomasa Watarai)
2
STM32マイコンでFatal Run-time errorが発生する場合、クロックソースの設定が問題であることが多いようです。
https://forums.mbed.com/search?expanded=true&q=%22Fatal%20Run-time%20error%22
NUCLEO F767ZIと使用しているF777IIKボードでのクロックソースの相違を確認してみてはいかがでしょうか?
STM32F7系のデバイスの場合は、最新のコード上でのクロックソースは以下のようになっています。
シンボルはこちらで定義されています。
外部クリスタルなどを使っている場合は、USE_PLL_HSE_XTALを使用する必要があります。以下は、Uhuru Ravenの例です。
Watarai 様
丁寧なご説明ありがとうございいます。
解決しました!!
ご指摘の通り、クロックソースの問題でした。
本当にありがとうございました。
クリスタルが変更されていたので、とりいそぎ内部クロック
に切り替えてビルドしたら動作しました。
Sw4STM32 を指定してエクスポートし、 STM32CubeIDE でインポート&ビルドしました。
修正ポイントは以下の通りです。
mbed-os\targets\TARGET_STM\lp_ticker.c
#if MBED_CONF_TARGET_LSE_AVAILABLE
を 以下に変更し、クロック設定を内部クロックに変更
#if 0 // MBED_CONF_TARGET_LSE_AVAILABLE