解决请喝奶茶,实在搞不定了 esp32 heap_caps_malloc 分配内存崩溃

2023-03-29 10:24:42 +08:00
 jhzzzz

折腾好几天了,真搞不定了,哪位有经验的大佬帮我搞定 100 元红包奉上。

我买的是一个 esp32s3-n16r8 的开发板,板子上集成了一个 i2s 麦克风,我外接了一个 i2s 小功放并接了一个喇叭,运行 esp32 adf 官方语音唤醒识别示例 https://github.com/espressif/esp-adf/tree/master/examples/speech_recognition/wwe ,就是 master 分支代码,idf 版本是 4.4.1 。

但运行后,总是崩溃在 i2s_stream_init 函数,main 函数中 setup_player 和 start_recorder 里面都会调用这个函数,setup_player 先执行,调用没问题,start_recorder 中调用 i2s_stream_init 时单片机 reset 重启。

跟踪 i2s_stream_init 发现他会调用 heap_caps_malloc ,并且就在这里出问题,接下来的代码没有执行,s3 芯片是有外部 SPIRAN ,我都配置好了,并且 mem test 也显示 ok ,esp_get_free_heap_size 显示也有 8M 多可以用。

如果我把 setup_player 注释掉,只运行 start_recorder ,i2s_stream_init 可以成功,但也不太正常,几秒后也会崩溃,实在搞不清为什么了 :D

wx jhzzzz, qq 5488232

1073 次点击
所在节点   嵌入式开发
1 条回复
elmagnificogg
2023-03-29 10:52:00 +08:00
重启如果是内存溢出了或者其他异常会有提示,你有吗?

如果是直接重启,没有任何提示,那是看门狗挂了,你检查一下是不是各种 patch 没打上

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/928065

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX