为何需要固件定制

主要是为了节省内存。

芯片的内存是6MiB通过内存+2MiB AI 专用内存,相比普通单片机来说确实非常大,如果不用 AI 功能, 整个8MiB内存我们都可以使用, 但是因为很多时候我们需要运行模型,但是一个模型可能达到3MiB甚至更大,而固件也是需要占用内存的, 所以为了能运行更大的模型,我们需要妥协裁剪一些不用了的功能。

在前面更新固件的章节介绍了与编译了许多固件版本, 有minimum的, with_v4_support的,也有with_ide_support的, 还有with_lvgl的, 这些固件可能用在不同的场合。比如:

模型现在有两个大版本V3V4, V4V3支持更多算子,但是占用更多内存,运行效率也较低,所以如果你的模型是V3的,那就不需要V4支持的固件,这样就可以剩下一些V4代码占用的内存来给模型使用

同样的, 为了支持IDE,也有一部分代码,如果不需要使用 IDE,也可以裁剪掉这部分代码留出空间给模型使用

同样,固件也兼容了 OpenMV 的部分功能,如果使用模型,这些功能可能就不需要,就可以裁剪掉

多线程的支持也如此, 去掉多线程和系统的支持,也可以空出更多内存

所以,如果你在使用某个功能时, 发现提示错误,找不到库,可能是你使用了不包含这个功能的固件,比如minimum固件不包含 IDE 和 image.find_blobs功能, 如果烧录了这个固件, 再去连接 IDE 就会连接失败, 使用iamge.find_blobs这个函数也会提示找不到函数定义

powered by GitbookFile Modify: 2021-01-16 11:36:59

results matching ""

    No results matching ""