@sunnycase
model:tiny yolov3,output(NCHW):1x51x30x40,1x51x15x20
board:KD233/SIPEDD maix dock
develop sdk: standalone sdk
demo code: tiny yolo code by C
Attached are model files and main functions:
0616-coredump.zip
I want to use tiny yolov3 on the board. Whether using 1x51x30x40 & 1x51x15x20 (layers) to parse the output , or only using 1x51x30x40 to parse the output, the following error will be reported:
When I commented out the ' lcd_draw_picture(0, 0, 320, 240, (uint32_t *)display_image.addr)' in main.c(main function), the main function program will be executed once 'while'. When the second pass is executed,the following error was reported:
If i only use 1x51x15x20 to parse the output in the function ,it will not report the error.
If the feature map output is 1x51x15x20&1x51x7x10 with another new model, it will not report the error. I would like to ask what caused the core problem?
Thanks
@sunnycase model:tiny yolov3,output(NCHW):1x51x30x40,1x51x15x20 board:KD233/SIPEDD maix dock develop sdk: standalone sdk demo code: tiny yolo code by C Attached are model files and main functions: 0616-coredump.zip
I want to use tiny yolov3 on the board. Whether using 1x51x30x40 & 1x51x15x20 (layers) to parse the output , or only using 1x51x30x40 to parse the output, the following error will be reported:
Error——core dump: fault store
[INFO] Rebooting... --- forcing DTR inactive --- forcing RTS inactive --- Miniterm on /dev/ttyUSB0 115200,8,N,1 --- --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- LCD init init: 5734400 DVP init manuf_id:0x7fa2,device_id:0x2642 System start **start heap** : 4834304 core dump: fault store Cause 0x0000000000000007, EPC 0x0000000080002c2c reg[00](zero ) = 0x0000000100000df3, reg[01](ra ) = 0x000000008000b884 reg[02](sp ) = 0x000000008007f430, reg[03](gp ) = 0x0000000080071218 reg[04](tp ) = 0x00000000800777c0, reg[05](t0 ) = 0x0000000000000000 reg[06](t1 ) = 0x000000008000b83e, reg[07](t2 ) = 0x0000000000000001 reg[08](s0/fp) = 0x0000000080076d88, reg[09](s1 ) = 0x0000000080076d88 reg[10](a0 ) = 0x0000000100000589, reg[11](a1 ) = 0x0000000100001002 reg[12](a2 ) = 0x00000000800fb5d0, reg[13](a3 ) = 0x0000000000000000 reg[14](a4 ) = 0x00000001800fbb59, reg[15](a5 ) = 0x0000000100001001 reg[16](a6 ) = 0x0000000000000001, reg[17](a7 ) = 0x0000000000000001 reg[18](s2 ) = 0x0000000000000000, reg[19](s3 ) = 0x0000000000000001 reg[20](s4 ) = 0x0000000000000008, reg[21](s5 ) = 0x0000000000000001 reg[22](s6 ) = 0x0000000000000000, reg[23](s7 ) = 0x000000008007f6af reg[24](s8 ) = 0x0000000000000003, reg[25](s9 ) = 0x0000000000000000 reg[26](s10 ) = 0x0000000000000000, reg[27](s11 ) = 0x0000000000000000 reg[28](t3 ) = 0x00000000ffffffff, reg[29](t4 ) = 0x0000000000000001 reg[30](t5 ) = 0x0000000000000010, reg[31](t6 ) = 0x0000000000006270 freg[00](ft0 ) = 0x000000013f7a0a4f(), freg[-1610612736]() = 0x0000000080026d78() freg[02](ft2 ) = 0x000000013dd3e21a(), freg[536870912]() = 0x0000000080026d88() freg[04](ft4 ) = 0x0000000100000000(), freg[00]() = 0x0000000080026d98() freg[06](ft6 ) = 0x0000000100000000(), freg[00]() = 0x0000000080026da8() freg[08](fs0 ) = 0x0000000149742400(), freg[1073741824]() = 0x0000000080026dd0() freg[10](fa0 ) = 0x000000013f800000(), freg[00]() = 0x0000000080026e00() freg[12](fa2 ) = 0x000000013f800000(), freg[00]() = 0x0000000080026e28() freg[14](fa4 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026e38() freg[16](fa6 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026e48() freg[18](fs2 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026e70() freg[20](fs4 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026e80() freg[22](fs6 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026e90() freg[24](fs8 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026ea0() freg[26](fs10) = 0x0000000000000000(), freg[00]() = 0x0000000080026eb0() freg[28](ft8 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026ed8() freg[30](ft10) = 0x0000000000000000(), freg[00]() = 0x0000000080026ee8() W (619271941) SYSCALL: sys_exit called by core 0 with 0x539When I commented out the ' lcd_draw_picture(0, 0, 320, 240, (uint32_t *)display_image.addr)' in main.c(main function), the main function program will be executed once 'while'. When the second pass is executed,the following error was reported:
Error——core dump: illegal instruction
LCD init init: 5734400 DVP init manuf_id:0x7fa2,device_id:0x2642 System start **start heap : 4834304** **fps: 4** end heap1 : 4834304 **start heap : 4834304** core dump: illegal instruction Cause 0x0000000000000002, EPC 0x00000000800fb556 reg[00](zero ) = 0x0000000100000000, reg[01](ra ) = 0x000000008000ddbe reg[02](sp ) = 0x000000008007f270, reg[03](gp ) = 0x0000000080071198 reg[04](tp ) = 0x0000000080077740, reg[05](t0 ) = 0x0000000000000000 reg[06](t1 ) = 0x000000008000dd46, reg[07](t2 ) = 0x0000000000000001 reg[08](s0/fp) = 0x000000008007f6c0, reg[09](s1 ) = 0x0000000000000018 reg[10](a0 ) = 0x00000001000005b5, reg[11](a1 ) = 0x00000000800006b8 reg[12](a2 ) = 0x0000000000000018, reg[13](a3 ) = 0x0000000000000001 reg[14](a4 ) = 0x00000000800fb550, reg[15](a5 ) = 0x0000000080076fd8 reg[16](a6 ) = 0x00000000000000ff, reg[17](a7 ) = 0x0000000000000040 reg[18](s2 ) = 0x0000000000000000, reg[19](s3 ) = 0x0000000000000800 reg[20](s4 ) = 0x0000000000143374, reg[21](s5 ) = 0x0000000000000000 reg[22](s6 ) = 0x0000000000000000, reg[23](s7 ) = 0x0000000000000000 reg[24](s8 ) = 0x0000000000000000, reg[25](s9 ) = 0x0000000000000000 reg[26](s10 ) = 0x0000000000000000, reg[27](s11 ) = 0x0000000000000000 reg[28](t3 ) = 0x0000000000000014, reg[29](t4 ) = 0x0000000000000140 reg[30](t5 ) = 0x0000000000000010, reg[31](t6 ) = 0x0000000000006270 freg[00](ft0 ) = 0x000000003f7a0a4f(), freg[536870912]() = 0x0000000080026cb8() freg[02](ft2 ) = 0x000000003dd3e21a(), freg[00]() = 0x0000000080026cc8() freg[04](ft4 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026cd8() freg[06](ft6 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026ce8() freg[08](fs0 ) = 0x0000000149742400(), freg[1073741824]() = 0x0000000080026d10() freg[10](fa0 ) = 0x000000003f800000(), freg[00]() = 0x0000000080026d40() freg[12](fa2 ) = 0x000000003f800000(), freg[00]() = 0x0000000080026d68() freg[14](fa4 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026d78() freg[16](fa6 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026d88() freg[18](fs2 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026db0() freg[20](fs4 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026dc0() freg[22](fs6 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026dd0() freg[24](fs8 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026de0() freg[26](fs10) = 0x0000000000000000(), freg[00]() = 0x0000000080026df0() freg[28](ft8 ) = 0x0000000000000000(), freg[00]() = 0x0000000080026e18() freg[30](ft10) = 0x0000000000000000(), freg[00]() = 0x0000000080026e28() W (624157227) SYSCALL: sys_exit called by core 0 with 0x539main function
```C while (1) { uint32_t heap = iomem_unused(); printf("start heap : %d\n",heap); g_dvp_finish_flag = 0; dvp_clear_interrupt(DVP_STS_FRAME_START | DVP_STS_FRAME_FINISH); dvp_config_interrupt(DVP_CFG_START_INT_ENABLE | DVP_CFG_FINISH_INT_ENABLE, 1); while (g_dvp_finish_flag == 0); // image_resize(&origin_image, &kpu_image); g_ai_done_flag = 0; /* start to calculate */ kpu_run_kmodel(&detect_task, kpu_image.addr, DMAC_CHANNEL5, ai_done, NULL); while(!g_ai_done_flag); float *output0, *output1; size_t output_size0, output_size1; kpu_get_output(&detect_task, 0, (uint8_t **)&output0, &output_size0); kpu_get_output(&detect_task, 1,&output1, &output_size1); detect_rl_0.input = output0; yolo_layer_run(&detect_rl_0, NULL); detect_rl_1.input = output1; yolo_layer_run(&detect_rl_1, NULL); /* draw boxs */ yolo_layer_draw_boxes(&detect_rl_0, drawboxes); yolo_layer_draw_boxes(&detect_rl_1, drawboxes); /* display pic*/ lcd_draw_picture(0, 0, 320, 240, (uint32_t *)display_image.addr); int fps = 1e6 / (sysctl_get_time_us()-last_time); last_time = sysctl_get_time_us(); printf("fps: %d \n",fps); uint32_t heap1= iomem_unused(); printf("end heap1 : %d\n",heap1); } ```If i only use 1x51x15x20 to parse the output in the function ,it will not report the error.
If the feature map output is 1x51x15x20&1x51x7x10 with another new model, it will not report the error. I would like to ask what caused the core problem? Thanks