嘉楠堪智 CanMV K230 进行 Linux、RT-smart 系统开发

本文记录学习、使用 K230 SDK 进行 Linux、RT-smart 系统的开发的一些关键步骤,如何获取系统源代码,如何配置环境,如何使用 Docker 进行编译,获得系统文件。

具体详细的教程,可以学习 CanMV K230 教程。

目录

一、SDK 软件架构概述:

二、开发环境搭建:

SDK 开发包获取:

下载 toolchain:

三、SDK 编译

SDK 配置

生成 docker 镜像

进入 docker 环境

编译 SDK

四、编译输出系统文件:

五、小结:


一、SDK 软件架构概述:

K230 SDK 是面向 K230 开发板的软件开发包,包含了基于 Linux & RT-smart 双核异构系统开发需要用到的源代码,工具链和其他相关资源。

K230 SDK 软件架构层次如图:

二、开发环境搭建:

K230 SDK 需要在 linux 环境下编译,官方推荐用 Ubuntu 20.04 LTS (x86_64),SDK 支持 docker 环境编译,SDK 开发包中发布了 docker file(tools/docker/Dockerfile),可以生成 docker 镜像。

SDK 使用的 Docker 镜像以 ubuntu 20.04 为基础,如果不使用 docker 编译环境,可以在 ubuntu 20.04 主机环境下参考 dockerfile 的内容,安装相关 HOST package 和工具链后,编译 SDK。

SDK 开发包获取:

SDK 目前在 github 和 gitee 同步发布,可以直接下载压缩包,也可以通过 git clone 命令获取。

git clone https://github.com/kendryte/k230_sdk

git clone https://gitee.com/kendryte/k230_sdk.git

K230 SDK目录结构如下图:

k230_sdk
├── configs
│   ├── k230_evb_defconfig
│   └── k230_evb_usiplpddr4_defconfig
│   └── k230d_defconfig
├── Kconfig
├── LICENSE
├── Makefile
├── parse.mak
├── README.md
├── repo.mak
├── src
│   ├── big
│   │   ├── mpp
│   │   ├── rt-smart
│   │   └── unittest
│   ├── common
│   │   ├── cdk
│   │   └── opensbi
│   ├── little
│   │   ├── buildroot-ext
│   │   ├── linux
│   │   └── uboot
│   └── reference
│       ├── ai_poc
│       ├── business_poc
│       └── fancy_poc
├── board
│   ├── common
│   │   ├── env
│   │   └── gen_image_cfg
│   │   ├── gen_image_script
│   │   └── post_copy_rootfs
│   ├── k230_evb_doorlock
│   └── k230_evb_peephole_device
└── tools
    ├── docker
    │   └── Dockerfile
    ├── doxygen
    ├── firmware_gen.py
    └── get_download_url.sh

各个目录用途描述如下:

  • configs 存放 SDK 的板级默认配置,主要包含如下信息:参考板类型,toolchain 路径,

    内存布局规划,存储规划配置等

  • src源代码目录,分为 大核代码(big),公共组件(common),小核代码(little)三个目录。

    大核代码包含:rt-smart 操作系统代码,mpp 代码,unittest 代码

    公共组件包含:cdk 代码和 opensbi 代码

    小核代码包含:linux 内核代码,buildroot 代码,uboot 代码

  • tools存放各种工具,脚本等。例如 kconfigdoxygendockerfile

  • board环境变量、镜像配置文件、文件系统等

下载 toolchain:

k230_sdk 中提供了工具链,buildroot package 和 AI package,可用如下命令下载:

        cd k230_sdk

        source tools/get_download_url.sh && make prepare_sourcecode

大小核使用不同的工具链。分别在如下路径:

  • 大核 rt-samrt 工具链

        k230_sdk/toolchain/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu

  • 小核 linux 工具链

        k230_sdk/toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0

也可通过以下链接下载工具链

wget https://download.rt-thread.org/rt-smart/riscv64/riscv64-unknown-linux-musl-rv64imafdcv-lp64d-20230222.tar.bz2
wget https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1659325511536/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0-20220715.tar.gz

三、SDK 编译

K230 SDK 支持一键编译大小核操作系统和公共组件,生成可以烧写的镜像文件,用于部署到开发板启动运行。设备上 linux 系统的用户名是 root,无密码。

  • SDK 配置

K230 SDK采用 Kconfig 作为 SDK 配置接口,默认支持的板级配置放在 configs 目录下。

k230_canmv_defconfig基于 CanMV-K230 的默认 SDK 配置文件。

  • 生成 docker 镜像

(第一次编译需要,已经生成docker镜像后跳过此步骤)

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

  • 进入 docker 环境

docker run -u root -it -v $(pwd):$(pwd) -v $(pwd)/toolchain:/opt/toolchain -w $(pwd) k230_docker /bin/bash

  • 编译 SDK

#Docker 环境下执行下面命令,编译 CanMV-K230 板子镜像

make CONF=k230_canmv_defconfig

四、编译输出系统文件:

编译完成后,在 output/k230_canmv_defconfig/images 目录下可以看到编译输出

images 目录下镜像文件如下:

sysimage-sdcard.img ————-TF 卡的启动镜像;

sysimage-sdcard.img.gz ———TF 卡的启动镜像压缩包(sysimage-sdcard.img文件的 gzip 压缩包),烧录时需要先解压缩。

五、小结:

整个 SDK 编译完成,成生镜像 sysimage-sdcard.img,可烧录到 TF 卡启动系统。

                                                                                         老徐,2024/5/4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/678753.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YoloV8改进策略:BackBone改进DCNv4

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.77,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。 Y…

【大学物理】双语合集听课笔记

7.5 angular momentu(角动量)_哔哩哔哩_bilibili 6.4Energy in Rotation Motion 有质量有速度的物体有动能,是不是很有道理 international system(from French systeme international,acronym,SI)of ineria kg*m^2 转…

单片机-点亮第一盏灯

原理图 需求:点亮或是熄灭LED 通过控制 P5.3引脚输出高电平时,LED灯就点亮,输出低电平时LED灯就熄灭 1.项目创建 新建项目 配置开发板信息 当前位STC芯片的开发板,选择STC MCU Database 搜素具体芯片型号,进行配置…

【Android】Room数据库的简单使用方法

Room数据库的使用方法 目录 1、添加Room数据库的依赖2、Entity——定义实体类 2.1 定义主键——PrimaryKey2.2 字段注解——ColumnInfo 3、Dao——定义数据访问对象4、Database——数据库 4.1 通过回调观察数据库是否创建成功 5、使用时注意点6、编写异步 DAO 查询 6.1 写异步…

pytorch基础: torch.unbind()

1. torch.unbind 作用 说明:移除指定维后,返回一个元组,包含了沿着指定维切片后的各个切片。 参数: tensor(Tensor) – 输入张量dim(int) – 删除的维度 2. 案例 案例1 x torch.rand(1,80,3,360,360)y x.unbind(dim2)print(&…

【进程等待】是什么 | 为什么 | 怎么办 | wait阻塞等待

目录 进程等待是什么? 为什么要进程等待? 如何进程等待? wait 阻塞等待 进程等待是什么? 进程终止会把进程退出的数据(退出码和退出信号)存放到进程的PCB中保存下来,让父进程进行等待。…

电脑提示‘找不到msvcr110dll,无法继续执行代码’的解决方法,3分钟快速修复

不知道大家有没有遇到过这种情况,无端端电脑提示你找不到msvcr110dll,无法继续执行代码?当出现这个情况,证明你的某个程序就已经运行不了,你需要去修复这个错误,才能正常的运行程序,下面我们一起来详细的了…

【算法】并查集

并查集是一种树形的数据结构,通常可以用于高效的合并多个集合和查询两个数是否属于同一个集合的情况。 其原理在于,把每个集合变成一棵树,树根的值就是整个集合的编号 其合并集合的效率远远高出普通的方式,近似O(1) 但是&#…

ChatGLM-Math:强化数学能力

大型语言模型(LLM)在文本摘要、问答和角色扮演对话等语言任务上表现出色,在数学推理等复杂问题上也具有应用潜力。 但目前提高 LLM 数学问题解决能力的方法,往往会导致其他方面能力的下降。例如RLHF的方法,虽然可以提…

YOLOv9全网最新改进系列:YOLOv9融合HCF-NET网络中的PPA模块,红外小目标实验证明针对小目标的改进具有出色表现!

YOLOv9全网最新改进系列:YOLOv9融合HCF-NET网络中的PPA模块,红外小目标实验证明针对小目标的改进具有出色表现! YOLOv9原文链接戳这里,原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里! 详细的改进教程以及源码…

牛客 二叉树 NB1 牛群的最大高度

原题链接 就不采用, 递归的方式来做了, 自己弄个栈来做 用栈来保存路径, curr 表示当前的节点, pre 保留往回走时的上一步 如果是 用递归来做 它的栈链路是这样的, 可以做下参考 黄色表示返回 用栈模拟的话, 不可能模拟得一摸一样, 递归的话一个栈会经过3次, 第三次后就不…

目录页码右对齐快速解决

选择目录–段落–制表符,按图中设置即可