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回分送って、これから永遠と繰り返されてて、これでは説明つかないのだが…