我需要了解如何配置堆栈溢出检测。
我从 TLE9893 用户手册中收集到的
需要启用用户堆栈溢出保护 (USOP),
需要通过上限和下限 DSRAM 地址来建立所谓的保护频段。
我的 startup_tle989x.s 文件为堆栈分配的大小为 512 字节:
此外,在主入口点,堆栈指针寄存器的值为 0x180023b0,所以我猜这是堆栈指针的初始值。
我写了以下代码来实现 USOP 用于测试目的:
因此,根据我的理解,警戒带的下限为0x18002 320 ,而上限为0x18002 390,总共为112字节。
现在,正如链接器报告的那样,最大堆栈使用量至少为 144 字节:
因此,可以得出结论,堆栈指针必须位于我定义的保护带区域内,但实际上没有检测到堆栈溢出!