2177560_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2177560_ja-JP

2177560_ja-JP

FreeRTOS が s32k3xx の prvPortStartFirstTask で停止する

やあみんな 、

私はS32k328でFreeRTOSを実行しようとしています。単一のタスクを作成して実行しようとしましたが、最初は正常に実行されましたが、その後コードが1つで停止しました。

やあみんな 、

S32k328でFreeRTOSを実行しようとしています。単一のタスクを作成して実行しようとすると、最初は正常に実行されますが、その後、コードがprvPortStartFirstTask()で停止します。

AntoZ_0-1759158821831.png

AntoZ_3-1759158949207.png


ベクターテーブル内のSVCハンドラー名を変更したところ、このエラーが発生しました。参考までに画像を投稿しました。

Screenshot 2025-09-29 203137.png

AntoZ_1-1759158884509.png


AntoZ_2-1759158900388.png

何か変更する必要はありますか?

()、

AntoZ_0-1759158821831.png

AntoZ_3-1759158949207.png


ベクターテーブル内のSVCハンドラー名を変更したところ、このエラーが発生しました。参考までに画像を投稿しました。

Screenshot 2025-09-29 203137.png

AntoZ_1-1759158884509.png


AntoZ_2-1759158900388.png

何か変更する必要はありますか?

S32K3


Re: FreeRTOS stucks at prvPortStartFirstTask in s32k3xx

こんにちは@AntoZ

追加情報とスクリーンショットをありがとうございます。

レジスタ ビューから、VTOR (ベクター テーブル オフセット レジスタ) が 0x20000000 に設定されていることを確認できます。これは、ベクター テーブルが RAM に再配置されていることを意味します。これは有効な構成ですが、SVC_Handler のエントリを含む RAM 内のベクター テーブルが正しく初期化されている必要があります。

SVC_Handler の名前を変更したとのことですので、以下の点を確認してください。

  1. RAM 内の 0x20000000 のベクター テーブルには、名前を変更した SVC_Handler の正しいアドレスが含まれている必要があります。
    テーブルがフラッシュからコピーされた場合は、更新されたシンボル名が反映されていることを確認してください。

  2. C++ を使用している場合は、名前のマングリングを回避するために、ハンドラーが extern "C" で宣言されていることを確認してください。

     
    外部 "C" void My_SVC_Handler(void)
     
  3. VTOR を設定する前に、ベクター テーブルが RAM に正しくコピーされていることを確認します。
    これは通常、SystemInit() または main() の初期段階で実行されます。

  4. 名前を変更したハンドラーが正しくリンクされており、リンカーによって破棄されていないことを再確認します。

問題が解決しない場合は、問題を再現するプロジェクトの最小バージョンを共有していただけますか?これにより、ベクター テーブルのセットアップとハンドラーのリンクをより詳細に分析できるようになります。

よろしくお願いいたします。

パベル

Tags (1)
No ratings
Version history
Last update:
‎11-20-2025 11:21 PM
Updated by: