嵌入式技术william hill官网
直播中

fanB

9年用户 1492经验值
擅长:20615
私信 关注
[问答]

程序卡在rt_assert_handler中,main线程都没有进入是为什么?

程序卡住在rt_assert_handler中,main线程都没有进入,在启动文件debug发现是板级初始化函数就卡住了,根据网上debug查找定位,断点打在if (rt_assert_hook == RT_NULL),
单步调试后show caller code找到调用前的代码指定到 是rt_hw_board_init()中串口接收rt_malloc()中rt_smem_alloc()中RT_ASSERT(m != RT_NULL);比对了之前的版本发现没有什么出入,请问有没有大神知道为什么

回帖(2)

熊本熊

2023-9-3 11:01:33
这个是不是你串口初始化在heap初始化之前,导致malloc不出内存所致
举报

tulin

2023-9-28 09:28:37
这种情况可能有多种原因,请尝试以下几种方法进行排查:

1. 确认板级初始化函数是否正确调用,是否被正确实现。
2. 确认程序中使用的内存分配方式是否正确,是否与系统配置一致。
3. 确认程序中使用的assert宏是否正确,是否将错误信息输出到正确的终端或日志中。
4. 对程序进行单步调试,检查是否有死循环或死锁等情况。
5. 确认程序是否正确使用了操作系统提供的同步机制,例如信号量、互斥锁等。

如果以上方法均无法解决问题,建议联系相关技术支持或william hill官网 进行咨询。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分