やあみんな 、
私はS32k328でFreeRTOSを実行しようとしています。単一のタスクを作成して実行しようとしましたが、最初は正常に実行されましたが、その後コードが1つで停止しました。
やあみんな 、
S32k328でFreeRTOSを実行しようとしています。単一のタスクを作成して実行しようとすると、最初は正常に実行されますが、その後、コードがprvPortStartFirstTask()で停止します。
ベクターテーブル内のSVCハンドラー名を変更したところ、このエラーが発生しました。参考までに画像を投稿しました。
何か変更する必要はありますか?
()、
ベクターテーブル内のSVCハンドラー名を変更したところ、このエラーが発生しました。参考までに画像を投稿しました。
何か変更する必要はありますか?
こんにちは@AntoZ 、
追加情報とスクリーンショットをありがとうございます。
レジスタ ビューから、VTOR (ベクター テーブル オフセット レジスタ) が 0x20000000 に設定されていることを確認できます。これは、ベクター テーブルが RAM に再配置されていることを意味します。これは有効な構成ですが、SVC_Handler のエントリを含む RAM 内のベクター テーブルが正しく初期化されている必要があります。
SVC_Handler の名前を変更したとのことですので、以下の点を確認してください。
RAM 内の 0x20000000 のベクター テーブルには、名前を変更した SVC_Handler の正しいアドレスが含まれている必要があります。
テーブルがフラッシュからコピーされた場合は、更新されたシンボル名が反映されていることを確認してください。
C++ を使用している場合は、名前のマングリングを回避するために、ハンドラーが extern "C" で宣言されていることを確認してください。
VTOR を設定する前に、ベクター テーブルが RAM に正しくコピーされていることを確認します。
これは通常、SystemInit() または main() の初期段階で実行されます。
名前を変更したハンドラーが正しくリンクされており、リンカーによって破棄されていないことを再確認します。
問題が解決しない場合は、問題を再現するプロジェクトの最小バージョンを共有していただけますか?これにより、ベクター テーブルのセットアップとハンドラーのリンクをより詳細に分析できるようになります。
よろしくお願いいたします。
パベル