Flash 分区

首先要有对 Flash 的认知,可以把它想象成一个硬件上永久存储的数组,由 Flash 芯片提供该功能。

MaixPy 固件会在一段连续的 16M 的数组区域里,存放着各种各样的文件,可以理解文件就是二进制,存储在了这个物理数组区域中。

通常都有如下存储内容:

  • 0x000000 MaixPy.bin 固件文件
  • 0x300000 某 .kmodel 模型文件
  • 0xD00000 MicroPython 虚拟文件系统

它对应着 Kflash 烧写时要求的地址,这也就是为什么 maixpy 要烧写在 0x000000 地址上的原因,因为 K210 会从 0x000000 上开始运行程序。

如果需要加载某个模型的代码要求填入 0x500000 的地址,就表示需要从 0x500000 位置上获取该 *.kmodel 文件,如下代码示例。

#KpuTask = kpu.load(0x5C0000)
KpuTask = kpu.load("/sd/yolov2.kmodel")

同理,如果需要加载某个字库,我们可以看到也同理,但这并不是每个接口都会实现这样的用法。

#image.font_load(image.UTF8, 16, 16, 0xA00000)
image.font_load(image.UTF8, 16, 16, '/sd/0xA00000_font_uincode_16_16_tblr.Dzk')

需要注意的地方就是,文件不能有重叠和破坏的地方,因为那样会导致文件受损,例如常见于 maixpy.bin 的固件可能会在 1~3M 的大小之间使用,那么需要注意的就是自己的文件不要烧在 0x300000(3M) 之前,它可能会在你往后更新固件的时候覆盖了模型文件。

现在你明白了吗?

powered by GitbookFile Modify: 2020-11-30 13:31:44

results matching ""

    No results matching ""