K210 的固件包主要有两种格式: .bin
和 .kfpkg
,.kfpkg
可以包含多个.bin
文件或者模型文件。
这里介绍如何制作kfpkg
文件以及使用
烧录 .bin 或者 .kfpkg 文件
烧录.bin
和.kfpkg
文件只需要使用kflash
进行烧录就可以了,两者使用起来没什么区别,烧录方法参考MaixPy 的文档
创建自己的 .kfpkg 文件
.bin
文件是固件内容,作为参数传给烧录软件,软件会默认烧录到flash
开头,完成后重启即可运行;
但是有时候我们需要烧录其它二进制文件到flash
,比如烧录 模型、文件系统 或者自己定义的其它数据,这时需要指定烧录的地址,光是 .bin
(二进制) 文件烧录工具不知道我们想把数据烧录到flash
的哪里,打包一个.kfpkg
格式的文件则是为了实现这个目的
kfpkg由3部分组成:
flash-list.json | 文本文件,.bin文件列表以及烧录地址等信息 |
*.bin | 固件 |
*.* | 其他文件(二进制文件) |
比如我们想同时下载名为XXX.bin
的固件,以及YYY.bin
的其它文件到Flash
的0xA00000
地址,则需要写一个 flash-list.json
文件,内容如下:
{
"version": "0.1.0",
"files": [
{
"address": 0,
"bin": "XXX.bin",
"sha256Prefix": true
},
{
"address": 0x00A00000,
"bin": "YYY.bin",
"sha256Prefix": false
}
]
}
注意sha256Prefix选项, 固件需要校验,所以为true
, 而其它数据(比如模型数据)不需要,所以为false
最后,将这三个文件(XXX.bin
, YYY.bin
, flash-list.json
)压缩成zip文件,然后改后缀名为.kfpkg
即可被烧录工具识别,并按照指定地址烧录到flash。
当然,具体的文件个数看自己的需求了
注意:
如果你手头现在已经有一个 kfpkg
文件,它是可以使用kflash
直接下载到开发板的,下载到哪些地址在文件中已经指定了,不需要再次打包。比如:
有一个只包含模型face.kmodel
的文件 model.kfpkg
, 有些用户错误地认为这个文件应该和固件firmware.bin
一起被放到一个新的new.kgpkg
里面,这样的做法是错误的!!
正确的做法是:
-
可以直接使用
kflash
先下载firmware.bin
,然后再下载model.kfpkg
,firmware.bin
会下载到地址0x00000
, 而模型文件会下载到model.kfpkg
里面指定的地址 -
或者先将
model.kfpkg
以zip
格式解压,得到face.kmodel
,然后按照上面的方法把firmware.bin
和face.kmodel
文件一起打包成一个new.kfpkg
文件,然后使用kflash
下载这个new.kfpkg
,固件和模型会按顺序下载到flash