Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ESP32堆栈金丝雀观察点已触发。为什么?_Esp32_Arduino Esp32 - Fatal编程技术网

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

我有一个程序可以用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 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字节并非不合理,因为堆栈上分配了大量大对象,无论是在您的代码中还是在库中,例如:

循环()

  • csprng RNG
    –128字节
  • ecp2ppublic
    –264字节
  • ECP2密码点U
    –264字节
  • ECP私钥
    –132字节
加密(…)

  • ECP点QID
    –132字节
  • char[]dst
    –256字节
  • 大l
    –40字节
  • FP12θ
    –532字节
配对\u fexp()

  • FP2 X
    –88字节
  • 大x
    –40字节
  • FP a,b
    –2*44=88字节
  • FP12 t0、y0、y1、y2、y3
    –5*532=2660字节

增加堆栈大小。这可能会有帮助。

谢谢。我已将堆栈大小增加到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等。使用回溯分析器(例如)对代码崩溃的确切位置进行解码。