为何需要固件定制

主要是为了节省内存。

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

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

  • 裁剪 IDE 代码, 如果不需要连接 MaixPy IDE, 可以裁剪 IDE 部分以节省内存。

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

  • 裁剪多线程支持,若不需要多线程支持,即可裁剪该部分得到更多内存空间。

所以,如果你在使用某个功能时, 发现提示ImportError: no module named 'XXX',可能是你使用了不包含这个功能的固件,比如minimum固件不包含 IDE 和 image.find_blobs功能, 如果烧录了这个固件, 再去连接 IDE 就会长时间连接不上, 使用image.find_blobs这个函数也会提示找不到函数定义。