这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » TLE9893如何配置堆栈溢出检测?

共2条 1/1 1 跳转至

TLE9893如何配置堆栈溢出检测?

工程师
2024-07-02 10:40:22     打赏

我需要了解如何配置堆栈溢出检测。
我从 TLE9893 用户手册中收集到的


  • 需要启用用户堆栈溢出保护 (USOP),

  • 需要通过上限和下限 DSRAM 地址来建立所谓的保护频段。

我的 startup_tle989x.s 文件为堆栈分配的大小为 512 字节:

此外,在主入口点,堆栈指针寄存器的值为 0x180023b0,所以我猜这是堆栈指针的初始值。
我写了以下代码来实现 USOP 用于测试目的:


因此,根据我的理解,警戒带的下限为0x18002 320 ,而上限为0x18002 390,总共为112字节。
现在,正如链接器报告的那样,最大堆栈使用量至少为 144 字节:


因此,可以得出结论,堆栈指针必须位于我定义的保护带区域内,但实际上没有检测到堆栈溢出!




关键词: TLE9893     堆栈    

助工
2024-07-02 10:40:42     打赏
2楼

1. 打开 TLE9893 用户手册,找到有关启用用户堆栈溢出保护 (USOP) 的章节。阅读相关内容以了解如何进行配置。

2. 在您的 startup_tle989x.s 文件中找到堆栈分配的大小。根据您提供的信息,堆栈大小为 512 字节。

3. 在主入口点处,查找堆栈指针寄存器的初始值。根据您提供的信息,堆栈指针的初始值为 0x180023b0。

4. 根据用户手册中的说明,通过上限和下限 DSRAM 地址来建立保护频段。根据您的理解,下限为 0x18002320,上限为 0x18002390,共计 112 字节。

5. 根据链接器报告的最大堆栈使用量,确定真正的堆栈使用量。根据您提供的信息,最大堆栈使用量至少为 144 字节。

6. 根据用户手册的说明,根据堆栈使用量将保护频段适当地移动到更高的地址位置。根据您提供的信息,您可能需要将保护频段上限移动到更高的地址。

7. 更新您的代码,将正确的保护频段地址值设置为 USOP 寄存器。

8. 编译和链接您的代码,并将生成的可执行文件烧录到 TLE9893。

9. 运行代码并监控堆栈溢出情况。如果有堆栈溢出发生,您将收到警告或错误消息。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]