You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32上RadioHead库异常:RHMesh.recvfromAck调用RHDatagram::available()时崩溃

问题:调用manager.recvfromAck()时程序在RHDatagram::available()处崩溃

问题详情

调用manager.recvfromAck(recieveBuffer, &len, &from)时程序崩溃,崩溃点位于RHDatagram::available(),报错EXCVADDR: 0x0000000c。

串口输出

initBoard
[    17][I][esp32-hal-i2c.c:75] i2cInit(): Initialising I2C Master: sda=21 scl=22 freq=100000
Started OLED
[    19][W][Wire.cpp:301] begin(): Bus already started in Master Mode.
[  3423][W][sd_diskio.cpp:174] sdCommand(): no token received
[  3681][W][sd_diskio.cpp:174] sdCommand(): no token received
[  3781][W][sd_diskio.cpp:174] sdCommand(): no token received
[  3880][E][sd_diskio.cpp:199] sdCommand(): Card Failed! cmd: 0x00
[  3880][W][sd_diskio.cpp:516] ff_sd_initialize(): GO_IDLE_STATE failed
[  3881][E][sd_diskio.cpp:802] sdcard_mount(): f_mount failed: (3) The physical drive cannot work
[  3890][W][sd_diskio.cpp:180] sdCommand(): crc error
[  3995][W][sd_diskio.cpp:174] sdCommand(): no token received
[  4095][W][sd_diskio.cpp:174] sdCommand(): no token received
[  4194][E][sd_diskio.cpp:199] sdCommand(): Card Failed! cmd: 0x00
setupSDCard FAIL
Manager init done
Max length: 245
Lora chip ready
Wifi App Loop: Executing on core 0
Wifi App Running
Main Loop: Executing on core 1
Setup Complete
LoRa App Loop: Executing on core 1
LoRa App Running
0 Dest: 0 Next Hop: 0 State: 0
1 Dest: 0 Next Hop: 0 State: 0
2 Dest: 0 Next Hop: 0 State: 0
3 Dest: 0 Next Hop: 0 State: 0
4 Dest: 0 Next Hop: 0 State: 0
5 Dest: 0 Next Hop: 0 State: 0
6 Dest: 0 Next Hop: 0 State: 0
7 Dest: 0 Next Hop: 0 State: 0
8 Dest: 0 Next Hop: 0 State: 0
9 Dest: 0 Next Hop: 0 State: 0
RHReliableDatagram::recvfromAck - 1
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x40101797  PS      : 0x00060e30  A0      : 0x800d29f0  A1      : 0x3ffb2050   
A2      : 0x3ffc8ad0  A3      : 0x00000023  A4      : 0x400d75f8  A5      : 0x3ffb20da   
A6      : 0x007bf418  A7      : 0x003fffff  A8      : 0x00000000  A9      : 0x3ffb2030   
A10     : 0x53414344  A11     : 0x3f400518  A12     : 0x400d75f8  A13     : 0x0000ff00   
A14     : 0x00ff0000  A15     : 0xff000000  SAR     : 0x0000001f  EXCCAUSE: 0x0000001c   
EXCVADDR: 0x0000000c  LBEG    : 0x400878fd  LEND    : 0x4008790d  LCOUNT  : 0xffffffff

Backtrace: 0x40101794:0x3ffb2050 0x400d29ed:0x3ffb2070 0x400d2d8d:0x3ffb20c0 0x400d265a:0x3ffb2110 0x400d216f:0x3ffb2160 0x400db311:0x3ffb2290

ELF file SHA256: 2a054f09f2933b33

异常解码器输出

PC: 0x40101797: RHDatagram::available() at /Users/louisalexander/Documents/Arduino/libraries/RadioHead/RHDatagram.cpp line 54
EXCVADDR: 0x0000000c
Decoding stack results 0x40101794: RHDatagram::available() at /Users/louisalexander/Documents/Arduino/libraries/RadioHead/RHDatagram.cpp line 54
0x400d29ed: RHReliableDatagram::recvfromAck(unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*) at /Users/louisalexander/Documents/Arduino/libraries/RadioHead/RHReliableDatagram.cpp line 136
0x400d2d8d: RHRouter::recvfromAck(unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*) at /Users/louisalexander/Documents/Arduino/libraries/RadioHead/RHRouter.cpp line 219
0x400d265a: RHMesh::recvfromAck(unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*) at /Users/louisalexander/Documents/Arduino/libraries/RadioHead/RHMesh.cpp line 163
0x400d216f: loop() at /Users/louisalexander/Documents/GitHub/repos/Lora-with-RadioHead/main/main.ino line 215
0x400db311: loopTask(void*) at /Users/louisalexander/Library/Arduino15/packages/esp32/hardware/esp32/2.0.7/cores/esp32/main.cpp line 50

排查方向

  • LoadProhibited错误通常表示程序尝试访问非法内存地址,EXCVADDR: 0x0000000c说明代码在读取0xc地址的内容,大概率是空指针解引用导致。
  • 查看RHDatagram.cpp第54行代码,检查是否访问了未初始化的指针成员(比如_driver指针)。
  • 确认manager对象的初始化流程:确保LoRa底层驱动已正确初始化并绑定到manager实例,避免驱动未就绪时调用recvfromAck。
  • 多线程(核心0运行Wifi任务、核心1运行LoRa任务)可能引发资源竞争,检查是否对RadioHead API调用做了线程同步,避免同时操作LoRa模块。
  • SD卡初始化失败日志虽不直接导致本次崩溃,但需确认是否存在资源冲突影响LoRa模块正常工作。

内容的提问来源于stack exchange,提问作者Louis Alexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:07:07