ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

SW_CPU_RESETがかかる

M5Stamp picoでデータを取っている装置のソフトを作り直して、どうも挙動が変なので調べてみる。

通常DEEPSLEEP_RESETで立ち上がってくるのが、

rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
M5Atom initializing...OK

SW_CPU_RESETで立ち上がっている。
FAST MEMORYがクリアーされて最初からの起動になっている様だ。

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
M5Atom initializing...OK

その前を見ると Stack canary watchpoint triggered とあるのでStackのオーバーフローっぽい。
12回分データを溜めてまとめて送っていて、テストでは5回分くらいでやっていたののだが問題が出ていなくて、12回だと不足している様だ。

Guru Meditation Error: Core  1 panic'ed (Unhandled debug exception)
Debug exception reason: Stack canary watchpoint triggered (uploader_task) 
Core 1 register dump:
PC      : 0x4008992c  PS      : 0x00060236  A0      : 0x400847c4  A1      : 0x3ffb5070  
A2      : 0x00000000  A3      : 0x00060223  A4      : 0x00060220  A5      : 0x0000001c  
A6      : 0x00000009  A7      : 0x7ffd323a  A8      : 0x80084242  A9      : 0x3ffb5200  
A10     : 0x0000001c  A11     : 0x400841fc  A12     : 0x3ffae704  A13     : 0x00000000  
A14     : 0x3ffb573c  A15     : 0x7ff9ad67  SAR     : 0x0000001f  EXCCAUSE: 0x00000001  
EXCVADDR: 0x00000000  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xffffffff  

ELF file SHA256: 0000000000000000

Backtrace: 0x4008992c:0x3ffb5070 0x400847c1:0x3ffb5140 0x4008a283:0x3ffb5160 0x4008a8ba:0x3ffb5180 0x40082129:0x3ffb51a0 0x4008215a:0x3ffb51c0 0x40084201:0x3ffb51e0 0x4000beaf:0x3ffb5200 0x4008423f:0x3ffb5220 0x400e30a5:0x3ffb5240 0x400e36d1:0x3ffb5260 0x400e24dd:0x3ffb5290 0x400dd80d:0x3ffb5320 0x400e22aa:0x3ffb5630 0x400e22e2:0x3ffb56c0 0x400d8ae6:0x3ffb5700 0x400d2248:0x3ffb57a0 0x400d2532:0x3ffb57c0 0x40087271:0x3ffb5800

Rebooting...
ets Jun  8 2016 00:22:57

スタックサイズを多めにして様子見しよう。

挙動が変なのは12回分溜めて送った後に次の1回分測定するタイミングでまた12回分送って、これから永遠と繰り返されてて、これでは説明つかないのだが…