Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

エンベダーの皆さん、こんにちは。

私は再びあなたの親切な助けを求めてここにいます! 今回は、スタックオーバーフロー検出を構成する方法を理解する必要があります。

TLE9893ユーザーマニュアルから、私はそれを収集します

  • User Stack Overflow Protection (USOP) を有効にする必要があります。
  • いわゆる ガードバンド は、上位と下位のDSRAMアドレスによって確立する必要があります。

私のstartup_tle989x。S ファイルは、スタックに 512 バイトのサイズを割り当てます。

FranzRibcek_0-1702562923133.png

また、メインエントリポイントでは、スタックポインタレジスタの値は 0x180023B0 なので、これが最初のスタックポインタ値だと思います。

テスト目的でUSOPを実装するために、次のコードを書きました。

FranzRibcek_1-1702563055225.png

 

したがって、私の理解では、ガードバンドの下限は0x18002 320 で、上限は0x18002 390 で、合計 112 バイトです。

現在、リンカーから報告されているように、最大スタック使用量は少なくとも144バイトです。

FranzRibcek_2-1702563308766.png

 

したがって、スタックポインタは定義したガードバンド領域内に収まる必要がありますが、実際にはスタックオーバーフローは検出されません。

 

何が間違っていますか?

敬具

FRの

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/MOTIX-MCU/Stack-Overflow-Detection-Guard-Band-Region-Definition/td-p/660090

0 件の賞賛
1 解決策
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@FranzRibcek

ご理解いただきありがとうございます!!

スタックオーバーフローを検出し、TLE9893 EvalkitのLED P0.2で表示するサンプル例を開発しました。

概要:

スタック サイズは、tle9883_93.sct ファイルから0x200として選択されます。

スタック開始アドレスは 7C00 0x1800です。

STOF_ADDR_OFF_H = 0x16C8 および STOF_ADDR_OFF_L = 0x16BF レジスタでアライメントした後、ガードバンドが 0x18007B20 と 0x18007AFC の間に設定されます。

 

スタックオーバーフローは、以下に示すようにConfigWizardで有効になっています。

Raj_C_0-1703139011362.png

 

さらにサポートが必要な場合はお知らせください。

注: このサンプルプロジェクトは、スタックオーバーフロー検出の正確なユースケースではありません。 これは、スタックオーバーフローをトリガーして分析するのに役立ちます。

ありがとうございました

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

ラージ・チャウダリ

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/MOTIX-MCU/Stack-Overflow-Detection-Guard-Band-Region-Definition/m-p/664460

元の投稿で解決策を見る

0 件の賞賛
4 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@FranzRibcek

 

NMICON(NMI Control Register)で、以下のようにStack Overflow NMIが有効になっているか確認してください。

Raj_C_0-1702628544590.png

 

そして、STOF_ENを有効にします。

 

Raj_C_1-1702629991372.png

 

また、カスタムスタートアップファイルを開発したか、デフォルトのファイルを使用しているかもお知らせください。

 

ありがとうございました

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

ラージ・チャウダリ

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/MOTIX-MCU/Stack-Overflow-Detection-Guard-Band-Region-Definition/m-p/660727

0 件の賞賛
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @Raj_C 、そしてあなたの親切な返事をありがとう。

私は実際にビットNMICONを有効にしていませんでした。NMISTOFENです。 これで有効になりました。 それにもかかわらず、スタックオーバーフロー保護はトリガーされず、テスト用にプログラムしたISRに入ることはありません。

検査用にスタートアップファイルをアップロードしますが、これがデフォルトのファイルである必要があります。 拡張子を「.c」に変更する必要がありました そうでなければ、私はそれをアップロードすることができないでしょう。

敬具

FRの

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/MOTIX-MCU/Stack-Overflow-Detection-Guard-Band-Region-Definition/m-p/660763

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

上。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/MOTIX-MCU/Stack-Overflow-Detection-Guard-Band-Region-Definition/m-p/662782

0 件の賞賛
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@FranzRibcek

ご理解いただきありがとうございます!!

スタックオーバーフローを検出し、TLE9893 EvalkitのLED P0.2で表示するサンプル例を開発しました。

概要:

スタック サイズは、tle9883_93.sct ファイルから0x200として選択されます。

スタック開始アドレスは 7C00 0x1800です。

STOF_ADDR_OFF_H = 0x16C8 および STOF_ADDR_OFF_L = 0x16BF レジスタでアライメントした後、ガードバンドが 0x18007B20 と 0x18007AFC の間に設定されます。

 

スタックオーバーフローは、以下に示すようにConfigWizardで有効になっています。

Raj_C_0-1703139011362.png

 

さらにサポートが必要な場合はお知らせください。

注: このサンプルプロジェクトは、スタックオーバーフロー検出の正確なユースケースではありません。 これは、スタックオーバーフローをトリガーして分析するのに役立ちます。

ありがとうございました

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

ラージ・チャウダリ

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/MOTIX-MCU/Stack-Overflow-Detection-Guard-Band-Region-Definition/m-p/664460

0 件の賞賛