嘉楠勘智k230开发板开箱和搭建开发环境(一)


前言

2023年7月7日那天,嘉楠科技在网上开源了最新一代K230芯片的软硬件开发包。我尝试点开公布的GitHub仓库,惊喜地发现这个开源做得十分不错,整个sdk工程都放出来了,工程目录简洁清晰,技术文档也是做得十分用心。

正好我在用爱芯的ax620a做一款移动的ai传感产品时遇到了闭源的问题,对于我来说定制硬件比较不灵活还有成本也高,比较头痛。现在正好碰到了貌似合适的替换方案,于是马上就联系了嘉楠的小姐姐。小姐姐十分热心和nice,知道了我这个小小的需求后也是十分专业地向我了解和介绍这款芯片的情况,并给我争取提供了这块最新的开发板,好感动。>_<~+

一、开箱环节

  • 收到后马上拆封,有点小激动。 里面首先是注意事项小卡片和贴膜,用心的小细节在这里插入图片描述
  • 然后就是本体了,比想象中要大点。然后有个小吐槽的地方,就是液晶上面的装饰面板太单薄和脆弱了,四边也没有保护的包边什么的,感觉猛一点放下台面时都会弄坏。也许这块屏是在那些智慧门锁产品直接拿过来用的。在这里插入图片描述
  • 配件是两条typec线和一根typec转以太网线在这里插入图片描述
  • 主角就是这颗印着k230的大小核主控了在这里插入图片描述
  • 高清的摄像头和液晶,预览画面的速度第一印象还是可以的
    在这里插入图片描述

二、操作系统概念理解

相比于上一代网红产品K210, k230使用更复杂的Linux&RT-smart 双核异构系统。开发环境需要使用ubuntu下docker构建的容器环境进行交叉编译,开发语言目前主要是使用c/c++。
其中小核运行linux系统,实现linux驱动、网络控制等服务。大核运行RT-smart系统,实现对摄像头sensor、音视频硬件的控制。大小核之间需要使用各自的交叉编译工具链,他们之间通信需使用一套核间通信API。大小核之间的文件访问,是使用一个叫Sharefs的共享文件系统。在这里插入图片描述
在实际体验中,linux端是一个标准的linux buildroot,而rt-smart端的CLI也做得和linux很像,所以两者操作起来都是比较简单的。

三、使用vscode搭建开发环境

要快速学习一个新方案的使用方法,当然是直接看里面的应用demo/example啦,所以使用一款好的IDE阅读和跟踪源码是十分有必要的

通过查看k230 sdk源码的目录结构,sdk本身是通过Makefile来构建工程的,而目录下的参考例程https://gitee.com/kendryte/k230_sdk/tree/main/src/reference/是使用CMake来构建的。这时使用微软的VSCODE可以十分方便地管理和使用这个sdk工程。
因为文档里提到优先使用docker容器环境进行编译,所以在配置vscode时会稍微麻烦一点点。
下面是我在windows11下配置vscode开发环境的过程:

1、使用WSL2安装ubuntu

可以参考我之前的文章AX620A运行yolov5s自训练模型全过程记录(windows)里面使用WSL2安装ubuntu的操作步骤,现在可以安装较新的22.04。注意,Windows里是不需要安装Docker-Desktop客户端的,在ubuntu下安装docker就好了。
安装好ubuntu后,在ubuntu的终端下输入安装docker

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

2、拉取k230 sdk仓库和下载交叉编译工具

在ubuntu(root用户)下

git clone https://github.com/kendryte/k230_sdk
cd k230_sdk
#下载toolchain
source tools/get_download_url.sh && make prepare_sourcecode
  • 如果出现报错
    在这里插入图片描述
    就安装一下bzip2
apt install bzip2

3、构建docker镜像

docker build -f tools/docker/Dockerfile -t k230_docker tools/docker

上面过程都十分顺畅,没有梯子的烦恼问题,国产这点就是好啊。

  • 创建和进入容器
docker run -u root -it -v $(pwd):$(pwd) -v $(pwd)/toolchain:/opt/toolchain -w $(pwd) k230_docker /bin/bash

这一步会配置容器环境内的工具链位置处于/opt/toolchain目录下

  • 到了这步,其实就可以在容器内直接输入make来编译sdk,生成最终的烧录镜像了。整个过程有点长的,我的cpu是7840H 16线程,编译后整个output目录刚好10个G大小。
make CONF=k230_evb_defconfig

4、vscode安装wsl、Dev Containers和docker插件

  • 打开vscode,在扩展里搜索WSL和Dev Containers进行安装。
    在这里插入图片描述在这里插入图片描述

  • 进入wsl环境
    在这里插入图片描述

  • 进入到wsl环境的vscode后,安装docker插件
    在这里插入图片描述

5、vscode内启动容器

在这里插入图片描述

  • 启动容器后,点击右键菜单,点击“附加VIsual Studio Code”,选择k230的容器,将新打开一个vscode窗口。这个窗口已经指向了docker里面k230的容器开发环境了。
    在这里插入图片描述
  • 在资源管理器里找到k230_sdk目录,打开
    在这里插入图片描述
    如果正确的话,vscode的左下方会显示当前是容器开发环境
    在这里插入图片描述

6、配置cmake和交叉编译

  • 打开命令面板:Ctrl+Shift+P,输入:cmake:q,先选择GCC9.4.0这个编译器,后面再手工编辑cmake-tools-kits.json这个文件,增加k230使用的交叉编译器在这里插入图片描述在这里插入图片描述
  • 打开命令面板,输入:cmake configure,选择一个CMakeLists。这里我选择了 src/reference/ai_poc/CMakeLists.txt,用来编译这里的示例程序
  • 再打开命令面板,输入:cmake,查找编辑用户本地Cmake工具包。点击后将打开cmake-tools-kits.json配置文件,增加一个Risv64的选项:
[
  {
    
    
    "name": "GCC 9.4.0 x86_64-linux-gnu",
    "compilers": {
    
    
      "C": "/usr/bin/gcc",
      "CXX": "/usr/bin/g++"
    },
    "isTrusted": true
  },
  {
    
    
    "name": "Risv64",
    "toolchainFile": "/home/k230_sdk/src/reference/ai_poc/cmake/Riscv64.cmake"
  }
]
  • 打开命令面板,输入:cmake,查找选择工具包,选中刚刚增加的Risv64
    在这里插入图片描述
  • 此时如果直接build的话,会提示找不到 riscv64-unknown-linux-musl-gcc、g++这两个路径,一个方法是在容器内编辑.bashrc文件,在文件末尾处增加一行
export PATH=$PATH:/opt/toolchain/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/
# 保存文件后再执行
source .bashrc 
  • 关闭vscode并重新打开后,应该就能正确找到编译器和配置好cmake了。点击vscode最下方build按钮旁边的[all]按钮,会列出CMakeLists.txt所包含的编译目标选项。这里我选择yolov8的一个例程做为编译目标
    在这里插入图片描述
  • 最后点击build按钮,就能在vscdoe里面交叉编译指定程序了。最后可执行文件ob_det.elf生成在sdk根目录的build目录里面。
    在这里插入图片描述

总结

得益于嘉楠详细和友善的技术文档,开发者可以在很短的时间内就搭建起k230的开发环境。当然上面只是开发应用的第一步,接下来还有很多相关的原理概念、模块功能需要学习和使用。下一步应该就是在板上实战从摄像头获取视频,送到自训练的yolo模型进行推理,并将结果实时输出到液晶上显示。

猜你喜欢

转载自blog.csdn.net/flamebox/article/details/131778837