4. K230 Fancy POC 概述#
本章节提供了多个使用K230开发板的POC工程搭建流程,展示了K230强大的能力,为用户使用K230搭建POC提供了思路。
4.1 概述#
K230 Fancy Poc集合包括multimodal_chat_robot(多模态聊天机器人)、meta_human(数字人)、meta_hand(手势渲染)和finger_reader(指读)等项目。
4.2 源码位置#
源码路径位于k230 sdk根目录下的src/reference/fancy_poc
(k230_sdk/src/reference/fancy_poc at main · kendryte/k230_sdk (github.com))或src/reference/fancy_poc · kendryte/k230_sdk - 码云 - 开源中国 (gitee.com),关于每个POC的介绍,请参考下表:
POC子目录 |
说明 |
github链接 |
gitee链接 |
备注 |
---|---|---|---|---|
ai_scale |
K230模拟AI电子秤 |
|||
face_recognition |
K230人脸识别系统 |
|||
finger_reader |
K230指读工程 |
|||
housekeeper |
智能管家系统 |
仅支持版本k230_sdk<=1.2 |
||
meta_hand |
K230手势渲染工程 |
|||
meta_human |
K230虚拟数字人 |
|||
multimodal_chat_robot |
K230多模态聊天机器人 |
4.3 编译及运行程序#
本章节基于kendryte/k230_sdk: Kendryte K230 SDK (github.com)或k230_sdk: Kendryte K230 SDK (Gitee.com)的最新版本源码实现。
4.3.1. 自编译镜像上板流程#
按照kendryte/k230_sdk: Kendryte K230 SDK (github.com)或k230_sdk: Kendryte K230 SDK (Gitee.com)构建docker容器,编译上板镜像;
# 下载docker编译镜像 docker pull ghcr.io/kendryte/k230_sdk # 可以使用以下命令确认docker镜像是否拉取成功 docker images | grep ghcr.io/kendryte/k230_sdk # 下载sdk源码 git clone https://github.com/kendryte/k230_sdk.git cd k230_sdk # 下载工具链Linux和RT-Smart toolchain, buildroot package, AI package等 make prepare_sourcecode # 创建docker容器,$(pwd):$(pwd)表示系统当前目录映射到docker容器内部的相同目录下,将系统下的工具链目录映射到docker容器内部的/opt/toolchain目录下 docker run -u root -it -v $(pwd):$(pwd) -v $(pwd)/toolchain:/opt/toolchain -w $(pwd) ghcr.io/kendryte/k230_sdk /bin/bash make CONF=k230_canmv_defconfig
请您耐心等待镜像编译成功后,在k230_sdk根目录/output/k230_canmv_defconfig/images中下载编译好的镜像,并将其烧录到SD卡中,烧录步骤参考镜像烧录:
k230_canmv_defconfig/images ├── big-core ├── little-core ├── sysimage-sdcard.img # SD卡启动镜像 └── sysimage-sdcard.img.gz # SD卡启动镜像压缩包
在docker内部进入k230_sdk根目录,执行下述命令,编译fancy poc部分:
cd src/reference/fancy_poc # 如果build_app.sh权限不足,执行chmod +x build_app.sh ./build_app.sh
在src/reference/fancy_poc/k230_bin中,选择对应poc编译的文件,包括大核上运行的elf和小核上运行的可执行文件;
如果需要拷贝的文件超过开发板可用大小,需要进行重新分区操作;
注:
1.sharefs是大小核共用目录,通过对大小核各自/sharefs目录的访问,提供了大核访问小核文件系统的功能。在实际使用中,通常会将大核的可执行程序存放在/sharefs目录下,大核通过sharefs功能执行这些程序,方便大核上应用程序的开发和调试;参考:K230大小核通讯Sharefs使用简介。
2.为了保证系统空间,最后一个disk的空间大小可能不足以存放所有文件;您可以使用下述命令修改最后一个分区大小;参考:K230 SDK常见问题解答 问题9。
umount /sharefs/ parted -l /dev/mmcblk1 # 31.3GB大小请参考上一条命令输出的 Disk /dev/mmcblk1 parted -a minimal /dev/mmcblk1 resizepart 4 31.3GB mkfs.ext2 /dev/mmcblk1p4 mount /dev/mmcblk1p4 /sharefs
分区结束后,重启开发板,在小核sharefs下新建目录test_poc,选择读卡器拷贝或者scp拷贝,因传输较慢不推荐使用tftp拷贝;
选择您感兴趣的POC,阅读k230_sdk/src/reference/fancy_poc at main · kendryte/k230_sdk (github.com)下不同POC子目录的文档,按照文档说明下载POC对应的文件,结合上面编译出来的elf和可执行文件,完成上板操作;
4.3.2. 免编译镜像上板流程#
选择嘉楠开发者社区->资料下载->K230->Images提供的镜像烧录,k230_sdk版本和nncase版本对应关系如下链接:
K230 SDK nncase版本对应关系 — K230 文档 (canaan-creative.com
镜像烧录请参考镜像烧录。
按照kendryte/k230_sdk: Kendryte K230 SDK (github.com)或k230_sdk: Kendryte K230 SDK (Gitee.com)构建docker容器;
# 下载docker编译镜像 docker pull ghcr.io/kendryte/k230_sdk # 可以使用以下命令确认docker镜像是否拉取成功 docker images | grep ghcr.io/kendryte/k230_sdk # 下载sdk源码 git clone https://github.com/kendryte/k230_sdk.git cd k230_sdk # 下载工具链Linux和RT-Smart toolchain, buildroot package, AI package等 make prepare_sourcecode # 创建docker容器,$(pwd):$(pwd)表示系统当前目录映射到docker容器内部的相同目录下,将系统下的工具链目录映射到docker容器内部的/opt/toolchain目录下 docker run -u root -it -v $(pwd):$(pwd) -v $(pwd)/toolchain:/opt/toolchain -w $(pwd) ghcr.io/kendryte/k230_sdk /bin/bash make mpp make CONF=k230_canmv_defconfig prepare_memory;
mpp编译相对于镜像编译耗时要少很多;
在docker内部进入k230_sdk根目录,执行下述命令,编译fancy poc部分:
cd src/reference/fancy_poc # 如果build_app.sh权限不足,执行chmod +x build_app.sh ./build_app.sh
在src/reference/fancy_poc/k230_bin中,选择对应poc编译的文件,包括大核上运行的elf和小核上运行的可执行文件;
如果需要拷贝的文件超过开发板可用大小,需要进行重新分区操作;
注:
1.sharefs是大小核共用目录,通过对大小核各自/sharefs目录的访问,提供了大核访问小核文件系统的功能。在实际使用中,通常会将大核的可执行程序存放在/sharefs目录下,大核通过sharefs功能执行这些程序,方便大核上应用程序的开发和调试;参考:K230大小核通讯Sharefs使用简介。
2.为了保证系统空间,最后一个disk的空间大小可能不足以存放所有文件;您可以使用下述命令修改最后一个分区大小;参考:K230 SDK常见问题解答 问题9。
umount /sharefs/ parted -l /dev/mmcblk1 # 31.3GB大小请参考上一条命令输出的 Disk /dev/mmcblk1 parted -a minimal /dev/mmcblk1 resizepart 4 31.3GB mkfs.ext2 /dev/mmcblk1p4 mount /dev/mmcblk1p4 /sharefs
分区结束后,重启开发板,在小核sharefs下新建目录test_poc,选择读卡器拷贝或者scp拷贝,因传输较慢不推荐使用tftp拷贝;
选择您感兴趣的POC,阅读k230_sdk/src/reference/fancy_poc at main · kendryte/k230_sdk (github.com)或src/reference/fancy_poc · kendryte/k230_sdk - 码云 - 开源中国 (gitee.com)下不同POC子目录的文档,按照文档说明下载POC对应的文件,结合上面编译出来的elf和可执行文件,完成上板操作;