Arm Mbed OS support forum

nucleo-STM32F767 で開発したプログラムを STM32F777 で動作させる方法

こんにちは、初めて投稿させて頂きます。
みなさまのお知恵を貸してください。

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 動作するのではないかと考えていました。

しかし、上のエラーが表示されてしまいます。
何とか動作させる方法は無いでしょうか?

以上、よろしくお願いします。

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