espressif / esp-dl

Espressif deep-learning library for AIoT applications
MIT License
516 stars 115 forks source link

移植esp-dl到micropython出错 (AIV-514) #90

Open Spring641 opened 2 years ago

Spring641 commented 2 years ago

启动后提示: Fail to malloc 423660 bytes from DRAM(200000 bytyes) and PSRAM(0 bytes), PSRAM is on. Guru Meditation Error: Core 0 panic'ed (StoreProhibited). Exception was unhandled. 通过查找发现是在: std::list &detect_results = detector.infer((uint16_t *)frame->buf, {(int)frame->height, (int)frame->width, 3}); 这条语句出错

ESP-YHY commented 2 years ago

Hi @Spring641, which SoC are you working on?

Spring641 commented 2 years ago

嗨@Spring641,您正在开发哪个 SoC?

自己做的开发板,目前已经解决,不过运行了人脸识别 的时候提示: E (82472) MFN: Partition Not found E (82472) MFN: Please Set the Partition

ESP-YHY commented 2 years ago

嗨@Spring641,您正在开发哪个 SoC?

自己做的开发板,目前已经解决,不过运行了人脸识别 的时候提示: E (82472) MFN: Partition Not found E (82472) MFN: Please Set the Partition

Hi @Spring641, 运行的是 example, 还是自己的工程?

Spring641 commented 2 years ago

嗨@Spring641,您正在开发哪个 SoC?

自己做的开发板,目前已经解决,不过运行了人脸识别 的时候提示: E (82472) MFN: Partition Not found E (82472) MFN: Please Set the Partition

Hi @Spring641, 运行的是 example, 还是自己的工程?

参考 example移植出来的,是不是还要什么模型烧录进去,目前其他的example都跑通了,就差这个人脸识别

ESP-YHY commented 2 years ago

嗨@Spring641,您正在开发哪个 SoC?

自己做的开发板,目前已经解决,不过运行了人脸识别 的时候提示: E (82472) MFN: Partition Not found E (82472) MFN: Please Set the Partition

Hi @Spring641, 运行的是 example, 还是自己的工程?

参考 example移植出来的,是不是还要什么模型烧录进去,目前其他的example都跑通了,就差这个人脸识别

你看下 partitions.csv 有没有正确配置。因为识别模型会把 ID 存到 flash 中,所以需要给他分配一部分 flash。

Spring641 commented 2 years ago

你好@Spring641,您正在开发哪个 SoC?

自己做的开发板,目前已经解决,不过运行了人脸识别的时候提示: E (82472) MFN: Partition Not found E (82472) MFN: Please Set the Partition

嗨@Spring641,运行示例,还是自己的工程?

参考例子移植出来的,是不是什么场景模型烧录进去的,目前其他的例子都跑通了,就差这个人脸识别了

你看下partitions.csv有没有正确配置。因为识别模型传输ID存到flash中,所以需要给他分配部分flash。 你好这个是我分区表的内容,因为我一把你们的esp-dl移植进去micropython。所以分区表情况如下,还有就是你们的识别模型传输ID存到flash中地址的多少?

Notes: the offset of the partition table itself is set in

$IDF_PATH/components/partition_table/Kconfig.projbuild.

Name, Type, SubType, Offset, Size, Flags

nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 0x490000, vfs, data, fat, 0x500000, 0x300000, 下面这个是你们的分区表 factory, app, factory, 0x010000, 3800K, nvs, data, nvs, , 16K, fr, data, , , 128K,

ESP-YHY commented 2 years ago

你好@Spring641,您正在开发哪个 SoC?

自己做的开发板,目前已经解决,不过运行了人脸识别的时候提示: E (82472) MFN: Partition Not found E (82472) MFN: Please Set the Partition

嗨@Spring641,运行示例,还是自己的工程?

参考例子移植出来的,是不是什么场景模型烧录进去的,目前其他的例子都跑通了,就差这个人脸识别了

你看下partitions.csv有没有正确配置。因为识别模型传输ID存到flash中,所以需要给他分配部分flash。 你好这个是我分区表的内容,因为我一把你们的esp-dl移植进去micropython。所以分区表情况如下,还有就是你们的识别模型传输ID存到flash中地址的多少?

Notes: the offset of the partition table itself is set in

$IDF_PATH/components/partition_table/Kconfig.projbuild.

Name, Type, SubType, Offset, Size, Flags

nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 0x490000, vfs, data, fat, 0x500000, 0x300000, 下面这个是你们的分区表 factory, app, factory, 0x010000, 3800K, nvs, data, nvs, , 16K, fr, data, , , 128K,

必须要有 “fr, data, , , 128K,” 这个分区。偏移量没有明确,应该是自动分配的。

Spring641 commented 2 years ago

你好调整后为: nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 0x490000, vfs, data, fat, 0x500000, 0x200000, fr, data, , 0x710000, 128K 最后运行后只报错误,E (38922) MFN: Flash is empty,是否可以把这内存的映衬到vfs上?目前看是报内存为空?

ESP-YHY commented 2 years ago

你好调整后为: nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 0x490000, vfs, data, fat, 0x500000, 0x200000, fr, data, , 0x710000, 128K 最后运行后只报错误,E (38922) MFN: Flash is empty,是否可以把这内存的映衬到vfs上?目前看是报内存为空?

应该不行, “fr” 这个分区名没有开放修改。你可以把 “fr” size 分少一些,看看还会不报错。

Spring641 commented 2 years ago

你好调整后为: nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 0x490000, vfs, data, fat, 0x500000, 0x200000, fr, data, , 0x710000, 128K 最后运行后只报错误,E (38922) MFN: Flash is empty,是否可以把这内存的映衬到vfs上?目前看是报内存为空?

应该不行, “fr” 这个分区名没有开放修改。你可以把 “fr” size 分少一些,看看还会不报错。 你好修改成64K了还是一样报错 nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 0x490000, vfs, data, fat, 0x500000, 0x200000, fr, data, , 0x710000, 64K

ESP-YHY commented 2 years ago

@Spring641 更正一下之前的回答

是否可以把这内存的映衬到vfs上?目前看是报内存为空?

分区可以用这个接口指定,可以参考这里

ESP-YHY commented 2 years ago

@Spring641 你说的错误 E (38922) MFN: Flash is empty, 我也复现了。我需要一些时间排查一下。 或者你看下这个例子,它是没有报错的。

ESP-YHY commented 2 years ago

@Spring641 我已经查看了源码。“E (38922) MFN: Flash is empty” 不是一个 error,而是一个提醒,提示 flash 中没有录入的人脸。我会尽快修改这部分打印的。

Spring641 commented 2 years ago

@Spring641 我已经查看了源码。“E (38922) MFN: Flash is empty” 不是一个 error,而是一个提醒,提示 flash 中没有录入的人脸。我会尽快修改这部分打印的。 好的,目标,这个demo使用是先录入人脸是么,因为我的micropython的flash是用作文件系统的。所以这个录入人脸是否可以存放在外部文件系统里面?

Spring641 commented 2 years ago

@Spring641 我已经查看了源码。“E (38922) MFN: Flash is empty” 不是一个 error,而是一个提醒,提示 flash 中没有录入的人脸。我会尽快修改这部分打印的。 好的,目标,这个demo使用是先录入人脸是么,因为我的micropython的flash是用作文件系统的。所以这个录入人脸是否可以存放在外部文件系统里面?

QianZhongLi commented 5 months ago

感谢大佬的对话给我启发

Arduino里面是这样对应

image

Name, Type, SubType, Offset, Size, Flags

nvs, data, nvs, 0x9000, 0x5000, otadata, data, ota, 0xe000, 0x2000, app0, app, ota_0, 0x10000, 0x3d0000, fr,0x20,0x20, 0x3e0000, 0x20000,