4. K230 Fancy POC 概述

4. K230 Fancy POC 概述 #

本章节提供了多个使用K230开发板的POC工程搭建流程,展示了K230强大的能力,为用户使用K230搭建POC提供了思路。

:大部分K230 Fancy POC仅支持在Linux+RT-Smart双系统上运行,不支持纯RT-Smart单系统。实际操作时请注意系统固件选择。

4.1 概述#

K230 Fancy Poc集合包括multimodal_chat_robot(多模态聊天机器人)、meta_human(数字人)、meta_hand(手势渲染)和finger_reader(指读)等项目。

4.2 POC列表#

源码路径位于k230 sdk根目录下的src/reference/fancy_pock230_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电子秤

ai_scale

ai_scale

仅支持Linux+RT-Smart双系统

face_recognition

K230人脸识别系统

face_recognition

face_recognition

支持Linux+RT-Smart双系统和纯RT-Smart单系统

finger_reader

K230指读工程

finger_reader

finger_reader

仅支持Linux+RT-Smart双系统

housekeeper

智能管家系统

housekeeper

housekeeper

仅支持Linux+RT-Smart双系统且k230_sdk版本<=1.2

meta_hand

K230手势渲染工程

meta_hand

meta_hand

仅支持Linux+RT-Smart双系统

meta_human

K230虚拟数字人

meta_human

meta_human

仅支持Linux+RT-Smart双系统

multimodal_chat_robot

K230多模态聊天机器人

multimodal_chat_robot

multimodal_chat_robot

仅支持Linux+RT-Smart双系统

4.3 编译及运行程序#

本章节基于kendryte/k230_sdk: Kendryte K230 SDK (github.com)k230_sdk: Kendryte K230 SDK (Gitee.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
    # (1)如果选择自行编译Linux+RT-Smart双系统镜像,执行下述命令
    make CONF=k230_canmv_defconfig
    
    # (2)如果选择使用开发者社区下载的Linux+RT-Smart双系统镜像,请务必在k230_sdk根目录下执行如下命令以指定开发板类型
    make CONF=k230_canmv_defconfig prepare_memory
    
    # (3)如果选择自行编译纯RT-Smart系统镜像,执行下述命令,开发者社区暂未开放纯RT-Smart镜像下载
    make CONF=k230_canmv_only_rtt_defconfig
    
  • 请您耐心等待镜像编译成功,make mpp过程相比完整镜像编译过程耗时较少。

    对于Linux+RT-Smart双系统编译,在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卡启动镜像压缩包
    

    对于RT-Smart单系统编译,在k230_sdk根目录/output/k230_canmv_only_rtt_defconfig/images中下载编译好的镜像,并将其烧录到SD卡中,烧录步骤参考镜像烧录

    k230_canmv_only_rtt_defconfig/images
     ├── big-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和小核上运行的可执行文件,具体操作步骤请参考对应POC链接内的说明文档;

  • 如果需要拷贝的文件超过开发板可用大小,需要进行重新分区操作;

    注:

    1. 对于Linux+RT-Smart双系统,sharefs是大小核共用目录,通过对大小核各自/sharefs目录的访问,提供了大核访问小核文件系统的功能。在实际使用中,通常会将大核的可执行程序存放在/sharefs目录下,大核通过sharefs功能执行这些程序,方便大核上应用程序的开发和调试;参考:K230大小核通讯Sharefs使用简介

    2. 对于Linux+RT-Smart双系统,为了保证系统空间,最后一个disk的空间大小可能不足以存放所有文件;您可以使用下述命令修改最后一个分区大小;参考:K230 SDK常见问题解答 问题9。分区结束后,重启开发板,在小核sharefs下新建目录test_poc,选择读卡器拷贝或者scp拷贝,因传输较慢不推荐使用tftp拷贝;选择您感兴趣的POC,阅读k230_sdk/src/reference/fancy_poc at main · kendryte/k230_sdk (github.com)下不同POC子目录的文档,按照文档说明下载POC对应的文件,结合上面编译出来的elf和可执行文件,完成上板操作。

    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
    
    1. 对于Linux+RT-Smart双系统,您可以选择从嘉楠开发者社区->资料下载->K230->Images下载镜像烧录,k230_sdk版本和nncase版本对应关系请点击链接查看:K230 SDK nncase版本对应关系 — K230 文档 (canaan-creative.com) 。镜像烧录请参考镜像烧录。开发者社区仅提供了Linux+RT-Smart双系统镜像,纯RT-Smart镜像需要您按照上述步骤自行编译。

    2. 对于RT-Smart单系统,拷贝文件时PC识别的根目录对应大核端的/sdcard目录,拷贝的文件请前往大核目录下/sdcard下寻找;

@You

Fancy POC章节旨在展示K230在一些有趣场景的应用。虽然我们提供了相关源代码供用户参考,但这些源码多是基于特定POC任务场景的实现。

对于希望深入了解K230人工智能开发流程的用户,建议学习快速入门K230_AI推理流程深入解析AI开发流程。在这两章中,我们详细讲解了K230的多媒体应用、AI推理流程以及基于K230的人工智能开发流程,从代码层面全面解析了K230的AI开发知识。