完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我需要了解如何配置堆栈溢出检测。
我从 TLE9893 用户手册中收集到的
此外,在主入口点,堆栈指针寄存器的值为 0x180023b0,所以我猜这是堆栈指针的初始值。 我写了以下代码来实现 USOP 用于测试目的: 因此,根据我的理解,警戒带的下限为0x18002 320 ,而上限为0x18002 390,总共为112字节。 现在,正如链接器报告的那样,最大堆栈使用量至少为 144 字节: 因此,可以得出结论,堆栈指针必须位于我定义的保护带区域内,但实际上没有检测到堆栈溢出! |
|
相关推荐
1个回答
|
|
根据您提供的信息,以下是如何配置堆栈溢出检测的步骤:
1. 打开 TLE9893 用户手册,找到有关启用用户堆栈溢出保护 (USOP) 的章节。阅读相关内容以了解如何进行配置。 2. 在您的 startup_tle989x.s 文件中找到堆栈分配的大小。根据您提供的信息,堆栈大小为 512 字节。 3. 在主入口点处,查找堆栈指针寄存器的初始值。根据您提供的信息,堆栈指针的初始值为 0x180023b0。 4. 根据用户手册中的说明,通过上限和下限 DSRAM 地址来建立保护频段。根据您的理解,下限为 0x18002320,上限为 0x18002390,共计 112 字节。 5. 根据链接器报告的最大堆栈使用量,确定真正的堆栈使用量。根据您提供的信息,最大堆栈使用量至少为 144 字节。 6. 根据用户手册的说明,根据堆栈使用量将保护频段适当地移动到更高的地址位置。根据您提供的信息,您可能需要将保护频段上限移动到更高的地址。 7. 更新您的代码,将正确的保护频段地址值设置为 USOP 寄存器。 8. 编译和链接您的代码,并将生成的可执行文件烧录到 TLE9893。 9. 运行代码并监控堆栈溢出情况。如果有堆栈溢出发生,您将收到警告或错误消息。 请注意,这只是一个大致的步骤指南,具体的配置步骤可能会根据您的环境和需求而有所不同。强烈建议参考 TLE9893 用户手册中的详细说明来正确配置堆栈溢出检测。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
852 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
592 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
705 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
926 浏览 2 评论
657 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12009 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 01:06 , Processed in 0.555585 second(s), Total 77, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号