サンプルアプリケーションプロジェクトを作成し、それをブートローダーとして使用しています。実際のアプリケーションプロジェクトは同一で、唯一の違いはフラッシュスタートのアドレスだけです。
ブートローダーは無事にアプリケーションにジャンプし、アプリケーションは実行を開始します。しかし、アプリケーション内ではxTaskCreate()関数は実行されません。
ブートローダーからFreeRTOSベースのアプリケーションにジャンプする際に、追加の設定が必要ですか?例えば、FreeRTOSタスクを作成・実行する前に、起動、割り込み、ベクターテーブル、スタックポインタ、スケジューラ関連の設定などを行う必要がありますか?
私はそのことを紹介しました コミュニティからの統一ブートローダーデモ チケット。解決策は得られませんでした。問題はFreeRTOSを含めたときだけで、RTOSなしでアプリケーションは問題なく動作することです。
S32K344では動作しますが、NXPS32K358では動作しません。
追加情報が必要な場合はお知らせください。
私たちのプロジェクトで使用されているブートローダーからアプリケーションへのジャンプコード:
こんにちは、 @Indhumathi さん。
根本原因を絞り込むために、以下の割り込みハンドラが実際に実行されているか確認していただけますか?
SVCハンドラ(vPortSVCHandler)—最初のFreeRTOSタスクを開始する役割を担う
PendSVハンドラー(vPortPendSVHandler)—タスク間のコンテキスト切り替えを担当
SysTick ハンドラ (vPortSysTickHandler / xPortSysTickHandler) — FreeRTOS のティック処理を担当
最も簡単な確認方法は、アプリケーション内の各ハンドラのエントリにブレークポイントやGPIOトグルを配置することです。
ありがとうございました。
よろしくお願いいたします。
ダニエル