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

news2025/1/14 0:50:50

本文记录学习、使用 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.coloradmin.cn/o/1654062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

引入 Redis

简介 Jedis Jedis 是早期的 Redis 的 Java 实现客户端,提供了比较全面的 Redis 命令的支持,其官方网址是:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html 优点:支持全面的 Redis 操作特性&#xff0…

搜狗输入法 PC端 v14.4.0.9307 去广告绿化版.

软件介绍 搜狗拼音输入法作为众多用户计算机配置的必备工具,其功能的全面性已为众所周知,并且以其高效便捷的输入体验受到广大使用者的青睐。然而,该软件在提供便利的同时,其内置的广告元素常常为用户带来一定的干扰。为此&#…

代码随想录算法训练营DAY48|C++动态规划Part9|121.买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

文章目录 121.买卖股票的最佳时机思路CPP代码 122.买卖股票的最佳时机II思路CPP代码 123.买卖股票的最佳时机III思路CPP代码 121.买卖股票的最佳时机 力扣题目链接 文章讲解:121.买卖股票的最佳时机 视频讲解:动态规划之 LeetCode:121.买卖股…

由树形解空间入手,深入分析回溯、动态规划、分治算法的共同点和不同点

一、回溯、动态规划、分治 其实这三个算法就可以直接认为是一类算法,它们的共同点都是会涉及到递归。 更需要清楚明白的一点是,它们的解,都是基于一颗递归形式的树上得来的!也就是——回溯、动态规划、分治的解空间是 一棵树&am…

ssm+vue的私人健身和教练预约管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的私人健身和教练预约管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通…

深度学习常用优化算法笔记介绍,各种梯度下降法详细介绍

优化算法 mini-batch梯度下降法 当一个数据集其数据量非常大的时候,比如上百万上千万的数据集,如果采用普通的梯度下降法,那么运算速度会非常慢,因为如果使用梯度下降法在每一次迭代的时候,都需要将这整个上百万的数…

机器学习:基于TF-IDF算法、决策树,使用NLTK库对亚马逊美食评论进行情绪分析

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

第一天复习Qt文件读取

Qt文件操作: 1、QFile QTextStream操作文件案例: 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度,如果为-1就是读取失败 file. Close()读取后关闭 file.errorString()返回文件打开发生的错误2、…

数据仓库实验三:分类规则挖掘实验

目录 一、实验目的二、实验内容和要求三、实验步骤1、创建数据库和表2、决策树分类规则挖掘(1)新建一个 Analysis Services 项目 jueceshu(2)建立数据源视图(3)建立挖掘结构 DST.dmm(4&#xff…

16.接口自动化学习-编码处理与装饰器

1.编码和解码 编码:将自然语言翻译成计算机可以识别的语言 hello–01010 解码:将机器识别的语言翻译成自然语言 2.编码格式 UTF-8 GBK unicode 3.编码操作 #编码操作str1"hello呀哈哈哈"str2str1.encode(gbk)print(str2)print(type(str2))…

FPGA ov5640视频以太网传输

1 实验任务 使用DFZU4EV MPSoC 开发板及双目OV5640摄像头其中一个摄像头实现图像采集,并通过开发板上的以太网接口发送给上位机实时显示。 2 Verilog代码 2.1 顶层模块 timescale 1ns / 1ps //以太网传输视频顶层模块module ov5640_udp_pc (input sys_cl…

在WPS表格(Excel)中,每10行增加一个特定的值

注:如下为WPS表格操作演示 例如1-15的数值是1,16-30就变为2,31-45就变为3,类推! 1、在B1单元格输入一个起始值,B2单元格输入公式IF(MOD(ROW(),15)0,B11,B1) 然后鼠标放到B2单元格右下角小点处&…

开机弹窗找不到OpenCL.dll是怎么回事,哪种修复方法更推荐

当用户在操作电脑过程中遇到系统提示“OpenCL.dll丢失”时,这究竟是怎么一回事呢?OpenCL.dll,作为Open Computing Language(开放计算语言)的重要动态链接库文件,它在图形处理器(GPU)…

springboot整合rabbitmq的不同工作模式详解

前提是已经安装并启动了rabbitmq,并且项目已经引入rabbitmq,完成了配置。 不同模式所需参数不同,生产者可以根据参数不同使用重载的convertAndSend方法。而消费者均是直接监听某个队列。 不同的交换机是实现不同工作模式的关键组件.每种交换…

县供电公司员工向媒体投稿发文章用亲身经历告诉你并不难

在县供电公司的日子里,我肩负着一项至关重要的使命——信息宣传工作。这不仅仅是一份职责,更是连接公司与外界的桥梁,通过新闻稿件传递我们的声音,展示我们的成果。然而,回忆起刚刚踏入这个领域的时光,那段经历至今让我感慨万千。 初涉投稿,步履维艰 刚接手这项工作时,我的投稿…

信息化飞速发展下,源代码防泄密方案该如何选择?常见四种有效方案分享

信息化时代发展迅速,数据防泄露一词也频繁的出现在我们身边。无论企业或政府单位,无纸化办公场景越来越多,数据泄露的时间也层出不穷。例如:世界最大职业中介网站Monster遭到黑客大规模攻击,黑客窃取在网站注册的数百万…

Dockerfile实践java项目

目的:用java项目测试dockerfil部署(前提是安装好了docker) 部署准备文件如下 1. java项目 java项目demo地址 https://gitee.com/xiaoqu_12/dockerfileDemo.git 或者百度网盘直接下载打包好的jar包 链接:https://pan.baidu.com/s/…

PostgreSQL的学习心得和知识总结(一百四十一)|深入理解PostgreSQL数据库数据库角色的使用及预定义角色的原理

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

【计算机毕业设计】基于SSM++jsp的电子竞技管理平台【源码+lw+部署文档+讲解】

目录 1 绪论 1.1 研究背景 1.2 目的和意义 1.3 论文结构安排 2 相关技术 2.1 SSM框架介绍 2.2 B/S结构介绍 2.3 Mysql数据库介绍 3 系统分析 3.1 系统可行性分析 3.1.1 技术可行性分析 3.1.2 经济可行性分析 3.1.3 运行可行性分析 3.2 系统性能分析 3.2.1 易用性指标 3.2.2 可…

您的浏览器不支持 undefined 代理认证!如有问题请联系您的浏览器支持,请勿反馈此问题给 SwitchyOmega.

一、【问题描述】 PAC 文件是一个 JavaScript 文件,用于定义客户端的代理规则。您可以在 PAC 文件中编写规则,根据不同的目标网址或其他条件,决定是否通过代理服务器进行访问。您可以将 PAC 文件部署到服务器上,并在客户端配置浏…