Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

你好嵌入者,

我再次在這裡尋求您的親切幫助! 這次,我需要了解如何配置堆疊溢位檢測。

從 TLE9893 用戶手冊中,我得知

  • 需要啟用使用者堆疊溢位防護 (USOP),
  • 所謂的保護頻段需要通過上下的 DSRAM 地址來建立。

我的啟動 _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

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

堆疊起始位址為 0x1800 7C00。

STOF_ADDR_OFF_H = 0x16C8 和 STOF_ADDR_OFF_L = 0x16BF 在寄存器中對齊後,這將在 0x18007B20 和 0x18007AFC 之間設置防護帶。

 

在 Config Wizard 中啟用堆疊溢位,如下所示。

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

 

請確認您是否已啟用堆疊溢位 NMI,如下所示在 NMICON (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

堆疊起始位址為 0x1800 7C00。

STOF_ADDR_OFF_H = 0x16C8 和 STOF_ADDR_OFF_L = 0x16BF 在寄存器中對齊後,這將在 0x18007B20 和 0x18007AFC 之間設置防護帶。

 

在 Config Wizard 中啟用堆疊溢位,如下所示。

Raj_C_0-1703139011362.png

 

如果您需要進一步的幫助,請告訴我們。

注意:此範例專案不是堆疊溢位偵測的確切使用案例。 它有助於觸發和分析堆疊溢位。

謝謝

最好的問候

拉吉·乔达里

 

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

0