完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
出现断言的地方 定义 初始化信号量放在串口初始化之前,因为用在了串口中断里面 放中断函数里读取,读取到数据就释放信号量 检测信号量,有值则从环形缓冲区里面获取数据, 这个信号量的所有操作就这些 出现断言 我应该怎么去排查问题,内存写穿了吗, sem!=RT_NULL 只是类型变了? 系统里就这一个地方使用到了信号量。没有其他地方了 |
|
相关推荐
6个回答
|
|
像是内存写穿了,其他有地方内存泄漏,直接改为静态的信号量,再测试,如果没有问题了,就排查内存写穿(如数组越界操作)
|
|
|
|
第一次听到内存写穿这个说法,不过应该确实是这个错误,申请信号量时堆空间不够导致的,通过静态方式申请信号量来检测的方法也不错
|
|
|
|
不是申请不到内存,是申请好的内存,被其他的操作破坏了,或者称之为【内存被踩】
|
|
|
|
有一个地方数组越界了
|
|
|
|
从你给的代码来看,我觉得是很正常很简单的信号量使用方式。我这里怀疑一个点,只是稍微提一下,进入和退出中断时又加上“rt_interrupt_enter();”和“rt_interrupt_leave();”吗?因为我猜测可能是别的原因影响到信号量的使用。
|
|
|
|
这个信号量对象内存被破坏了。被破坏了。 这个得去其它地方找原因。可以在每次调用 rt_sem_release 前打印这个信号量的详细信息看看(但不排查添加这些代码后被破坏的内存变成其它地址范围) |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1039 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3425 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1465 浏览 0 评论
2146 浏览 0 评论
1640 浏览 0 评论
75360 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 20:18 , Processed in 0.705860 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号