こんにちは、
「frdmimxrt1186_lwip_ipv4_ipv6_echo_freertos_cm33」と「frdmimxrt1186_flexspi_nor_polling_transfer_cm33」という2つのSDK例を組み合わせると、「FLEXSPI_SoftwareReset(base);」という関数を実行した後に最終的にハードフォルトが発生します。また、「ベース」アドレス0x445E0000が変化することも確認しました。私はFRDM-RT1186 EVAキットを使用しています。これは何が原因でしょうか?
私はMCUXpressoIDE_25.6.136を使用しています。
フィードバックありがとうございます。
こんにちは、パブロさん。
連絡してくれてありがとう。
私はSDK 26.03.00(928 2026-03、Manifest バージョン3.15.0)を使っています。
「frdmimxrt1186_lwip_ipv4_ipv6_echo_freertos_cm33」から始めます。
これは特定の条件なしに、常に発生する現象です。
例「frdmimxrt1186_flexspi_nor_polling_transfer_cm33」からファイルをインポートします。
board/hardware_init_Flash.c
ドライバ/fsl_flexspi.C
ドライバ/fsl_flexspi.H
source/appFlash/flexspi_nor_flash_ops.c
source/appFlash/flexspi_nor_polling_transfer.c
board/app.h// これには app.h の両方が含まれています
source/lwip_ipv4_ipv6_echo_freertos.c // これには2つの関数呼び出しが含まれます。
int main(void)
ヤージュ
BOARD_InitHardware();
BOARD_InitHardware_Flash();
main_Flash();
void BOARD_InitHardware_Flash(void)
ヤージュ
BOARD_CommonSetting();
// BOARD_ConfigMPU(); // bord.c= identisch mit Lwip prj
// BOARD_InitBootPins(); // pin_mux.c「」
BOARD_InitFLASHPins();
// BOARD_InitBootClocks(); // clock_config.c「」
// BOARD_InitDebugConsole(); // board.c「」
}
int main_Flash(void)
ヤージュ
uint32_t i = 0;
status_t ステータス;
uint8_t vendorID = 0;
// BOARD_InitHardware_Flash();
...
1を返す。
/*
(1)
ヤージュ
}
*/
}
これで全部だと思います。
事前に感謝いたします。
ゲルト
こんにちは、 @GerdMartin さん。
2つのSDKの例をどのように組み合わせたのか、もう少し詳しく教えていただけますか?
どのような変更が加えられましたか?
どの例を起点として使いましたか?
現在どのSDKバージョンを使っていますか?
また、FLEXSPI_SoftwareReset(base); を実行した後に最終的にハードフォルトが発生するとおっしゃっていましたね。この現象は、関数が呼び出されるたびに必ず発生しますか、それとも特定の条件下でのみ発生しますか?
よろしくお願いします、
パブロ
こんにちは、最新情報があります。例のflexspiからlinkscriptフォルダをコピーするのを忘れていました。今度は別のハードフォルト init lwip が発生しますが、flexspi init は正常に動作しています。
ゲルト
パブロさん、こんにちは。私の問題について何か情報をお持ちでしょうか?
どうもありがとうございます。
ゲルト
こんにちは、 @GerdMartin さん。
私はその現象を再現することができ、いくつかのテストを行った結果、以下のことが分かりました。
あなたが組み合わせた最初の2つの例では、flexspi_nor_polling_transfer_cm33はメモリ領域を消去して書き込みます。デフォルトでは、この例で使用されるリージョンは、結合されたプロジェクトイメージの一部です。
例がアクセスするセクターを計算できます。この場合、例はセクター20を使い、セクターサイズは4kです。
したがって、FlexSPIの例では、次のアドレスを変更します。
20 × 4k + FlexSPI2_AMBA_BASE = 0x4014000
main_FLASH()への呼び出し前後のメモリ内容を調べると、プロジェクトイメージの一部が上書きされていることがわかります。
Pablo_Ramos_0-1787777815010.pngPablo_Ramos_0-1787777815010.pngパブロ_ラモス_0-1787777815010.png
Pablo_Ramos_1-1787777823697.pngPablo_Ramos_1-1787777823697.pngパブロ_ラモス_1-1787777823697.png
FlexSPIの例で使われているメモリ領域を、プロジェクトのイメージと重複しないように変更できますか?
この変更を行った後も、問題は発生しますか?
よろしくお願いします、
パブロ