ESP32堆栈金丝雀观察点已触发。为什么?
我有一个程序可以用Boneh Franklin加密对文本进行加密和解密。这在PC上非常有效,但由于某些原因,导致ESP32不断重新启动,并显示以下错误消息:ESP32堆栈金丝雀观察点已触发。为什么?,esp32,arduino-esp32,Esp32,Arduino Esp32,我有一个程序可以用Boneh Franklin加密对文本进行加密和解密。这在PC上非常有效,但由于某些原因,导致ESP32不断重新启动,并显示以下错误消息: setup2 setup2.2 setup2.3 Guru Meditation Error: Core 1 panic'ed (Unhandled debug exception) Debug exception reason: Stack canary watchpoint triggered (loopTask) Core 1 r
setup2
setup2.2
setup2.3
Guru Meditation Error: Core 1 panic'ed (Unhandled debug exception)
Debug exception reason: Stack canary watchpoint triggered (loopTask)
Core 1 register dump:
PC : 0x40083774 PS : 0x00060b36 A0 : 0x3ffb0120 A1 : 0x3ffb0060
A2 : 0x68efa751 A3 : 0x3ffb0938 A4 : 0x3ffb0720 A5 : 0xfb879c5c
A6 : 0x61b36b71 A7 : 0x0006970f A8 : 0x01709af4 A9 : 0x01709af4
A10 : 0xfaa5dfed A11 : 0x01a3ff3b A12 : 0x76651dec A13 : 0x00000001
A14 : 0x00000000 A15 : 0x04adbe74 SAR : 0x0000001e EXCCAUSE: 0x00000001
EXCVADDR: 0x00000000 LBEG : 0x400f1cc5 LEND : 0x400f1cc9 LCOUNT : 0x00000000
ELF file SHA256: 0000000000000000
我使用的是Arduino ESP32环境,在main.cpp中,CONFIG_Arduino_LOOP_STACK_SIZE设置为8192,8k堆栈应该足以运行它。它在个人电脑上运行得很好,这对我来说是个谜,为什么不在ESP32上呢。有人能帮忙吗?我完全没有主意了。
对于Boneh Franklin实现,我使用了以下库:
我自己的代码大约有200行,我已将其上传到Google Drive:查看代码,堆栈需要超过8192字节并非不合理,因为堆栈上分配了大量大对象,无论是在您的代码中还是在库中,例如: 循环()
–128字节csprng RNG
–264字节ecp2ppublic
–264字节ECP2密码点U
–132字节ECP私钥
–132字节ECP点QID
–256字节char[]dst
–40字节大l
–532字节FP12θ
–88字节FP2 X
–40字节大x
–2*44=88字节FP a,b
–5*532=2660字节FP12 t0、y0、y1、y2、y3
增加堆栈大小。这可能会有帮助。谢谢。我已将堆栈大小增加到64k。ESP32仍然保持重新启动,但错误消息现在不同了:setup2 setup2.2 setup2.3 setup2.4 kkkk加密大师冥想错误:Core 1死机(禁止存储)。异常未处理。核心1寄存器转储:PC:0x400d964b PS:0x00060930 A0:0x800d1048 A1:0x3ffcfe40 A2:0x3ffd04a4 A3:0x0000000b A4:0x3ffb855c A5:0x3ffb858c等。使用回溯分析器(例如)对代码崩溃的确切位置进行解码。