勘智K210-打包Kfpkg固件及其使用

K210 的固件包主要有两种格式: .bin 和 .kfpkg , .kfpkg 可以包含多个.bin文件或者模型文件。

本文主要介绍如何制作kfpkg文件及其使用。

烧录 .bin 或者 .kfpkg 文件

烧录.bin 和 .kfpkg 文件只需要使用kflash 进行烧录就可以了,两者使用起来没什么区别。

创建自己的 .kfpkg 文件

.bin 文件是固件内容,作为参数传给烧录软件,软件会默认烧录到flash 开 头,完成后重启即可运行;

但是有时候我们需要烧录其它二进制文件到flash ,比如烧录 模型、文件系统或者自己定义的其它数据,这时需要指定烧录的地址,光是 .bin(二进制)文件烧录工具不知道我们想把数据烧录到flash 的哪里,打包一个.kfpkg 格式的文件则是为了实现这个目的。

kfpkg由3部分组成:

比如我们想同时下载名为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。

经验分享 程序员 微信小程序 职场和发展