V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jhzzzz
V2EX  ›  嵌入式开发

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

  •  
  •   jhzzzz · 2023-03-29 10:24:42 +08:00 · 1290 次点击
    这是一个创建于 631 天前的主题,其中的信息可能已经有所发展或是发生改变。

    折腾好几天了,真搞不定了,哪位有经验的大佬帮我搞定 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

    1 条回复    2023-03-29 10:52:00 +08:00
    elmagnificogg
        1
    elmagnificogg  
       2023-03-29 10:52:00 +08:00
    重启如果是内存溢出了或者其他异常会有提示,你有吗?

    如果是直接重启,没有任何提示,那是看门狗挂了,你检查一下是不是各种 patch 没打上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3597 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:36 · PVG 18:36 · LAX 02:36 · JFK 05:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.